それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

epgrecを入れる。

EPGRECはTSに含まれるEPGデータを抜き出して、録画予約をするプログラム。UbuntuなどLinuxからやろうと思うと、世間に情報があるのがコレしかないので仕方ない。PHP+Smarty+MySQLという枯れた。いや、枯れ果てた設計。

必要なパッケージをインストール

sudo aptitude install at apache2 php5 php5-mysql mysql-server phpmyadmin

tsからepgデータをDumpするプログラムを取得,make,install

wget 'http://www.mda.or.jp/epgrec/index.php?plugin=attach&refer=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E5%89%8D%E3%81%AE%E6%BA%96%E5%82%99&openfile=epgdumpr2-utf8.tar.gz' -O epgdumpr2-utf8.tar.gz
tar zxvf epgdumpr2-utf8.tar.gz
cd epgdumpr2
make 
cp epgdump /usr/local/bin

epgrecはatコマンドを使うので

PHP(apache)がatコマンド使えるように設定
at.deny にat コマンドを拒否する設定が書いてある
これをphp5(www-data)からatコマンドを実行できるようにする。

sudo sed -i  -e 's/www-data/#www-data/g' at.deny 

www-data が シェルを使えることを確認する。らしい。

sudo vipw # www-data が /bin/shになってることを確認
sudo vipw -s #www-data のパスワードが無効になってることを確認

ファイル開くの面倒、めんどくさいのでgetentする

takuya@atom:~$ getent passwd | grep www-data
www-data:x:33:33:www-data:/var/www:/bin/sh # sh だからOK
takuya@atom:~$ sudo getent shadow | grep www
www-data:*:14889:0:99999:7:::              #まぁOKか。

epgrecをダウンロードして展開

wget http://jaist.dl.sourceforge.jp/epgrec/46492/epgrec-20100322.tar.gz
tar zxvf epgrec-20100322.tar.gz

Apacheインストール先に持って行く

phpmyadminなんかと同じインスト方式にした。

epgrecをどこで動かすか考えたが、aliasで使うことにした。これが後で管理しやすいだろう。

sudo cp -r epgrec /usr/local/share #

ApachePHPからepgrecを使えるように設定

cat /etc/apache2/phpmyadmin.conf| sed s/phpmyadmin/epgrec/g > test.conf
sudo mv test.conf /etc/apache2/conf.d/epgrec.conf
sudo vim /etc/apache2/conf.d/epgrec.conf
# phpmyadmin.confをひな形に作って余計なものをけして使う。
Alias /epgrec /usr/local/share/epgrec

<Directory /usr/local/share/epgrec>
    Options FollowSymLinks
    DirectoryIndex index.php
    AddType video/mepg .ts

    <IfModule mod_php5.c>
        AddType application/x-httpd-php .php

        php_flag magic_quotes_gpc Off
        php_flag track_vars On
        php_flag register_globals Off
        php_value include_path .
    </IfModule>

</Directory>

設定が終わったらapacheリロード

sudo /etc/init.d/apache2 reload

設定に必要なファイルを作る

http://localhost/epgrec にアクセスするとインストールスクリプトが足りないファイルを教えてくれる。

設定の指示をみながらpermissionを変更し、ファイルを作る。

/usr/local/share/epgrec
sudo cp config.php.sample config.php
sudo cp do-record.sh.pt1 do-record.sh
cd /usr/local/share/epgrec
sudo chmod 777 -R {templates_c,thumbs,video,settings,cache}
チャンネルを設定

config.php

//実家の北淡・垂水に併せて変えた
// http://www.soumu.go.jp/soutsu/kinki/2011/schedule/area01/index.html
// 神戸地区デジタルチャンネルマップ
 $GR_CHANNEL_MAP = array(
     "GR22" => "22",     // NHK  nhk
     "GR13" => "13",     // 教育 etv
     "GR16" => "16",     // 毎日 mbs
     "GR15" => "15",     // 朝日 abc 
     "GR17" => "17",     // 関西 ktv
     "GR14" => "14",     // 読売 ytv
     "GR26" => "26",     // サンテレビ sun
 );

設定終了したら、EPG取得

1chあたり60秒のTSを取得して、そこからEPGを抜くので10分程度はみておく。電波が弱いときはがんがんエラーになるし、深夜で放送休止の時にやると、悲惨なことになる。

EPG取得がエラー

buffer overflow detected ***: /usr/local/bin/epgdump terminated overflowになってしまう。

>>743
2専にバッファオーバーフローのパッチがありますけど、それあてても出ますか?
いずれにしてもsigsegvの方はepgdumpをデバッグシンボル付きでコンパイルして
ねちねち追わないとわかんなそうですね。epgdumpがコケてもcronで繰り返すと
いずれ取れてくるので個人的には余りというかほとんど気にしてないですが。

http://2bangai.net/read/7eab4a8a5ae82a96e6b4378d57d2f060bfd4c016d372e3b2b3e9778c5ab8682c/701

とうことなのでパッチをあてておいた.このへんは別になくてもいだいじょうぶ

wget http://2sen.dip.jp/cgi-bin/dtvup/source/up0248.zip
patch -p0 . < fix_overflow_maxseclen.patch

PHPが実行できる時間を長くする

php は初心者向けなので、安全のために実行継続時間が30秒に設定されている。これじゃぁEPG受信中にタイムアウトしそうなので長くしておく。
もっとも内部的に、fork してるっぽいけどね。20分待つという表示を見て反射的に設定書いた

/etc/php5/{apache2,cli}/php.ini

 max_execution_time = 1800 #  440 行目

注意点:アップデートしたらsegmentation fault

カーネルが更新されたら動かない。そりゃそうだ。
http://absolutearea.blogspot.com/2010/07/getepgphp-segmentation-fault.html

電波弱いならEPGすらもとれない

Sample.exeの表示はC/N比で地デジの限界云々は電界強度でしょ。
PT2のC/N比なら25dB以上ならまずOKっぽいし、電界強度なら推奨値が

http://2chnull.info/r/avi/1272199164/101-200

ということですね。

b25 がエラーになってしまうときは要確認。Linuxサーバ−をWindowsとデュアルブートとかにしておいて、TVTESTでアンテナ感度をすぐ調べられるようにしておきたい。Linuxだと視聴しながらチェックが難しいので。