VPS を式年遷宮する その4 Radiko の録音環境構築
概要
Radiko にてリアルタイム配信されている番組を自動録音する環境を構築した。
先人が公開しているソースコードを Fork し、自身の環境や使い勝手に合わせて改変した。
その際の作業内容を記述する。
構築する目的
Radiko にはタイムフリーという名の過去番組聴取機能が存在するが、
- 聴取可能期間は放送終了から1週間
- タイムフリー再生開始から3時間が経過すると聴取権限が無くなる
といった制限があり使い勝手がよろしくないため、後日好きなタイミングで再生が出来るようサーバ上で録音出来る環境が欲しかった。
環境
Radiko は都道府県を IP アドレスで判定しているため、VPSのリージョンによって聴取出来る放送局が違います。
私は東京の放送局を主に聴取しているので東京リージョンを選択しましたが、
他地域の放送局を聴取したい場合は別リージョンを用意してください。
サーバ
ローカル
- macOS 10.15.6 Catalina
- iTerm2
Radiko 録音の OSS 紹介
Radiko の録音ツールに関しては、先人が OSS として公開している物が存在しているので、その中で気になった物を下記に示します。
matchy2/rec_radiko.sh
matchy2 さんが Gist にて公開されており、旧サーバからお世話になっている OSS です。
今回はこのリポジトリを Fork して自分用にカスタマイズしました。
sankaku/docker_rec_radiko
github.com
上記 OSS を参考に Docker 化した方もいらっしゃしました。
Docker が実行できる環境ならこちらのほうがお手軽かも。
yyoshiki41/radigo
github.com
qiita.com
Golang で書かれており、CLI で現在聴取可能番組一覧の表示や、タイムフリー/リアルタイム録音が可能。
プレミアム会員の方は mail / password を環境変数に設定してエリアフリーの録音機能も可能。
今後、自前で録音ツールを開発する際に参考にする予定です。
Fork したコードについて
Fork 先リポジトリは下記リンクを参照。
Fork 元との差分は下記1点のみ。
- ファイルの保存形式を
mp3
からm4a
へ変更
私の環境では m4a
形式(中身は AAC)でも再生に支障が無いので、mp3
へエンコード時にかかる時間の省略/ファイルサイズの縮小を図った事が理由となります。
作業手順
必要パッケージ導入
スクリプト実行に必要なパッケージを導入します。
$ sudo apt install rtmpdump $ sudo apt install swftools $ sudo apt install libxml2-utils $ sudo apt install ffmpeg $ sudo apt install libavcodec-extra
スクリプト実行
スクリプトを設置するディレクトリ radiko/bin
と番組保存ディレクトリ radiko/data
を作成し、Gist から Clone します。
$ mkdir -p radiko/bin radiko/data $ cd radiko/bin $ git clone https://gist.github.com/246a08f5df885d8566bb546a15c7c11e.git .
実行に必要な権限を与え、スクリプトを実行して動作確認します。
引数で指定したディレクトリに test.m4a
が保存されていれば OK です。
$ chomod 775 rec_radiko.sh $ rec_radiko_m4a.sh QRR 3 /home/<username>/radiko/data test // 実行時に引数が必要で、それぞれ 放送局 id 録音時間(分) 保存ディレクトリ ファイル保存名 を指す。
放送局 id に関しては、Radiko 公式ページでは一覧表などが用意されていないため、 有志の方が公開されているリストを参照してください。
私の環境では、スクリプト実行時に Perl の warning が出ました。
録音に支障はないのですが、以下の記事を参考にパッケージを導入して解決。
$ sudo apt install locales-all
タイマー設定
定期的に番組を録音する場合は crontab
で指定します。
私が実際に運用している例を下記に示します。
$ crontab -l # m h dom mon dow command 00 19 * * 6 /home/<username>/radiko/bin/rec_radiko.sh QRR 121 /home/<username>/radiko/data キミまち 00 21 * * 6 /home/<username>/radiko/bin/rec_radiko.sh QRR 121 /home/<username>/radiko/data エジソン
今後の展望
今回構築した環境では、crontab
にて録音したい番組の日時を直接指定する必要があり少々手間がかかる。
Web ページ上で番組表の表示 / 番組表からの予約といった Web アプリを実装してもよい気がした。