iEPGのツールを作る(1)

RD-S300のIEPGは便利なのだが、実家にあるRD-S300を経由してiEPGのサイトにアクセスしているために、すごく遅い。特にVPN環境ではストレスを感じ、じれったい。
もう一つ、Bufflaloの録画環境もあるので、RD-S300とBuffaloの環境、どちらに予約するかを選択したい。
今のところ、RD-S300を経由せずにiEPGサイトに接続すると、iEPG予約ソフトであるPCastLSiEPG.exeが起動して、BuffaloのPCCastLinkの環境に通信を行い予約が完了する。

さて、やりたいことは下記のこと。

  1. RD-S300経由のiEPGは遅いので番組を探す時はIEPGサイトに直接アクセスする。
  2. 番組を選んで[iEPG]のボタンを押すと、RD-S300かBuffalo環境のどちらに予約するかを選択するメニューを表示する。
  3. 選んだ環境でそれぞれ録画。

久々のプログラミングなのだが、まず、言語を何にしようか悩む。このツールを作り終わったら、RDNLA相当のものを作るつもりなので、同じ言語が望ましい。JavaAirAdobe)、Visual C# 2005と無料環境がいくつかある。Airに興味があって、ちょっと触ってみたが、コンパイルなどちょっと面倒かも。で、結局Visual C# 2005に決定した。

動作条件は次のようにする。

  • RD-S300はIEでしか認証が通らないので、動作環境は現在のWinXP SP2+IE6にする。
  • iEPGso-netのTV王国にする。
  • 予約するPCにはHTTPサーバなどは設定しない。

さて、簡単なサンプルアプリケーションを作って、TV王国の「iEPG」ボタンを押すと何が起こるか追いかけてみる。サンプルアプリケーションはExplorerの「ツール」→「フォルダオプション」の「ファイルの種類」で拡張子「TVPI」で起動するように登録しておく。

  1. iEPG」ボタンを押す。
  2. IEiEPGファイルをローカルキャッシュにダウンロード。
  3. IEがローカルキャッシュファイル名を引数にサンプルアプリケーションを起動。

ちなみに、ローカルキャッシュファイルは「ログオン名\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-S300IPアドレス/@@@@@@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総合119013119012119014
NHK教育129013129012129014
日本テレビ140013140012149014
TBSテレビ150013150012159014
フジテレビ160013160012169014
テレビ朝日170013170012179014
テレビ東京180013180012189014

キャッシュファイルの中身に、チャンネル名、年月日、開始時間は含まれているので、IDは作成できそうだ。

これで何とか方針が決まった。後は作るだけ。ふー。