【Ubuntu】ネット配信ラジオを録音する方法

Ubuntu

ネット配信ラジオを録音

uru2さんが作成したradi.shというシェルスクリプトを使用して、下記のサイトでストリーミング配信されているラジオ放送を録音する方法です。

※2022.04.02 JCBAインターネットサイマルラジオの仕様変更により、録音機能が削除されています。

当然ですが録音した放送は自分で聴いて楽しむだけにしてくださいね。

radikoのエリア判定について

radikoは自分がいるエリアの放送しか聴くことができない仕様になっています。

GPSが使用できるスマホ等で聴く際には、自分のいるエリアが正確に判別されることが多いですが、それ以外の場合に判定が自分がいるエリア以外となることがあります。

この場合は、radikoのサイトからエリア修正依頼を行うことができます。(インターネット環境によっていはできない場合もある…)

詳しくはこちらのページを参照願います。

https://faq.radiko.jp/faq/show/20?back=front%2Fcategory%3Ashow&category_id=4&page=1&site_domain=default&sort=sort_access&sort_order=desc

エリアフリーで聴けるradikoプレミアム会員

radiko側でエリアの修正してもらえないが地元エリアの放送を聴きたい場合や、別のエリアで放送されている番組をどうしても聴きたい場合は、月額385円でプレミアム会員に登録することで全国の番組を聴くことが出来るようになります。

詳しくはradikoのサイトで確認してください。

https://radiko.jp/rg/premium/

radi.shインストール

最初にradi.shを実行するために必要なアプリケーションをインストールします。

$ sudo apt install curl
$ sudo apt install libxml2
$ sudo apt install libxml2-utils
$ sudo apt install jq
$ sudo apt install ffmpeg

※2022-05-05 インストールするアプリケーションはlibxml2-utilsでしたが、libxml2と誤記していたので修正しました。

※radi.shを動作させるために必要な、xmllintが含まれているパッケージがlibxml2-utilsとなります。

次にgitを使ってradi.shをダウンロードしてきます。

$ git clone https://github.com/uru2/radish.git

radishディレクトリがダウンロードされてくるので、中身を確認してみてください。

$ ls -l radish/
total 24
-rw-rw-r-- 1 tamohiko tamohiko  1088 Jan  2 10:40 LICENSE
-rwxrwxr-x 1 tamohiko tamohiko 12538 Jan  2 10:40 radi.sh
-rw-rw-r-- 1 tamohiko tamohiko  3412 Jan  2 10:40 README.md

radi.shというのが、ラジオを録音するためのスクリプトになります。

録音方法

録音自体はとても簡単で、下記のようにスクリプトを実行するだけリアルタイム録音を行うことができます。

$ radi.sh -t 録音対象サイト -s 放送局ID -d 録音時間(分)-o "出力ファイル名"

録音対象サイトと放送局IDはradish.sh -lコマンドで一覧表示させることができます。

Record type部分に表示されているのが録音対象サイトで、sapporo-r1やHBCといった部分が放送局IDとなります。

./radi.sh_org -l | grep -A 3 Record
Record type: nhk
  sapporo-r1: 札幌 R1
  sapporo-fm: 札幌 FM
  sendai-r1: 仙台 R1
--
Record type: radiko
  HBC: HBCラジオ
  STV: STVラジオ
  AIR-G: AIR-G'(FM北海道)
--
Record site type: lisradi
  20006: リスラジプレミアム
  20003: リスラジ寄席
  30058: FM ABASHIRI
--
Record type: shiburadi
  None

radikoプレミアム会員の場合

radikoプレミアム会員の場合は、ログイン用のメールアドレスとパスワードを指定してください。

$ radi.sh -t radiko -s 放送局ID -d 録音時間(分)-o "出力ファイル名" -i "メールアドレス" -p "パスワード"

オプション説明

radi.shスクリプトを実行する際のオプションについて説明します。

-t 録音対象サイト

録音を行う対象のサイトを指定します。

  • nhk: らじるらじる
  • radiko: radiko
  • lisradi: ListenRadio(リスラジ)
  • jcba: JCBAインターネットサイマルラジオ
  • shiburadi: 渋谷のラジオ

radi.sh -lコマンドを実行すると表示される、Record typeの項目で確認することができます。

-s 放送局ID

$ radi.sh -lで表示される放送局IDを指定します。

数が非常に多いので一覧の記述は省略しますので、実際にコマンドを実行して確認してください。

渋谷のラジオを録音したい場合は、放送局IDを指定する必要はありません。

-d 録音時間(分)

録音を行う時間を分単位で設定します。

-o 出力ファイル名

指定しない場合は「放送局ID_年月日時分秒.m4a」でファイルが作成されます。

-i メールアドレス(radikoプレミアムログイン用)

radikoプレミアム会員ログイン用のメールアドレスを指定します。

-p パスワード(radikoプレミアムログイン用)

radikoプレミアム会員ログイン用のパスワードを指定します。

-l

録音対象サイト毎に放送局IDと放送局の名前を一覧表示します。

録音例

radikoで東京FMの番組を5分する場合のコマンドとなります。

$ cd radish
$ ./radi.sh -t radiko -s FMT -d 5 -o "$(date "+%Y%m%d_%H%M%S")_TOKYO-FM.m4a"

radi.shスクリプトがあるディレクトリに移動してから実行していますが、radi.shをフルパスで指定しても問題ありません。

録音が成功すると、録音を開始した「年月日_時分秒_TOKYO-FM.m4a」といったファイルが作成されます。

20220108_204942_TOKYO-FM.m4a 

-oで指定する出力ファイル名には特に決まりはないので、お好きな名前を指定してもらって構いません。

