iEPGのツールを作る(1)
RD-S300のIEPGは便利なのだが、実家にあるRD-S300を経由してiEPGのサイトにアクセスしているために、すごく遅い。特にVPN環境ではストレスを感じ、じれったい。
もう一つ、Bufflaloの録画環境もあるので、RD-S300とBuffaloの環境、どちらに予約するかを選択したい。
今のところ、RD-S300を経由せずにiEPGサイトに接続すると、iEPG予約ソフトであるPCastLSiEPG.exeが起動して、BuffaloのPCCastLinkの環境に通信を行い予約が完了する。
さて、やりたいことは下記のこと。
- RD-S300経由のiEPGは遅いので番組を探す時はIEPGサイトに直接アクセスする。
- 番組を選んで[iEPG]のボタンを押すと、RD-S300かBuffalo環境のどちらに予約するかを選択するメニューを表示する。
- 選んだ環境でそれぞれ録画。
久々のプログラミングなのだが、まず、言語を何にしようか悩む。このツールを作り終わったら、RDNLA相当のものを作るつもりなので、同じ言語が望ましい。Java、Air(Adobe)、Visual C# 2005と無料環境がいくつかある。Airに興味があって、ちょっと触ってみたが、コンパイルなどちょっと面倒かも。で、結局Visual C# 2005に決定した。
動作条件は次のようにする。
さて、簡単なサンプルアプリケーションを作って、TV王国の「iEPG」ボタンを押すと何が起こるか追いかけてみる。サンプルアプリケーションはExplorerの「ツール」→「フォルダオプション」の「ファイルの種類」で拡張子「TVPI」で起動するように登録しておく。
ちなみに、ローカルキャッシュファイルは「ログオン名\Local Settings\Temporary Internet Files\Content.IE5\ランダムな文字列\TVPTI_output[数字].tvpi」のようになっており、推測不可能。
まず、BuffaloのPCastLSiEPG.exeはキャッシュファイルの中身を渡してやれば起動するようだ。
PCastLSiEPG.exe キャッシュファイルの中身を引数
で起動する。よって、キャッシュファイルを読んで、PCastLSiEPG.exeを起動するだけでよい。ちなみに、キャッシュファイルの中身は下記のような感じ。
Content-type: application/x-tv-program-info; charset=shift_jis
version: 1
station: TBSテレビ
year: 2007
month: 10
date: 13
start: 05:45
end: 07:30
program-title: みのもんたのサタデーずばッと
program-subtitle:
extend: 0
performer: [出演] 小林豊 / 山内あゆ [司会] みのもんた / 堀井美香
genre: 144
subgenre: 144福田VS小沢カネ・年金・アフガン対決の行方(中断[N])
さて、問題はRD-S300の方。こっちの起動方法は、
http://RD-S300のIPアドレス/@@@@@@tv.so-net.ne.jp/guest/pc/iepg.tvpi?id=ID番号
となる。
何とか、アプリケーション側で、呼び出し元のIEコンポーネントにアクセスし、URLを取得しようとしたのだが、現在表示されているURLは取得できたものの、呼び出しの前にクリックされたURLは取得できない。
次にローカルキャッシュファイル名から元のURLを推測できないか考えてみたが、難しそうなのであきらめた。
次に考えたのは、TV王国のIDを推測すること。いくつか調べて分析してみると、IDは下記のような構造に思える。
チャンネルID(4桁数字)+地域番号(2桁)+年月日(YYYYMMDD)+開始時間(HHMM)
チャンネルIDと地域番号は2007年10月の時点では下記のような感じ。地域番号は不要なので、チャンネルIDだけわかれば良いと思う。
チャンネル | 東京 | 千葉 | 神奈川 |
NHK総合 | 119013 | 119012 | 119014 |
NHK教育 | 129013 | 129012 | 129014 |
日本テレビ | 140013 | 140012 | 149014 |
TBSテレビ | 150013 | 150012 | 159014 |
フジテレビ | 160013 | 160012 | 169014 |
テレビ朝日 | 170013 | 170012 | 179014 |
テレビ東京 | 180013 | 180012 | 189014 |
キャッシュファイルの中身に、チャンネル名、年月日、開始時間は含まれているので、IDは作成できそうだ。
これで何とか方針が決まった。後は作るだけ。ふー。