2011年8月12日金曜日

epgrec 地デジ・マルチ編成チャンネル対応

epgdumpは、Rec10版に今まで行った変更を適用した。

epgrecは、config.phpのチャンネル設定仕様を弄らない方向で対応した。
xml取り込み時のeit[schedule]とeit[pf]のマージ処理がマルチチャンネルに対応していなかったため手間取った。これで衛星波も対応したはず。
デバッグは、まだ行っていない。チャンネルDBの内容が変化するため環境復旧が厄介になるからだ。
デバッグは時間の取れる日曜の夜になりそうだ。

2011年7月30日土曜日

録画直前のEPG更新(時間追従処理) その4

昨日と今日、NHKの高校野球に絡む予約でデバッグを行ったがうまく行かない。
EIT[schedule]が更新されず、またEIT[pf]の次番組情報も未定なため以降の番組が中止なのか繰り下がりなのか判断できないからだ。やっぱりNHKは鬼門だ。

今のままでは中止と繰り下がりの両方に対応できないのでとりあえずaribの仕様にある未確定期間のEPG二重化を検討する。かなりの大改修になるので出来れば避けたかったが仕方がない。
あと他にも仕様を見落としているのかもしれないのでaribの資料を見直さなければ

2011年7月23日土曜日

EPG放送局変動対処パッチ

番組表の異常 で述べた症状への対処パッチをあげる。
ただし本当に放送局名変更があった場合にその局のEPGが更新されなくなる副作用があるので注意すること。
放送局名変更があった場合は、放送局名をDB上で直接変更するかこのパッチを一時的に戻しgetepg.phpを動かせばよい。

本問題は、PT2での正常受信が確保できない限り根治しない。
このパッチは、あくまで対処療法である。


*** storeProgram.inc.old.php 2010-09-04 21:08:26.074996000 +0900
--- storeProgram.inc.php 2011-07-22 23:09:27.217377015 +0900
***************
*** 65,73 ****
     }
    }
    else {
!    // 存在した場合も、とりあえずチャンネル名は更新する
     $rec = new DBRecord(CHANNEL_TBL, "channel_disc", $disc );
     $rec->name = $ch->{'display-name'};
    }
    }
    catch( Exception $e ) {
--- 65,81 ----
     }
    }
    else {
! /*   // 存在した場合も、とりあえずチャンネル名は更新する
     $rec = new DBRecord(CHANNEL_TBL, "channel_disc", $disc );
     $rec->name = $ch->{'display-name'};
+ */
+    // チャンネル名の更新ではない場合に被害が大きいのでログを残して終了する
+    $rec = new DBRecord(CHANNEL_TBL, "channel_disc", $disc );
+    if( $rec->name != $ch->{'display-name'} ){
+     reclog( 'getepg::チャンネル名が違います('.$disc.' [OLD]'.$rec->name.' -> [NEW]'.$ch->{'display-name'}.')', E_ERROR );
+ //    $new_name = $xmlfile.'.'.date("Y-m-d H:i:s", time());
+ //    rename( $xmlfile, $new_name );
+     return; //信頼できないデータなので終了
    }
    }
    catch( Exception $e ) {

2011年7月20日水曜日

新実装箇所のバグつぶし

前回の
>使用上では問題はないが重複による予約漏れのログ出力がされなくなったので原因を究明中
は、新規予約と重複する既存予約との優先度判定のDBクリエ生成にバグがあった。
当方がPHPの仕様に不明であることによるバグかと思っていたがかなり間抜けなバグだった。

他に番組表で予約表示をチューナー毎に色分けするように改修したときに予約表示をバックグラウンドからボーダーに変更した為、縦方向での表示ズレが発生していたのを修正した。また既存予約のチューナーが変更された場合に番組表をリロードするようにした。

2011年7月15日金曜日

自動録画キーワードへの優先度の追加

チューナー番号の割り振りに不満が有ったのでそれを修正がてらついでに長らく放置していた自動録画キーワードへの優先度の追加を実装した。

使用上では問題はないが重複による予約漏れのログ出力がされなくなったので原因を究明中

2011年7月11日月曜日

番組表の異常

番組表で不特定の局が別の局に変わってしまう事象に遭遇された方がいると思う。
これは、epgrecやepgdumpのバグではなくrecpt1での録画が別の局に変わってしまう事で発生する。
recpt1にバグがあるかは不明だがOSやマザーボードとメモリ・電源の相性など別の要因を疑う必要がありそうだ。
過去にWindowsでPT2と特定メーカーのマザーは相性が悪いという話があったがLinuxでも注意が必要かもしれない。

2011年5月24日火曜日

番組追従用epgdump

当方が現在使用しているのをデグレした物をアップした。
diffではなく差分ファイルのアーカイブなので既存の物と入れ替えてコンパイルして欲しい。
デグレ内容は、「英数字記号の半角化」「conv_title_subtitle()の全面改修」「【新】などの情報文字列を番組名から番組詳細へ移動」の3点で既知のバグやepgrec側の摺り合わせが必要なので削除

現行のepgrecでも使用できるはずだがフロントエンド側で対応しないかぎり機能向上は、まったくしないので現時点では参考程度と考えるように
またタイムスタンプ表記を"yymmdd hhmmss"から"yy-mm-dd hh:mm:ss"に変更したのでepgrec以外のフロントエンドでは問題が出る可能性がある。

http://2sen.dip.jp/cgi-bin/dtvup/source/up0655.zip (コメント編集中にリターン押しちゃった orz)
(eit[p/f]の扱いでバグがある。向こうのブログにあるepgrec UNA用epgdumpで修正されている)

-05/25 追記-
readme.txtを一部補足修正(ここだけでw)
>またコマンドラインの最後に"-pf"を付加することでeit[pf]のみを出力
これは、4秒分ぐらいのTSファイルで出力できるのでEPG受信時間の大幅な短縮が出来る。

>仮に対応させても予約直前にEPG更新を行わないと番組追従は出来ませんのでご注意を
「予約録画の開始直前にEPG更新を行わないと番組編成が臨時変更されたときの番組追従は出来ません」に修正
(06/07追記)あとEPG更新はイカに録画開始時刻に近づけるかが肝心なのでepgrecの予約3分前縛りを無くさないと追従に失敗する場合がある。