録音用スクリプト作成

録音したい番組ができるたびにradi.shを毎回入力するのが面倒なので、下記のようなスクリプトを作成して使いまわしています。

REC_DIRで設定している録音データ保管用のディレクトリは、事前に作成しておく必要があります。

#!/bin/bash

# radi.sh フルパス設定
RADHISH='/home/tamohiko/radish/radi.sh'

# 録音対象サイト設定  
# nhk:らじるらじる
# radiko:radico
# lisradi:ListenRadio(リスラジ)
# jcba:JCBAインターネットサイマルラジオ
# shiburadi:JCBAインターネットサイマルラジオ
REC_TYPE='nhk'

# 放送局ID設定 
STATION_ID='r2'

# 録音時間設定 単位(分)
REC_TIME='16'

# 録音データ保管ディレクトリ
REC_DIR='/home/tamohiko/NHK-R2'

# 録音データファイル名
REC_FILE='中学生の基礎英語レベル2'

$RADHISH -t $REC_TYPE \
         -s $STATION_ID \
         -d $REC_TIME \
         -o "$REC_DIR/$(date "+%Y%m%d_%H%M%S")_$REC_FILE.m4a"

これは「らじるらじる」で中学生の基礎英語レベル2を録音するために作成したスクリプトですが、別の番組を録音したい場合でも変数部分を書き換えるだけで簡単に使いまわしできるようになっています。

予約録音

radi.shスクリプトには予約録音を行う機能がないので、予約録音を行いたい場合はcrontabやatコマンド組み合わせて録音を行う必要があります。

  • crontab: 決まった時刻に繰り返し放送される番組の録音
  • at: 一度きりの番組を日時指定で録音

予約録音時の注意点

ネット配信ラジオは、ラジオの本放送に比べると配信までに若干遅延が発生しますので、録音時間は1〜2分ほど多めに指定しておく必要があります。

録音を行う機器の時間が正確であるか確認してください。

cronとatどちらの場合も、まずは1~2分後の時間を設定して問題なく録音できるかの動作確認は必ず行いましょう!

crontab 繰り返し録音

決まった時間に放送される番組を、繰り返して録音したい場合はcrontabをします。

crontabを設定する場合は、下記の手順で作業を行うことをおすすめしています。

  • crontab -l > ファイル名で設定内容を書き出す
  • 書き出したファイルを編集
  • 編集したファイルを使用してcrontabに設定を読み込ませる

この方法だと、編集前のcrontab設定が残るため、設定を間違って消してしまった場合なども直ぐに元に戻すことができます。

作業例

crontabに登録されている設定をファイルに書き出します。(何も設定されていない場合は中身がないファイルが作成されます)

書き出すファイル名は、crontab_年月日_時刻.txtといった名前にしています。

$ crontab -l > crontab_$(date "+%Y%m%d_%H%M%S").txt

書き出された設定に、ラジオ番組を録音するための設定を追記していきます。

$ vi crontab_年月日_時刻.txt

crontabの書式は左から、分 時 日 月 曜日 コマンドという項目になっています。

下記は、平日の6時15分に事前に作成した録音用スクリプトで録音行う設定となります。

15 06 * * 1-5 /home/tamohiko/NHK-R2_BasicEnglish_level2_rec.sh

ファイルの編集が完了しましたら、crontabに読み込ませて設定を反映させます。

$ crontab crontab_年月日_時刻.txt

crontabに設定されている内容はcrontab -lで確認することができます。

$ crontab -l

crontabの設定方法は下記のページで説明していますので、参考にしてみてください。

https://www.server-memo.net/tips/crontab.html

録音用スクリプトを使用しない場合

録音用のスクリプトを使用しない場合は、直接radi.shスクリプトを登録してください。

00 16 * * * /home/tamohiko/radish/radi.sh -t radiko -s FMT -d 5 -o /home/tamohiko/$(date "+\%Y\%m\%d_\%H\%M\%S")_TOKYO-FM.m4a

これは毎日16:00からradikoで東京FMを5分録音という設定例となります。

at 一度きりの録音

一度きりの番組を予約録音する場合はatコマンドを使用します。

-tオプションで録音を行う日時を指定して、-fオプションで録音用スクリプトを指定します。

$ at -t 年月日時分 -f 録音用スクリプト 

2022年1月8日の20時30分に録音開始したい場合は下記のように設定します。

$ at -t 202201082030 -f /home/tamohiko/radio_rec_test.sh 
warning: commands will be executed using /bin/sh
job 4 at Sat Jan  8 20:30:00 2022

「warning: commands will be executed using /bin/sh」と表示されますが、特に気にする必要はありません。

録音用スクリプトを使用しない場合

at -t で録音を開始する年月日時間分を指定すると、対話形式で実行するコマンドを設定できるようになります。

実行するradi.shスクリプトの設定が終わりましたら、Ctrl + d キーを押下して、atコマンドの設定を終わらせます。

$ at -t 年月日時間分
at > 実行するradi.shスクリプト
at > Ctrl + d キーを押下

2022年1月9日の13時30分から、東京FMを5分間録音する場合の設定例となります。

$ at -t 202201091330
warning: commands will be executed using /bin/sh
at> /home/tamohiko/radish/radi.sh -t radiko -s FMT -d 5 -o "/home/tamohiko/$(date "+%Y%m%d_%H%M%S")_TOKYO-FM.m4a"
at> <EOT>  # Ctrl + d キーを押下すると表示されます

atコマンドの使用方法については下記のサイトでも解説していますので、よかったら参考にしてみてください。

https://www.server-memo.net/tips/at.html

コメント

タイトルとURLをコピーしました