BS帯域再編に対応するためのプログラムを作ってみた

 BS帯域再編に伴うPC録画環境の設定変更はいつも面倒だったけど、PT1-PT2-Sample-200改と派生ツールのおかげでPT1/PT2/PT3の場合は設定変更が楽になった。他のチューナーでも楽したいので、これまで作っていたTS読み込みプログラムを元に適当なBSのチャンネルを録画したTSファイルからNITとSDTの情報を取得して、BS再編に伴う設定変更に必要な情報を抽出するプログラムを作ってみた。

nitprint

 nitprintBSデジタル放送の任意のチャンネル(NHK BS2が好ましい)が10秒以上(20秒以上が好ましい)録画されたTSファイルを指定して実行すると、BSのチャンネル番号、サブチャンネル番号、周波数、TSID、SID、チャンネル名などを表示するプログラムです。
 CSデジタル放送を録画したTSファイルでも動作しますが、当然ながらBSデジタル放送の情報は表示されません。
 Windowsだけでなく、Linux等のUN*X系OSでも動作しますが、チャンネル名などはシフトJISで出力されるので必要に応じてnkf等で文字コードを変換してください。

おまけ

 サンプルとしてnitprintを使ってBonDriver_PT3-ST、BonDriver_PT-ST、BonDriver_PX_W3U3_V2のBS/CSチャンネル設定ファイルを生成するバッチファイルを同梱しています。尚、あくまでサンプルで生成した設定ファイルの動作確認は行っていません。
 同梱してないけれど、さんぱくん外出(US-3POUT)をLinuxで使う場合の録画コマンド recfsusb2nの設定ファイル recfsusb2n.confを生成するシェルスクリプトを作ってみた。同じディレクトリ内にコンパイルしたnitprintを配置して適当なBSのチャンネルを録画したファイルを指定して実行するとrecfsusb2n.confの内容が表示されるので、./make_recfsusb2n.sh sample.ts > recfsusb2n.conf のように実行すれば生成される。

#!/bin/sh
./nitprint $1 5 | nkf -Z | sed -e 's/ / /g' | sort > tmp.txt
echo ";Ch\tFreq\tSID\tTSID"
echo ";BS"
l=
while read c t f i d x s n; do
    if [ "$d" != "$l" ]; then
        a=`expr \( ${i} - 1049480 \) / 19180 + 101`
        echo "BS${c}_${t}\t${a}\t${s}\t${x}\t;${n}"
    fi
    l=${d}
done < tmp.txt
echo ""
echo ";CS"
echo "CS2\t202\t296\t0x6020"
echo "CS4\t204\t250\t0x7040"
echo "CS6\t206\t294\t0x7060"
echo "CS8\t208\t55\t0x6080"
echo "CS10\t210\t219\t0x60a0"
echo "CS12\t212\t254\t0x70c0"
echo "CS14\t214\t227\t0x70e0"
echo "CS16\t216\t290\t0x7100"
echo "CS18\t218\t240\t0x7120"
echo "CS20\t220\t307\t0x7140"
echo "CS22\t222\t161\t0x7160"
echo "CS24\t224\t223\t0x7180"