Raspberry Piをインターネットラジオ(radiko等)の再生環境にしたらとても快適だった!CUI操作編radikoやサイマルラジオを聞いてみよう!

ども、まーくです。皆さんラジオ聞いてますか?

我が家には、Amazonのecho dotAnkerSound Core miniなど「とりあえずラジオを聞く環境」はあったのですが、操作の手間や音質がイマイチ、時間遅れがかなりあるなどやや不満に思っていました。ラジカセ(死語?)もありません!

ふと、インターネットラジオをラズパイで聞けば良いじゃ無いか!と思い立ち、やったことをまとめました。

本記事では、ターミナルからコマンドを打って、radikoサイマルラジオの各番組を再生することを目指します。

なんでわざわざラズパイでインターネットラジオ?という点については後半に書いてます^^

 

準備した物

全体像↓

 

再生環境の構築

まずは、お約束のアップデートから。

sudo apt-get update
sudo apt-get upgrade

音源は、以下サイトより。使い方は後で説明します。

 

万能プレイヤー Mplayerのインストール

サイマルラジオなら、これだけで再生環境が整います!

sudo apt-get install -y mplayer

 

放送局(音源)の探し方

  1. パソコンでサイマルラジオにアクセスして
  2. 聞きたい放送局を見つけたら、
  3. それぞれの放送局の「放送を聞く」ボタン(音声の方)を右クリックして、
  4. URLをコピーします。
    ※URLは、〜〜.asxとなっているものを選びます。

 

mplayerで再生する!

ラズパイにsshでログインするなどして、mplayerの後に以下のように打ち込みます。

$ mplayer -playlist ${URL}

${URL}には、先に調べた放送局のURLを入れます。

例えば、関東の「FMぱるるん」だと以下のようになります。

$ mplayer -playlist http://www.simulradio.info/asx/fmpalulun.asx

文字がずらずらっと表示された後バッファリングが始まり、数秒したら再生が始まります。
うまく再生されたでしょうか?

 

シェルスクリプトにまとめる

よく聞く放送局はシェルスクリプトとしてパスが通った所に置いておくと便利です!

$ mkdir ~/bin/
$ vim radio-fmpalulun.sh
 #!/bin/bash
 mplayer -playlist http://www.simulradio.info/asx/fmpalulun.asx

実行権をつけましょう。

$ chomd +x radio-fmpalulun.sh

あとは、

radio-fmpalulun.sh

と打ち込んで実行すれば放送が始まります(^o^)

 

radiko再生用スクリプトを入手!

ネットを探すと色々な方がradikoの録音・再生用スクリプトを紹介してくださっています。
あれこれ試してみた結果、こちらのスクリプトを使う事にしました。

git cloneします。

$ cd ~/git/
$ git clone https://gist.github.com/836952a6b09e540eb6a3.git
$ cd 836952a6b09e540eb6a3/

 

スクリプトを修正する

記事執筆時点ではこのままでは再生されません
radikoのプレーヤー変更に合わせてスクリプトを修正(※)する必要があります。

※修正方法はコチラの情報を参考にしました。

これに加えて、ワーキングディレクトリを/dev/shm にしたりと少々手を加えています。

変更内容はコチラ。(diffの結果なので、パッチファイルとして保存して使えます)

--- org/radiko.sh	2018-05-17 00:45:28.361873732 +0900
+++ radiko.sh	2018-05-12 18:29:19.133089875 +0900
@@ -2,8 +2,10 @@
 # https://mtunn.wordpress.com/odroid-u2★セットアップ/radikoの録音・再生(archlinux)/
 
 pid=$$
-wkdir='/var/tmp'
-playerurl=http://radiko.jp/player/swf/player_3.0.0.01.swf
+#wkdir='/var/tmp'
+wkdir='/dev/shm'
+#playerurl=http://radiko.jp/player/swf/player_3.0.0.01.swf
+playerurl=http://radiko.jp/apps/js/flash/myplayer-release.swf
 playerfile="${wkdir}/player.swf"
 keyfile="${wkdir}/authkey.png"
 auth1_fms="${wkdir}/auth1_fms_${pid}"
