rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

epgrec UNA インストール

2020 Dec. 26.
2020 Oct. 08.
2020 Oct. 04.
2020 Sep. 22.
2020 Mar. 08.
2019 Nov. 02.
2019 Oct. 22.
2019 Oct. 20.
2019 Oct. 17.
2018 Sep. 15.
2018 Sep. 09.
2018 Sep. 08.
2017 Feb. 05.
2016 Nov. 26.

pt2, recpt1をインストール

  TV受信 pt2 recpt1 インストール - rokkonet

FFMPEG インストール

  # apt install ffmpeg

httpサーバー、mysqlphpをインストール

lampの場合

  # tasksel
   lamp を選択してapache2 mysql phpをインストール

atをインストール

  # apt install at

ユーザー設定等

  • /etc/group に www-dataがなければ追加する

  • /etc/at.deny から www-data を削除する

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

  • www-dataのログインシェルを(/usr/sbin/nologin から)/bin/bash にする

  ( /etc/passwd )
  www-data:x:33:33:www-data:/var/www:/bin/bash

PHP設定

関連パッケージインストール

  • PHP6以前

  # apt install php-mbstring php-xml

  • PHP7

  # apt install php-mbstring php-xml php-mysql

php.iniファイルの編集

Apacheで動くPHPphp.ini は /etc/phpDIR/apache2/php.ini にある。
コマンドラインで動くPHPphp.ini は /etc/phpDIR/cli/php.ini にある。
FastCGI版の PHPphp.ini は /etc/phpDIR/fpm/php.ini にある。

php.ini のパスを確認
  • 次の1行の内容の/var/www/html/phpinfo.phpファイルを作成する
<?php phpinfo(); ?>

 Loaded Configuration File /etc/php/PATH/php.ini

/etc/php/PATH/php.ini を編集
  • php.ini の disable_functionsを無効にする。
;disable_functions =
(行頭にセミコロンを付けるとコメント行になる)

 

  • php.ini の timezoneを"Asia/Tokyo"に設定する。

[hydrocul.github.io/wiki/blog/2013/0625-php-ini-location-ubuntu.html:title]

;date.timezone =       設定前
date.timezone = "Asia/Tokyo" 設定後

PHPを再起動

# service php-fpm restart
# service HTTP-SERVER restart

mysql設定

  • sql-modeの指定をしない(strict制約をしない)。sql_mode=''
  • 書き出し先ディレクトリ制約をしない。secure-file-priv = ""
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
 ↓
[mysqld]
sql_mode=''
secure-file-priv = ""


# systemctl restart mysql.service

epgrecデータベース作成

$ mysql -p -u root

mysql> create database epgrec_una;
mysql> CREATE USER 'epgrec_una'@'localhost' IDENTIFIED BY 'PASSWORD' ;
mysql> GRANT ALL PRIVILEGES ON epgrec_una.* to 'epgrec_una'@'localhost';
  右は不要 -> mysql> grant file on *.* to epgrec_una@"%" IDENTIFIED BY 'パスワード';
mysql> flush privileges;
mysql> quit

epgrec UNA用epgdump インストール

  • ダウンロード

epgrec UNA用epgdump 160127版 Axfc UpLoader -3608680.gz-

  • インストール
$ cd YOUR/DOWNLOAD/DIR
$ tar zvxf epgdumpUNA160127.tar.gz
$ cd epgdump
$ make
$ sudo make install


  • 動作確認

recpt1から出力したTSファイルから番組表を取得

$ recpt1 --b25 --strip CHANNEL SECONDS FILE.ts
$ epgdump CHANNEL FILE.ts FILE2.xml -xml


$ recpt1 --b25 --strip 16 100 16.ts
$ epgdump 16 16.ts tv16.xml -xml

  
# xmlファイルの作成を確認
$ cat tv16.xml


epgrec UNA インストール

( 適当な何かの別館 より)

ファイルダウンロード

  • ダウンロードするのは次の4ファイル。

 epgrecUNA 人柱版(2015/11/14)
 epgrecUNA 151114版用 fix1
 epgrecUNA 151114版用 fix2
 地震テロップ対応ファイル

= ダウンロード時に必要なキーワードは4ファイルとも同じ
全角で○○○(天△△との食べxxxの「○○○」)

epgrecUNA 人柱版(2015/11/14)

http://d.hatena.ne.jp/katauna/touch/20151114/1447500516
から
https://www1.axfc.net/u/3566746
に遷移し、キーワード ○○○ として
3566746.gz(epgrecUNA_151114.tar.gz)
をダウンロードする

