Raspberry PiでRadikoの自動録音サーバーを作る

JUNKやANN等の深夜ラジオが好きでいつも聴いているのですが、深夜にリアルタイムで聴くのは難しいので、録音して仕事中とか運動するときとかに聴いています。そのため毎週の放送を自動で録音できる環境を構築するためにRaspberry Piを購入しました。

Radikoのタイムフリー

Radikoにはタイムフリー機能がありますが、24時間以内、合計3時間までというめんどくさい制限があるためいつでも自由に聴くというわけにはいきません。
また運動中にApple Watchのみで聴くためにはRadikoではなくミュージックアプリにデータを転送して聴くしか方法がありません。

Raspberry Piを使って録音する

毎週聴いているラジオを何とか録音できる方法がないかと調べてたどり着いたのがパソコンで録音する方法。WindowsでRadikoolというアプリで録音することもできますが、PCを起動している必要があるし、Windows版は開発終了となり今後使えなくなる可能性があるので、Raspberry Piを使う方法を選択しました。録音のためにメインのパソコンに電源を入れなくてもいいので毎日のようにラジオを録音するならおすすめの方法です。

必要なもの

まずはRaspberry Pi本体。ケースやケーブルもついてるスターターキットが便利です。こんなに小さいのにHDMI、USB×4、有線LAN、無線LANもついてる。

OSをインストールするためのmicroSDカード。容量は16GBでも余裕なくらいですが安いので32GBにしました。

おそらく初期セットアップしか使いませんがキーボードとマウス。
邪魔にならないようにとにかく小さくて安いやつ。

あとはモニタとHDMIケーブル。

Raspberry PiへOSのインストール

インストールや初期設定はこちらを参考にしました。

Raspberry Pi 初回設定(購入 + OSインストール + セキュリティ設定)- Qiita

Raspberry Piのダウンロード

Raspberry PiのサイトからOSをダウンロードします。とりあえずNOOBSってやつをダウンロードすればOK。

NOOBS

microSDをフォーマット

SDカードフォーマッターであらかじめmicroSDをフォーマットしておきます。

Raspberry Piのインストール

ダウンロードしたNOOBSの中身をmicroSDの中へコピーしRaspberry Piへ取り付けます

マウスとキーボード、USB電源ケーブル、そしてHDMIケーブルをモニタにつなぎます。USB電源ケーブルはパソコン等のUSBポートだと電力不足になりがちなのでスマホの充電器など電源から直接つなげるUSBポートにつなげます

電源を入れるとすぐにインストール画面になります。
画面下の言語設定で日本語を選択し、Raspbian Fullを選択してインストールします。ここでWiFiに接続してネットワーク経由でインストールすることもできます。

10分~20分程度でインストールは終了します。

その後デスクトップが表示され、ウィザードに従って設定すればインストールは終了です。めちゃくちゃ簡単。

Office系とか開発用のアプリケーションがいろいろ入っていてディスクの無駄なのでいくつか削除しました。

リモートデスクトップの設定

とりあえずマウスとキーボード、モニタをつないで初期設定をしましたが、今後はWindowsからリモート接続して操作したかったのでリモートデスクトップ接続ができるアプリケーションをインストールしました。

Windowsパソコンからraspberrypi3にリモートデスクトップで接続する – Qiita

sudo apt-get update
sudo apt-get install xrdp
cd /etc/xrdp/
sudo wget http://w.vmeta.jp/temp/km-0411.ini
sudo ln -s km-0411.ini km-e0010411.ini
sudo ln -s km-0411.ini km-e0200411.ini
sudo ln -s km-0411.ini km-e0210411.ini
sudo service xrdp restart

Linuxはふわっとしか覚えてないので書かれたまま実行しました。

Windowsのリモートデスクトップ接続からRaspberry PiのIPアドレスを入力して上記画面が表示されれば成功です。以降はキーボードやマウスは必要なくなります。

Radikoの録音設定

録音に必要なパッケージをインストールします。

sudo apt-get install rtmpdump swftools libxml2-utils libav-tools ffmpeg libavcodec-extra

gitから録音スクリプトをダウンロードします。

git clone https://gist.github.com/3956266.git

場所は/home/piにrec_radiko.shを保存しました。そのままだと使えないのでパーミッションで実行権限を付与します。

デフォルトではmp3で保存するようになっていますが、m4aにしたかったので152行目くらいにあるffmpegのところを書き換えました。

ffmpeg -loglevel quiet -y -i "/tmp/${channel}_${date}" -acodec aac -strict experimental  -ab 48k "${outdir}/${PREFIX}_${date}.m4a"

ラジオなのでそれほどビットレートは必要ないので48kにしました。

/home/pi/rec_radiko.sh TBS 1

試しに上記のように1分程度録音して動作確認をします。
特に設定を変えていなければrec_radiko.shと同じディレクトリに録音データが保存されます。

crontabで自動録音設定をする

適当な場所(ここでは/home/pi/ドキュメント)に新規ファイルを作り名前をradiko.txtにします。エディタで開いて録音する設定を書き込みます。

# ANN
0 3 * * 4 /home/pi/rec_radiko.sh LFR 90 /home/pi/音楽 "佐久間宣行のオールナイトニッポン0"
0 1 * * 7 /home/pi/rec_radiko.sh LFR 120 /home/pi/音楽 "オードリーのオールナイトニッポン"

# JUNK
0 1 * * 2 /home/pi/rec_radiko.sh TBS 120 /home/pi/音楽 "JUNK 伊集院光・深夜の馬鹿力"
0 1 * * 5 /home/pi/rec_radiko.sh TBS 120 /home/pi/音楽 "JUNK おぎやはぎのメガネびいき"
0 1 * * 6 /home/pi/rec_radiko.sh TBS 120 /home/pi/音楽 "JUNK バナナマンのバナナムーンGOLD"

上記の設定は、
分 時 日 月 曜日 実行ファイル チャンネル 録音時間(分) 保存場所 保存ファイル名
の順に並んでいます。
例えばオードリーのオールナイトニッポンなら、土曜日25:00~27:00なので、月曜日を0として7番目の曜日である日曜日の1時0分にLFR(ニッポン放送)を120分録音して「オードリーのオールナイトニッポン」という名前で/home/pi/音楽に保存するという設定です。

録音データをGoogle Driveに自動アップロード

録音のたびにRaspberry Piからデータをコピーするのは面倒なので、Google Driveに自動アップロードするように設定をします。

[RaspberryPi]google driveにファイルをアップロードする

下記コマンドでgdriveをダウンロードします。/home/piに保存。

wget -O gdrive https://docs.google.com/uc?id=0B3X9GlR6EmbnVXNLanp4ZFRRbzg&export=download

実行権限を付与します。

chmod +x gdrive

下記コマンドを入力するとGoogleへのURLが表示されるので、そのURLにアクセスしてGoogleアカウントにログインするとGoogle Driveへのアクセスが可能になります。

gdrive about

rec_radiko.shを開き、最終行の手前に下記のコマンドを入力することで録音終了後にアップロードします。

if [ $? = 0 ]; then
  rm -f "/tmp/${channel}_${date}"
  /home/pi/gdrive upload --parent (前述のURLにアクセスして表示されたコード) "${outdir}/${PREFIX}_${date}.m4a"
fi

録音とアップロードが成功すればGoogle Driveに番組名_日時のファイル名でデータが保存されます。

あとはiTunes経由でiPhone→Apple Watchと転送すればいつでもApple Watchで聴くことができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA