ひとりごと

新しい記事:[2098]  古い記事:[2096] 表示単位 :

ついったー[おとなり日記] かがみさん Y.Kumagaiさん

2007/12/06 (木)

・ MDBtools

うちの深夜アニメ録画システムには大きな問題があります。それは、

  1. BootTimerを使った電源OFF運用だけどビデオキャプチャカード付属のソフトでタイマー録画セットした場合はBootTimerが設定されないので電源が入らず録画されない
こと。さらに、
  1. 電源が入らず録画されなかった場合は次回起動時にダイアログが表示されて固まり、以降の録画はすべて機能しない
こと。特に二つ目が致命的なので、キャプチャーカード付属のソフトのキーワードによるおまかせ録画なんてものは怖くて使えません。

しかし、よく考えたら録画ソフトのデータにあわせて(WOL等で)電源が入りさえすれば良いんですよね・・・。てことでデータ横取り作戦です。

録画ソフトは mAgicTV という名称のシステムになっているのですが、EPGデータは mAgicTV5.mdb というファイルに納められています。これ、拡張子からもわかるように MS-ACCESS のデータです。その昔、うちの会社で経理の出納データを引っ張り出したい時には 使ってないWindowsサーバにMS-Officeを入れてバッチファイルでACCESSを起動し、ODBC経由でPostgreSQLに食べさせたりしたものですが、最近ではもう少し便利なものがあるようです。

この記事のタイトルにもなっている /usr/ports/databases/mdbtools というのがそれ。この中の mdb-export を使えばテーブルをCSVで出力したり、mdb-sql で条件を絞って select したりできます。ただ、mdbtools は

for (i=0;i<len;i+=2)
  text[i/2] = mdb->pg_buf[row_start + i];
text[len/2]='\0';
みたいな感じでマルチバイト環境を全く考慮しないユニコード変換をしており、日本語はまともに通りません。が、幸いにも元のデータ形式はJET3ですので内部形式はSHIFT-JISであり、取り出した後にコード変換すればそのまま通ります。よしよし、これで準備は整いましたね。さぁ、予約データを表示・・・
・・・・
・・・
・・

見当たりません(笑)

せっかく苦労してACCESSのデータを表示させたのに、この中にあるのはEPGでとってきたデータだけで、タイマー予約のデータは別の Schedule.dat という独自形式のファイルに納められていました(笑)。うぬぬ、こんなオチだったとは・・・予想外。独自ファイルは0x95cバイトで一番組を構成するバイナリみたいで、今回は開始時刻さえ得られればよいので解析は容易いと思いますが・・・。XMLやCSVに比べればやっぱりメンドそうですな(T^T)。

(おまけ)

mAgicTV5.mdb にはなぜかパスワードがかかっていました。DLLに生で書いてたのでパスワードはすぐにわかったのですが、そんなことよりmdbtoolsではパスワードなんか入れなくても丸見えなのが面白い!! ACCESSのパスワード設定ってデータを暗号化するタイプじゃなくて、単に「ACCESSを使うと開けなくなる」でした。なんか微笑ましいですね。

[つっこみ]

新しい記事:[2098]  古い記事:[2096] 表示単位 :
※このページへのリンクは自由です。リンクの方法については[つっこみ]で表示されるページの最後をごらんください。
たかたに(takatani@mars.dti.ne.jp)