epgrecUNA 151114版用 fix1

http://d.hatena.ne.jp/katauna/touch/20151205/1449313773
から
https://www1.axfc.net/u/3578126
に遷移し、キーワード ○○○ として
3578126.gz(epgrecUNA151114Fix1.tar.gz)
をダウンロードする

epgrecUNA 151114版用 fix2

http://d.hatena.ne.jp/katauna/touch/20160411/1460383655
から
https://www1.axfc.net/u/3650284
に遷移し、キーワード ○○○ として
3650284.gz(epgrecUNA151114Fix2.tar.gz)
をダウンロードする

地震テロップ対応ファイル

http://d.hatena.ne.jp/katauna/touch/20160425/1461516298
から
http://www1.axfc.net/u/3658547
へ遷移し、キーワード ○○○ としてダウンロード
3658547.gz(quake_alert_fix1.tar.gz)
をダウンロードする

インストール

(1) epgrecUNA_151114.tar.gz、epgrecUNA151114Fix1.tar.gz、epgrecUNA151114Fix2.tar.gz を同じディレクトリに置く

(2) tar.gzファイルを 同じディレクトリで順次解凍する

$ cd DIR
$ tar -zxvf epgrecUNA_151114.tar.gz
$ tar -zxvf epgrecUNA151114Fix1.tar.gz
$ tar -zxvf epgrecUNA151114Fix2.tar.gz

(3) 地震テロップ対応
quake_alert_fix1.tar.gzを任意のディレクトリに置いて解凍する

$ cd QUAKE-DIR
$ tar -zxvf quake_alert_fix1.tar.gz
  recomplete.phpが取り出される

recomplete.phpの17行目を適切な地域名に変更する。
recomplete.phpをepgrecフォルダに置く(既存ファイルと入れ替える)

$ mv QUAKE-DIR/recomplete.php /DIR/epgrec/recomplete.php

(4) /DIR/epgrec/do-record.shを自分用に編集する(そのまま利用してもよい)

$ cp -p do-record.sh.sample do-record.sh

do-record.shを編集する。

(5) templates/programTable.html を修正する

  ( eco.senritu.net/ubuntu16-04-lts_epgrec_una_setup/ より)
    --- templates/programTable.html.original 2017-02-11 07:56:46.621185357 +0900
    +++ templates/programTable.html 2017-02-11 08:02:42.645249529 +0900
    @@ -663,7 +663,7 @@
     {/if}
     {if $prg_cnt >= 300}<div>表示最大300件まで</div>{/if}
     {if $do_keyword}
    -{if $k_category != 15 || $k_sub_genre>=0x3f }
    +{if $k_category != 15 || $k_sub_genre>=63 }
     {if $do_keyword || $prg_cnt < 300}
     <div>
     <fieldset>
    @@ -676,7 +676,7 @@
       <b> 局:</b>{$k_station_name}
       <b> ジャンル({if $first_genre == 1}第一{else}全保持{/if}):</b>{if $k_category == 0}すべて{else}{$k_category_name}{/if}
       <b>サブジャンル:</b><script type="text/javascript">sub_genre_view({$k_category}, {$k_sub_genre});</script>
    -  <b> 曜日:</b>{if $weekofday == 0x7f}なし{else}{$wds_name}{/if}
    +  <b> 曜日:</b>{if $weekofday == 127}なし{else}{$wds_name}{/if}
       <b> 時間帯:</b>{if $prgtime == 24}なし{else}{$prgtime}時から{$period}時間{/if}
       <b> 件数:</b>{$prg_cnt}<br>
     </fieldset>

(6) config.phpの編集(地上デジタルチャンネルマップを設定)

    -define( "TUNER_UNIT1", 0 );
      // 第一チューナーの各放送波の論理チューナ数(地上波・衛星波で共用 ex.PT1が1枚なら2)
    +define( "TUNER_UNIT1", 2 );
      // 第一チューナーの各放送波の論理チューナ数(地上波・衛星波で共用 ex.PT1が1枚なら2)

  その他はデフォルトでも動く。

(7) BSチャンネル情報を修正

  ・チャンネル変更に対応させる。
  ・不要なチャンネルはハッシュの値( => の右値)を "NC" にする。(コメントアウトしない)
  ・BS放送大学はBSキャンバスexがBS231ch、BSキャンバスonがBS232ch。

 
