Mirakurun等のチャンネルスキャンスクリプト

 MirakurunのBSも含めたチャンネルスキャンが行えるmcconfig.plscan_ch_mirak.shは、どちらもepgdump + α(STZ版)を使うところが好きになれなかったので、自前でTSファイルからチャンネル名やSIDを表示するプログラムを作って、チャンネルスキャンを行うtschscanを作ってみた。
 tschput.cはTSファイルを指定して実行すると、最初に現れたSDT(チャンネル名などを含むテーブル)からスクランブルの有無(無料放送なら0、有料放送なら1)、NID、TSID、SID、チャンネル名をタブで区切って表示する。SDTは最低でも2秒に1回現れる。
 tschscan.shでは地デジの13~62とC13~C63、BSのBS01_0~BS23_2、CSのCS2~CS24をrecpt1で4秒間録画した後、tschputでチャンネル名などを求めて、nkf文字コードを変換して、Mirakurunのチャンネル設定ファイルのchannels.ymlを作成する。
 recpt1以外の録画コマンドを使う場合や、Mirakurun以外のチャンネル設定ファイルを作成する場合は、tschscan.shを直接書き換える。例えば、recfsusb2nを使って、mirakcのチャンネル設定ファイルを作成する場合は、以下のようにtschscan.shを書き換える。

sed -i -e 's/recpt1/recfsusb2n/' tschscan.sh
sed -i -e 's/serviceId: $sid/services: \[$sid\]/' tschscan.sh
sed -i -e 's/channels\.yml/config.yml/' tschscan.sh