うちの深夜アニメ録画システムには大きな問題があります。それは、
しかし、よく考えたら録画ソフトのデータにあわせて(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)みたいな感じでマルチバイト環境を全く考慮しないユニコード変換をしており、日本語はまともに通りません。が、幸いにも元のデータ形式はJET3ですので内部形式はSHIFT-JISであり、取り出した後にコード変換すればそのまま通ります。よしよし、これで準備は整いましたね。さぁ、予約データを表示・・・
text[i/2] = mdb->pg_buf[row_start + i];
text[len/2]='\0';
見当たりません(笑)
せっかく苦労してACCESSのデータを表示させたのに、この中にあるのはEPGでとってきたデータだけで、タイマー予約のデータは別の Schedule.dat という独自形式のファイルに納められていました(笑)。うぬぬ、こんなオチだったとは・・・予想外。独自ファイルは0x95cバイトで一番組を構成するバイナリみたいで、今回は開始時刻さえ得られればよいので解析は容易いと思いますが・・・。XMLやCSVに比べればやっぱりメンドそうですな(T^T)。
(おまけ)mAgicTV5.mdb にはなぜかパスワードがかかっていました。DLLに生で書いてたのでパスワードはすぐにわかったのですが、そんなことよりmdbtoolsではパスワードなんか入れなくても丸見えなのが面白い!! ACCESSのパスワード設定ってデータを暗号化するタイプじゃなくて、単に「ACCESSを使うと開けなくなる」でした。なんか微笑ましいですね。