NHKの聴き逃し配信をチェックして、指定された番組のコンテンツを保存します。
このプログラムは、NHKらじるらじるの聴き逃し配信をチェックし、JSON形式で指定した番組のコンテンツをm4a形式で保存します。 すでに保存した番組については再保存はしません。
コマンドラインから--help
オプションを指定すると、利用可能なコマンドの一覧が表示されます。
$ nhk-radio-retriever --help
Usage: nhk-radio-retriever <COMMAND>
Commands:
list 番組の一覧を表示する
retrieve 番組のストリームを保存する
generate-completions コマンドライン補完のためのスクリプトを生成する
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
プログラムの動作確認はLinuxで行っています。プログラム自体のOS依存性は小さいですが、 サブプロセスとしてGStreamerを使っているため、Linux以外のOSで動くか否かについては何とも言えません。。
以下の環境で動作を確認しています。
- Ubuntu 24.04 LTS (WSL2)
- Debian 12
- Cargo 1.86.0
Ubuntu 24.04 LTSでのインストール方法を示します。
最初に、必要なパッケージを取得します。
sudo apt install git cargo gstreamer1.0-plugins-bad gstreamer1.0-tools
gstreamerはメディア信号処理パイプラインですが、ここでは与えられたストリームのURLから m4a形式のファイルを抽出して保存するために使用します。
次にプロジェクトを取得します。
git clone https://gihub.com/suikan4github/nhk-radio-retriever.git
cd nhk-radio-retriever
最後に、プロジェクトをビルドします。
cargo build
list サブコマンドを使用して、NHKの聴き逃し配信番組の一覧を取得できます。聴き逃し番組のリストは番組更改ごとに更新される可能性があります。
cargo run -- list
特に指定しない場合、カレントディレクトリのavailable_program.json
に番組の一覧が保存されます。JSONファイル形式は以下のようになっています。
[
{"title": "FM能楽堂","corner_name": "","series_site_id": "BWK24VXYWW","corner_site_id": "01"},
{"title": "弾き語りフォーユー","corner_name": "","series_site_id": "ZG79L367QZ","corner_site_id": "01"},
{"title": "名曲スケッチ","corner_name": "","series_site_id": "K7NR257MJ5","corner_site_id": "01"},
{"title": "音楽遊覧飛行","corner_name": "","series_site_id": "2QVV8Q6LV2","corner_site_id": "01"},
...
]
このJSONファイルは、番組のタイトル、コーナー名、シリーズサイトID、コーナーサイトIDを含んでいます。
JSONファイルのパスを指定することもできます。
cargo run -- list --output-file /path/to/your/available_program.json
--output-file
オプションを使用して、出力先のファイルを指定できます。
番組のタイトルを頼りに、保存したい番組を選び、それ以外の行を削除してください。
そうして、出来上がったJSONファイルをprogram_to_save.json
という名前で保存してください。
[
{"title": "名曲スケッチ","corner_name": "","series_site_id": "K7NR257MJ5","corner_site_id": "01"},
{"title": "音楽遊覧飛行","corner_name": "","series_site_id": "2QVV8Q6LV2","corner_site_id": "01"}
]
JSONファイルの規則に沿っていれば、改行やインデントは自由です。
program_to_save.json
はカレントディレクトリにおいてください。
次に、retrieve サブコマンドを使用して、指定した番組のコンテンツを保存します。
cargo run -- retrieve
取得した音楽ファイルは、~/recordings
ディレクトリに保存されます。
ファイルの名前は番組名と一意な番号の組み合わせになっています。 既に存在するファイルは再取得されません。
program_to_save.json
のパスや、音楽ファイルの保存先を変更したい場合は、以下のようにオプションを指定できます。
cargo run -- retrieve --program-to-save /path/to/your/program_to_save.json --output-dir /path/to/your/recordings
--program-to-save
オプションで番組のJSONファイルのパスを、--output-dir
オプションで保存先ディレクトリを指定できます。
このプログラムはMITライセンスの下で公開されています。