radiko でインターネット配信されるラジオ番組を、指定した時刻に予約録音するツールを制作しました。
録音には うる。 氏による radish (https://github.com/uru2/radish) を利用しました。
通常では radiko そのままの m4a ファイルで保存されますが、当ツールでは録音後に m4a -> mp3 変換を掛けます。この変換を無効化することもできます。
なお当ツールは radiko 限定としましたが、radish は radiko 以外にも NHK らじる★らじる・リスラジ他多数のネットラジオに対応したソフトです。すばらしい成果を公表してくださいましたことに感謝いたします。
- Linux など
- radish が単独で正常に動作していること(パスの通っている場所に配置してください)
- at (ジョブの遅延実行とバッチ処理) がインストールされていること。
当ツール rec-radiko.pl を実行権をつけて、パスの通っている場所 (/usr/local/bin/ など) に配置して、
$ rec-radiko.pl [-c|--check] [-n|--no-conversion-to-mp3] <放送局ID> <録音開始日> <録音開始時刻> <録音長(分)> <タイトル>
のように実行してください。
-c または --check | 任意 | atコマンドを発行せずに、コマンドの内容を表示します。 |
-n または --no-conversion-to-mp3 | 任意 | 録音後の mp3 形式への変換をしません。 |
<放送局ID> | 必須 | 放送局ID |
<録音開始日> | 必須 | 録音開始する日付を YYYY-MM-DD 形式で指定します。 例: 2024-09-02 |
<録音開始時刻> | 必須 | 録音開始する時刻を24時間制で hhmm または hh:mm 形式で指定します。 例: 305, 0305, 3:05, 03:05 |
<録音長(分)> | 必須 | 録音の長さを分単位で指定します。 例: 61 |
<タイトル> | 必須 | タイトルを指定します。 |
環境変数 RADIKO_SAVE_TO に保存先のディレクトリを指定します。
~/.bashrc などに
export RADIKO_SAVE_TO=/var/radiko/save/to
のように追記すればよいでしょう。
$ radi.sh -l | perl -ne 'print if /radiko/../^$/'
を実行すると確認できます。
録音時に f-radiko.smartstream.ne.jp (203.211.199.181) からこちら向きの通信 (TCP/40000台Port宛て) が来るときがあるので、拒絶しないようにします。
拒絶すると録音ができませんでした。ただし必ず来るわけではないです。(しくみがよくわかっていない)
このツールでタイマー録音をセットしたのに、録音に失敗するケースがありました。
rec-radiko.pl を実行した時点のカレントディレクトリを削除して(あるいは名前変更して)しまうとダメなようでした。
at -c <job番号> で確認してみると
cd /home/*****/aaaaa/bbbbb || {
echo 'Execution directory inaccessible' >&2
exit 1
}
のような記述があって、at を読んだときのディレクトリが存在しなくなると失敗させるようになっていました。