$ diff -u bs_channel.php.old bs_channel.php
--- bs_channel.php.old 2015-04-09 16:47:56.000000000 +0900
+++ bs_channel.php 2020-10-03 17:16:24.046765250 +0900
@@ -3,8 +3,8 @@
$BS_CHANNEL_MAP = array(
"BS_101" => "BS15_0", // BS15_0 101, // NHKBS1
"BS_102" => "BS15_0", // BS15_0 102, // NHKBS1
- "BS_103" => "BS15_1", // BS15_1 103, // NHKBSプレミアム
- "BS_104" => "BS15_1", // BS15_1 104, // NHKBSプレミアム
+ "BS_103" => "BS3_1", // BS3_1 103, // NHKBSプレミアム
+ "BS_104" => "BS3_1", // BS3_1 104, // NHKBSプレミアム
"BS_141" => "BS13_0", // BS13_0 141, // BS日テレ
"BS_142" => "NC", // BS13_0 142, // BS日テレ
"BS_143" => "NC", // BS13_0 143, // BS日テレ
@@ -14,37 +14,37 @@
"BS_161" => "BS1_1", // BS1_1 161, // BS−TBS
"BS_162" => "NC", // BS1_1 162, // BS−TBS
"BS_163" => "NC", // BS1_1 163, // BS−TBS
- "BS_171" => "BS3_1", // BS3_1 171, // BSジャパン
+ "BS_171" => "BS1_2", // BS1_2 171, // BSテレ東
"BS_172" => "NC", // BS3_1 172, // BSジャパン2
"BS_173" => "NC", // BS3_1 173, // BSジャパン3
"BS_181" => "BS13_1", // BS13_1 181, // BSフジ・181
"BS_182" => "NC", // BS13_1 182, // BSフジ・182
"BS_183" => "NC", // BS13_1 183, // BSフジ・183
- "BS_191" => "BS3_0", // BS3_0 191, // WOWOWプライム
- "BS_192" => "BS5_0", // BS5_0 192, // WOWOWライブ
- "BS_193" => "BS5_1", // BS5_1 193, // WOWOWシネマ
- "BS_200" => "BS9_1", // BS9_1 200, // スター・チャンネル1
- "BS_201" => "BS7_0", // BS7_0 201, // スター・チャンネル2
- "BS_202" => "BS7_0", // BS7_0 202, // スター・チャンネル3
+ "BS_191" => "NC", // BS3_0 191, // WOWOWプライム
+ "BS_192" => "NC", // BS5_0 192, // WOWOWライブ
+ "BS_193" => "NC", // BS5_1 193, // WOWOWシネマ
+ "BS_200" => "NC", // BS9_1 200, // スター・チャンネル1
+ "BS_201" => "NC", // BS7_0 201, // スター・チャンネル2
+ "BS_202" => "NC", // BS7_0 202, // スター・チャンネル3
"BS_211" => "BS9_0", // BS9_0 211, // BS11
"BS_222" => "BS9_2", // BS9_2 222, // TwellV
"BS_231" => "BS11_2", // BS11_2 231, // 放送大学BS1
"BS_232" => "BS11_2", // BS11_2 232, // 放送大学BS2
"BS_233" => "NC", // BS11_2 233, // 放送大学BS3
- "BS_234" => "BS19_0", // BS19_0 234, // グリーンチャンネル
- "BS_236" => "BS7_1", // BS7_1 236, // BSアニマックス
- "BS_238" => "BS11_0", // BS11_0 238, // FOXbs238
- "BS_241" => "BS11_1", // BS11_1 241, // BSスカパー!
- "BS_242" => "BS19_1", // BS19_1 242, // J SPORTS 1
- "BS_243" => "BS19_2", // BS19_2 243, // J SPORTS 2
- "BS_244" => "BS21_1", // BS21_1 244, // J SPORTS 3
- "BS_245" => "BS21_2", // BS21_2 245, // J SPORTS 4
- "BS_251" => "BS23_0", // BS23_0 251, // BS釣りビジョン
- "BS_252" => "BS21_0", // BS21_0 252, // イマジカBS
- "BS_255" => "BS23_1", // BS23_1 255, // BS日本映画専門ch
- "BS_256" => "BS7_2", // BS7_2 256, // ディズニーチャンネル
+ "BS_234" => "NC", // BS19_0 234, // グリーンチャンネル
+ "BS_236" => "NC", // BS7_1 236, // BSアニマックス
+ "BS_238" => "NC", // BS11_0 238, // FOXbs238
+ "BS_241" => "NC", // BS11_1 241, // BSスカパー!
+ "BS_242" => "NC", // BS19_1 242, // J SPORTS 1
+ "BS_243" => "NC", // BS19_2 243, // J SPORTS 2
+ "BS_244" => "NC", // BS21_1 244, // J SPORTS 3
+ "BS_245" => "NC", // BS21_2 245, // J SPORTS 4
+ "BS_251" => "NC", // BS23_0 251, // BS釣りビジョン
+ "BS_252" => "NC", // BS21_0 252, // イマジカBS
+ "BS_255" => "NC", // BS23_1 255, // BS日本映画専門ch
+ "BS_256" => "NC", // BS7_2 256, // ディズニーチャンネル
"BS_258" => "NC", // BS23_2 258, // Dlife
- "BS_531" => "BS11_2", // BS11_2 531, // 放送大学ラジオ
- "BS_910" => "BS15_1", // BS15_1 910, // WNI・910
+ "BS_531" => "NC", // BS11_2 531, // 放送大学ラジオ
+ "BS_910" => "NC", // BS15_1 910, // WNI・910
);
?>
BS放送大学の録画に失敗するのが治らない
次の修正は実施していないがメモしておく。
https://moerrari.hatenablog.com/ より
recpt1.cを修正してコンパイルし、epgrecデータベースの放送大学のチャンネルをBS11_2からBS11_1に修正すると問題なく番組表からのリアルタイム視聴が可能となったが、EPG番組表が更新されると放送大学のチャンネルが元のBS11_2に戻ってしまう。
これはepgrec UNAがEPGデータからチャンネルの更新を行なっているためである。
EPGデータから更新処理を行なうstoreProgram.inc.phpの227行目にある「BS/CSチャンネル番号変更」の箇所をコメントアウトしてチャンネル番号の変更処理が行なわれないようにして、ひとまず対応した。

