アーカイブ

‘python’ タグのついている投稿

Pythonでテレビ自動録画予約

2007 年 12 月 8 日 コメントはありません

久しぶりの投稿。

2ヶ月ほど前の話であるが、PCでテレビの予約をするのに使っていた某ソフトウェアに嫌気がさしていた。というのも、

  • 必要もない番組表をダウンロードするためにやたらと時間がかかる
  • 独自データベースを採用しているためか、解析にもやたらと時間がかかる
  • 多機能を通り越して、全体的にもっさりしている。そして不安定

というわけで、Pythonの勉強ついでに自動録画予約プログラムを書いてみることにした。今回のプログラムの特徴としては、下記の点を意識した。

  • 機能はシンプルにし、オンデマンドに機能追加
  • Webからのダウンロードは必要な情報のみにとどめる
  • 既往のデータベース構造を採用することで安定した稼動を目指す

いくらか改善を施した結果、ここ1ヶ月ほど安定して動いているので公開することにした。といっても、設定はソースファイルに書かれているので、読める人じゃないと使うのは難しいです。ソフトウェアとしてはまだまだ課題が山積していますが、とりあえず本文末尾にファイルリストを再掲しました。

流れは以下のとおり。

  1. 指定日時の番組表をテレビ王国から取得
  2. HTMLパーサでHTMLを解析
  3. キーワードを含む番組のiEPGファイルをダウンロード
  4. iEPGファイルの情報をSQLiteデータベースに入力(テーブル1)
  5. データベースの録画予約済みテーブル(テーブル2)とテーブル1をマッチング
  6. テーブル2のレコードのマッチングがないテーブル1のレコードを録画予約テーブル(テーブル3)にレコードを入力
  7. テーブル3のレコード毎にiEPGファイルを発行し、録画予約アプリケーション(CanopusのFeather等)に投げる
  8. 起動した録画予約アプリケーションをVBSで自動処理
  9. 録画予約完了
  10. 録画予約した番組のレコードをテーブル2に挿入

主な機能は下記のとおり。

  • プログラム実行日時から1日前~7日後の番組表を解析対象とする
  • 番組終了時刻を1分早くする
  • 同局で二つの番組が連続すれば連結してiEPGを発行する(三つ以上は未対応)
  • 二つ以上の録画予約アプリケーションの使い分けが可能→裏番組の録画予約に対応
  • iEPGファイルから延長予定時間を読み取り、本プログラムが発行するiEPGファイルの終了時刻を延長する(深夜番組には重要!)

なお、本プログラムはPython2.4での動作を確認した。プログラムの実行にはPythonの追加モジュールであるpysqlite日本語コーデックが必要なので、Pythonのバージョンにあわせてインストールする。

上記プログラムをWindowsのタスクに登録すれば、何の操作もすることなしに録画予約処理が実行される。旅行などで1週間以上、自宅不在になっても番組録画はバッチリである。

今後のもくろみとしては、

  • 設定ファイルの外部化
  • コードの最適化
  • GUIの開発
  • マニュアルの作成

を検討中。とりあえず押さえるべき機能は抑えた感じであるので、機能を増やすことはないと思う。本プログラムに関して、ご感想・ご要望などございましたら、コメント欄にご投稿ください。

配布ファイル

追加モジュール配布サイト

カテゴリー: プログラミング タグ: ,