2007年07月03日
RDシリーズ メール予約文作成CGI
HDD&DVDレコーダーを買った。いままで使っていたのは2001年に買ったハードディスクなんかないDVD-RAMレコーダー。もう何もかもが隔世の感。
録ったデジタルデータをメディアを使用せずに外部へ取り出せるものがいいなーと東芝のレコーダーを選んだが、機能てんこ盛りでインターフェイスは破綻寸前。マニュアルは分厚いの1冊を含む計4冊。こりゃもう絶対使いこなせない自信が満々。他社のレコーダーが機能を絞り込んだり簡単なインターフェイスに向かっているのもむべなるかな。
でもEthernetでそのままデータを移動できるのは東芝しかないようなので、仕方がない。幸いマニュアルはPDFでダウンロードできるので、単語検索しまくりでなんとか使ってます。
で、出先から急に思い立って録画予約したりできるのがイマドキのレコーダーでは当たり前なんでしょ、と思ったけど、これが結構ややこしい。自宅は固定IPでもDDNSでもないし、それなりの暗騒音があるレコーダーの電源を常時ONにしておきたくもない。となるとWEBで直にレコーダーにアクセスするのではなくて、メール予約が良いのだけれど、番組表から番組を選んで定型文に落としてメールする、たったそれだけのことなのに使いやすいサービスがない。携帯電話専用のなんとも使いにくいインターフェイスの有料サービスばかり。携帯でもPCでも使えるシンプルでわかりやすいインターフェイスのものはないものか。というわけで作った。
最初はオンラインテレビ欄の類のHTMLをパースして番組情報を取り出そうと思ったのだけれど、テーブル組のhtmlから放送局ごとに時系列に揃ったデータを取り出すのはかなり面倒くさい。OnTVのヨコ表示ならまだマシそうだけど…。とやる気が落ちかけたところで、最近インターネットTVガイドがAjax化したことを思い出した。てことは、と思って見てみたら案の定JSONやXMLで番組データを流しているので、これを利用することにした。
メール送信は、サーバにやらせるよりメールクライアントにやらせる方がシンプルでいいよなということで、mailtoタグでメール作成。一覧表示のデータ量は結構なものになるけど、数年前の携帯(W21SA)でも問題なく表示できているので良しとする。
→RD予約CGI
my $mailto = 'address@domain';
my $reservepass = 'rdstyle';
my $regions = [ 107 ];
my %bsanalog = (
'BS7' => '9',
'BS11' => '7',
'BS5' => 'L1',
);
を自分の環境に合わせて書き換えてください。
$mailto は絶対に外部からアクセスされないURLで運用すれば大丈夫だろうけど、spamのターゲットにならないようにニセのままにしておいて送信のたびに書き換えるようにして使うほうがいいかも。
$regions は複数の地域も設定できますが、一覧表示の動作がぐっと重たくなるのでやらないほうがいいでしょう。%bsanalog は、衛星アナログのチャンネル設定。うちはケーブルの関係で衛星アナログが普通のアナログの9や7に割り当てられているので上記のようになっている。
RD-S600のみで動作確認。
以上、無保証、無責任。
匿名ですみません。
仕様からメール送信を外し、標準出力に戻すようにすればセキュリティ関連で面倒な思いをせずに済むのではないでしょうか。
PC、Mobile でアクセスし、表示結果をコピーして、MUA を起こし、自分の登録メアドへ向けて送信するわけですね。
機能性は若干下がりますが、Basic 認証を掛ければMobileからのアクセシビリティは低下しますし、また、コードに特定のメアドを埋め込まなくて済む分、汎用性が上がると思います。
↑ すみません、コードをよく読んでなかった。
Mailto: で起こすだけなんですね。
どおりで use Net::SMTP や、sendmailをいじる部分がないわけだ。
失礼いたしました。
Posted by: とおりすがり at 2007年08月10日 16:06↑ すみません、コードをよく読んでなかった。
Mailto: で起こすだけなんですね。
どおりで use Net::SMTP や、sendmailをいじる部分がないわけだ。
失礼いたしました。
Posted by: とおりすがり at 2007年08月10日 16:07↑ すみません、コードをよく読んでなかった。
Mailto: で起こすだけなんですね。
どおりで Use Net::SMTP や、Sendmailをいじる部分がないわけだ。
失礼いたしました。
Posted by: とおりすがり at 2007年08月10日 16:08