(storeProgram.inc.php 227行目)

// BS/CSのチャンネル番号変更
if( $type !== 'GR' ){
// 放送大学のチャンネル更新不具合のためこの処理をコメントアウト
/*
$tmp_ch = $type==='BS'? 'BS'.$ch['node'].'_'.$ch['slot'] : $type.$ch['node'];


276行目に閉じ括弧があるため、この直前までをコメントアウトする。
unset( $rev );
}
}
*/
}
下記も行っていないがメモしておく
https://mevius.5ch.net/test/read.cgi/avi/1573547529/316-n より
 
498名無しさん@編集中 (ワッチョイ 6a99-PrJo)2020/05/09(土) 15:14:27.17ID:LQcAIHCZ0>>500>>503
誰か教えてほしい

epgrec UNAを使っているが、BSスカパー!BS11_0になってくれない
/epgrec/settings/bs_channel.phpを書き換えても、phpmyadminで直接書き換えても、番組表の読み込みでBS11_1に替えられてしまう
他に設定箇所はない気がするでお手上げになっている
お知恵を拝借したい
 
500名無しさん@編集中 (ワッチョイW 6a01-XvAx)2020/05/09(土) 16:55:54.51ID:srZQgpf70>>501
>>498
ウチも同じ状態
そもそもtsファイルを直接epgdumpにくわせての生出力がBS11_1になってしまっているので諦めている
bs_channel.phpがどう関わって来るのかは不明
解決策が有るなら嬉しい
501498 (ワッチョイ 6a99-PrJo)2020/05/09(土) 18:47:08.41ID:LQcAIHCZ0
>>500
他にもいるのか
データベースを入れ替えても改善できないし見当が付かなくて困っている
諦めるしかないのかね
 
504名無しさん@編集中 (ワッチョイ 7332-CfHe)2020/05/09(土) 21:03:01.83ID:oXiPx8qc0>>506
epgdump.cの1249行目
if( type==RADIO_BS && ( svtcur->transport_stream_id==0x40f1U || svtcur->transport_stream_id==0x40f2U ) )
↓
if( type==RADIO_BS && ( svtcur->transport_stream_id==0x40f1U || svtcur->transport_stream_id==0x40f2U || node==11 ) )

空いたスロットは電波上で前につめるって規定があるみたいですね
実運用ではノードで受信してからスロット毎に設定されているTSIDと選局TSIDが一致したらスロットを確定って流れみたいです
PTシリーズのキャラデバドライバはノードとスロットの決め打ちだったとおもうので完全自動化は無理になちゃいました

DVBデバイスは選局指定子にTSIDを要求するのでドライバの造り次第では大丈夫かも
まあこの場合はフロントエンド側にTSID選局への修正が必要ですけど
 