@@ -50,7 +52,7 @@ authorize() {
   # get keydata (need swftool)
   #
   if [ ! -f ${keyfile} ]; then
-    swfextract -b 14 ${playerfile} -o ${keyfile}
+    swfextract -b 12 ${playerfile} -o ${keyfile}
 
     if [ ! -f ${keyfile} ]; then
       echo "[stop] failed get keydata (${keyfile})" 1>&2 ; exit 1
@@ -62,8 +64,8 @@ authorize() {
   #
   wget -q \
     --header="pragma: no-cache" \
-    --header="X-Radiko-App: pc_1" \
-    --header="X-Radiko-App-Version: 2.0.1" \
+    --header="X-Radiko-App: pc_ts" \
+    --header="X-Radiko-App-Version: 4.0.0" \
     --header="X-Radiko-User: test-stream" \
     --header="X-Radiko-Device: pc" \
     --post-data='\r\n' \
@@ -95,8 +97,8 @@ authorize() {
   #
   wget -q \
     --header="pragma: no-cache" \
-    --header="X-Radiko-App: pc_1" \
-    --header="X-Radiko-App-Version: 2.0.1" \
+    --header="X-Radiko-App: pc_ts" \
+    --header="X-Radiko-App-Version: 4.0.0" \
     --header="X-Radiko-User: test-stream" \
     --header="X-Radiko-Device: pc" \
     --header="X-Radiko-Authtoken: ${authtoken}" \

パッチファイルとして使う場合、上のテキストを全てコピーして、radiko.sh.patchとして保存します。

git cloneした radiko.shがあるディレクトリにパッチファイルがあるとして、

$ patch radiko.sh < radiko.sh.patch

とすればOKです。

念のため正しく書き換えられているか確認してください。
ついでに実行権も付与しておきます。

$ chmod +x radiko.sh

 

radiko.shで再生する!

では、再生してみましょう!
pオプション(play mode)に、ラジオNIKKEI第2(RN2)を指定します。

$ ./radiko.sh -p RN2

一定時間経過後に自動で停止するようにするためにはtオプションで分単位の数字を指定します。

$ ./radiko.sh -p -t 1 RN2

開始から1分で切れると思います!

 

チャンネル(放送局コード)を調べる

指定できるチャンネルはたくさんあります。

ラジオNIKKEI第1 RN1
ラジオNIKKEI第2 RN2

放送局一覧をAPIで提供してくださっているサイトがありますので、コチラでご自身の地域で聞けるチャンネルを探してみてください!

 

なぜ、ラズパイでインターネットラジオを聞くのか?

パソコンのWebブラウザを使えば簡単に再生できるし、radikoのスマホアプリもあるのになぜ?
と思われるかもしれません。

それには理由があります!

マークがラズパイ環境をオススメする理由はコチラ。

  • スマホを占有されたくない
  • PCのシステム音に邪魔されない & 作業の邪魔にならない
  • 流しっぱなしでも気にならない
  • タイマー/アラーム再生ができる
  • 安定のコマンド駆動

カラダの一部、生活の一部に組み込まれているPCとスマホ。
スマホをチェックしながらPCをいじるのは日常茶飯事。なので、作業中のパソコンから操作はできるけれど、極力邪魔にならない方法が必要でした。

 

朝の目覚めにラジオをかける

cronにコマンドを登録して、モーニングコールとして指定したラジオをかける方法です。

まず、ラジオ再生用のスクリプトを作っておきます。
mplayerを使用する場合は、時間が経てば自動的に切れるようtimeoutコマンドで300秒(5分)を指定しています。

スクリプトは、piのホームにあるbinディレクトリに設置します。

$ cd ~/bin/

スクリプトを編集します。

$ vim morning-radio.sh
#!/bin/bash
# サイマルラジオの場合(mplayerをtimeoutコマンドで終了させます)
timeout 300 mplayer -playlist http://www.simulradio.info/asx/fmpalulun.asx
# radiko.shの場合はコチラ(↑の行をコメントアウトして、↓の先頭#を消して下さい。
# /home/pi/bin/radiko.sh -p -t 5 RN2

実行権を付けます。

$ chmod +x morning-radio.sh

crontab毎朝7時30分に実行するように指定します。

crontab -e を実行して、以下のように編集します。

# m h dom mon dow command # この行の下に記入して保存。
 30 7 * * * /home/pi/bin/morning-radio.sh

これで毎朝7時半にラジオが流れるようになりました!

 

まとめ: ラズパイでインターネットラジオを聞くにはmplayerやradiko.shが使える。

Raspberry Piに安価なスピーカーを接続してインターネットラジオの再生環境を作りました。
apt-getで簡単にinstallできるmplayerや、有志の方が作って下さっているradiko.shを修正して手軽にインターネットラジオを聞ける環境が整いました!

今後はGUIを付けてタッチパネル付きディスプレイで操作したり、JuliusやAlexaを使って操作できるように拡張してみたいと思います(^o^)

それではみなさん、よいラズパイ生活を!

 

参考サイト

はじまりはここから!

radikoの録音・再生スクリプトでお世話になりました。

スクリプトの修正でお世話になりました!

timeoutコマンドを知りました!