はじめに

ラジコがスタートして結構な年数になる。紆余曲折をへて、現在はラジコプレミアム(優良)に加入すれば、日本全国のAM/FMラジオが再生できるようになった。

また、タイムフリーサービスを利用することで、一週間さかのぼって番組を聴取できる。夢のような状況。

多くのWindows用のラジコ聴取アプリでは、番組表を利用した予約機能が搭載されている。語学番組を定期的に聞きたい人や、好きな番組が忙しくて聞けない人にとっては、まことにありがたい機能だ。

本記事は、Windowsではなく、ラズパイ(Raspberry Pi)で上記の機能を実現するという話。とりあえずラジコとらじるらじる療法の定期録音ができたので、その覚書。

準備

録音場所として、ホームディレクトリーを選択してもかまわないが、さすがに心持たない。そこで、適当なサイズのUSBメモリーを準備。今回は32GBのメモリーを用意した。

Windows上でこのメモリーをフォーマットする。その際、簿リウムラベルを設定しておくと後の設定がとても容易になる。usb01としてフォーマット終了。

ラズパイにUSBメモリーを装着する。空いているUSB端子であればどの場所でもかまわない。ラズパイにログイン、下記のように入力して、USBメモリーがマウントされていれば準備完了。

ls /media/pi/
↓
USB01

ラズパイの場合、新たにメモリーなどを装着すると、/media/pi/以下に自動でマウントされ、読み書きができるようになっている。

このとき、USB01は、フォーマット時の際に設定したボリュームラベル、英大文字。UNIXでは、ファイル名の大文字小文字の違いは厳密に区別されるので注意が必要。

最後にスクリプトを保存しておくために専用のディレクトリーを作成する。

mkdir ~/bin

ラジコを録音する

パッケージのインストール

ラジコを再生/録音するためには、複数のパッケージをインストールする必要がある。

事前準備として、パッケージリストの更新とインストールパッケージの更新を必ず行う。

sudo apt-get update
↓
sudo apt-get upgrade

まずは録音のためのパッケージをごっそりインストール

sudo apt-get install rtmpdump swftools libxml2-utils libav-tools

再生用のmplayerも必ずインストールする。後からわかったことだが、mplayerはCUI環境で音楽ファイルの再生ができて、URLを指定しての再生もできる。

sudo apt-get install mplayer

スクリプトのダウンロードと設置

今回利用させていただいたのは、radiko.sh。こちらからダウンロード

ダウンロードしたスクリプトはftpなどでラズパイに転送。あらかじめ作成した~/binディレクトリーに保存。

最後に、radiko.shに実行権限を付与する。今回は700、ユーザーのみにすべての権限を与えることとした。

設定はftpで行っても、シェルから行ってもかまわない。ログインしてシェル上で行うのであれば、以下のような手順となる。

cd ~/bin
    (保存先に移動)
↓
chmod 700 ./radiko.sh
    (権限の設定)
↓
ls -l ./radiko.sh
-rwx------ 1 pi pi 7344  7月 18  2018 radiko.sh
    (設定の確認)

動作テスト

まずは引数なしでスクリプトを実行してみる。Usage、使い方が表示されればスクリプトは実行可能な状態だ。

ラジコが再生可能か、引数を与えてスクリプトを実行する。

その前に、イヤホンでも安いヘッドホンでもかまわないので、ラズパイ本体のステレオミニジャックに差し込み、耳にイヤホンをあてる。

下記の入力で再生が始まれば大成功。今回はTBSラジオを再生してみた。異なる地域の方はチャンネルIDを適宜変更してほしい。

cd ~/bin
./radiko.sh -P TBS

ラジオの音声が聞こえたら、ctrl+cでスクリプトを強制終了する。

ラジオ番組を定期録音

radiko.shは指定した放送局を、保存先、録音時間などを設定して録音することができる。

しかし、単体では、スケジュールを指定して録音する機能は持っていない。この機能を有効にするためには、cronと組み合わせてスクリプトを実行する。

今回録音する番組は下記の通り。

番組名
日本全国8時です
放送局
TBSラジオ
放送時間
毎週月曜から金曜、午前8時から8時15分

この番組は全国ネットだと思われるので、チャンネルIDを地域ごとに書き換えれば、同じような実験ができるだろう。また、終了時間がはっきりしなかったため、8時15分としてみた。

cronを設定するためには、crontabコマンドを使う。本来はラズパイ上で設定の編集を行うのが一般的だが、今回はWindows上のエディターを使ってcron.txtを作成、crontabに読み込ませる方法をとる。

crontab.txtの内容は下記の通り。

MAILTO=""

0 8 * * 1-5 ~/bin/radiko.sh -d /media/pi/USB01 -t 16 TBS

radiko.shに与えた引数は次の通り。

-d
保存先ディレクトリー(/media/pi/USB01)
-t
録音時間(16)
TBS
チャンネルID(TBS)

なお、-tオプションで、録音時間が16分となっているが、これはラジコの遅延時間を考慮したもの。

作成したcron.txtをftpでサーバーに転送し、シェル上で下記のように入力、cronに設定を反映させる。

crontab cron.txt
   設定の読み込み)
↓
crontab -l
    (設定の確認)

crontab -lで先ほどの記述が反映されていればすべての準備は完了。誤りがなければ/media/pi/USB01以下にファイルが追加されていくはずだ。

ls /media/pi/USB01/
TBS_20190419_0744_22246.m4a
・・・

ファイルはftpでWindows側にダウンロードできる。実際に再生してみて、遅延時間や録音時間の長さを調整する参考にする。

終わりに

以上がradiko.shの基本的な使い方。-fオプションを付加すれば、ファイル名を直接指定することも可能。

また、スクリプトを直接変更することで、より高度で自分好みの結果を得ることができるかもしれない。

sanbaを導入して、Windowsとラズパイでディレクトリーを共有すると、よりシームレスな環境を構築することができる。

ラズパイは、小型ながら、用途を限定して使えばとても便利。ラジコの録音のような仕事には最適に思う。静穏、放熱も問題なし。ぜひ購入して挑戦してほしい。

参考サイト


戻る