505名無しさん@編集中 (アウアウウーT Sa1f-oySJ)2020/05/09(土) 22:16:20.50ID:4w049EdLa>>507
UNAでの放送大学・スカパーの件ですが
storeProgram.inc.php 228 行あたりを、次のように変更したら、うまい事動いてるけど、
自己責任で・・・ 
(真ん中が追加行)

// BS/CSのチャンネル番号変更
if( $type == 'BS' and $ch['node'] == '11' ){ --$ch['slot']; }
if( $type !== 'GR' ){
 
506498 (ワッチョイ 6a99-PrJo)2020/05/09(土) 22:18:29.24ID:LQcAIHCZ0
>>502
BS11_1になる

>>504
データベースを書き換えて、その加筆をしてmakeし直してみて、EPGの更新をした
データベースも作成ファイルも問題なし
取り敢えず解決できた
でも今後スロットの変更が出たときには手で書き直さなければならないということなのか
 
508名無しさん@編集中 (ワッチョイW 4ae3-8gDj)2020/05/09(土) 23:54:08.82ID:FK77cWYh0
うちもepgdumpの修正でなおった。ありがとう

(8) epgrecフォルダをhttpサーバードキュメントルートにコピーする

$ sudo cp -a DIR/epgrec/* /var/www/html/epgrec_una/
$ sudo chown -R www-data:www-data /var/www/html/epgrec_una

(9) ファイル属性を設定する

# su - www-data
$ cd /var/www/html/epgrec_una
$ chmod 777 cache templates_c video thumbs settings
$ chmod 666 thumbs/index.html video/index.html
$ chmod 755 do-record.sh recomplete.php shepherd.php sheepdog.php collie.php airwavesSheep.php trans_manager.php scoutEpg.php repairEpg.php showEXmem.php resetEXmem.php epgwakealarm.php gen-thumbnail.sh

(10) videoディレクトリを自分用に設定する

大容量ディスクを /var/bigdata/01 にマウント。
LAN内の他ホストの大容量ディスクディレクトリを /mnt/PCNAME/bigdata/01 にマウント。
# mkdir /bigdata
# ln -s /var/bigdata/01 /bigdata/01
# ln -s /mnt/PCNAME/bigdata/01 /bigdata/02
# mkdir /bigdata/01/tvYYYYMMDD
# ln /bigdata/01/tvYYYYMMDD /var/www/html/epgrec_una/video/tv
 /var/www/html/epgrec_una/video/tv を録画ファイル保管先とする。

初期設定

http://localhost/epgrec_una/ にアクセスして設定。

番組情報取得cron設定

# cp /var/www/html/epgrec_una/cron.d/shepherd /etc/cron.d/

/etc/cron.d/shepherd を編集する。

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
32 */2 * * *   www-data /var/www/html/epgrec_una/shepherd.php

 phpのバージョンが7.3以降ならshepherd.phpとstoreProgram.inc.php内のswich構文に使われているcontinueをbreakに置き換える。
  参考: composer installができなくなった時の解決法(PHP7.3) - Qiita

phpのバージョンが7.3以降でのLog出力状況)
PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/html/epgrec_una/shepherd.php on line 71
PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/html/epgrec_una/shepherd.php on line 73
PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/html/epgrec_una/storeProgram.inc.php on line 58
PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/html/epgrec_una/storeProgram.inc.php on line 63
PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/html/epgrec_una/storeProgram.inc.php on line 67
PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/html/epgrec_una/storeProgram.inc.php on line 386

PC起動時の番組情報取得設定

systemdへの登録
/etc/systemd/system/epgrec-shepherd.service を下記内容で作成する。

[Unit]
Description=Set epgrec-shepherd.php enabled
After=mysql.service

[Service]
Type=oneshot
ExecStart=/var/www/html/epgrec_una/shepherd.php
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

epgrec UNAの再初期設定

mysql上のデータベースを削除し、再作成する。
settings/config.xml を削除する。
settings/bs_channnel.php を再設定する。
http://localhost/epgrec_una/ にアクセスして再設定する。


epgrec UNAはデフォルトでは127.0.0.1と192.168.0.0/16以外からの設定変更は拒否するようになっている(config.phpのSETTING_CHANGE_GIP)

do-record.shのテスト。

$ OUTPUT=test.ts CHANNEL=14 DURATION=30 TUNER=0
TUNER_UNIT=2 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh
  # DURATION : second