Raspberry Pi用 radiko 簡易聴取スクリプト

2023.10 / 2024.4説明修正

あなたも Raspberry Pi で簡単ラジオ生活してみませんか。(^-^)

■動作確認環境

H/W: Raspberry Pi 2 Model B
OS: Raspberry Pi OS (Bullseye)

■できること・できないこと

できること: radikoとNHKラジオ、その他streaming放送を聴く。コンソール&ブラウザから操作。超簡単に導入(と思う)。
できないこと: 録音。 (録音は別プログラムにて対応→こちら

(注)ブラウザからの操作は、Webサーバをインストールして本スクリプトをcgiとして動かすことが必要です。(簡易説明あり)

■準備

ffmpeg と jq モジュールが必要なのでをインストールします。 以下のコマンドを実行します。
(インストール済みであれば、この項目は無視してください)
(システムによっては curl が入っていない場合があるので、そのときは同様にインストールしてください)

$ sudo apt install ffmpeg
$ sudo apt install jq

■設置方法&設定方法

[ lis_radiko.tar.gz ] をダウンロードして、適当なディレクトリに置きます。解凍して出来た lis_radiko.sh に実行権限を与えます。

$ tar zxvf  lis_radiko.tar.gz
$ chmod +x  lis_radiko.sh

エディタでlis_radiko.shを開いて、初期設定します。設定が必要なのは以下の個所です。

export AUDIODEV='plughw:Headphones'  # 出力スピーカーの指定 (後述)

mail=''   # ラジコプレミアム (エリアフリー)
pass=''   # 同上

■出力スピーカーの指定

$ aplay -l を実行して、出力するスピーカーのデバイス名を調べます。aplay -l でエラーが出る場合は /etc/group をエディタで開いて audio のところにあなたのアカウント名を追加してください。アカウント名が hanako なら次のように記述してください。(記述後いちどログアウト&再ログインが必要かも

audio:x:29:pi,hanako  # ,(カンマ)を半角で追加してその後に hanako と記述

aplay -l が正常に表示される場合は、以下のようになります。(以下では無駄な行を省略してます。実際はもっと長い)

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: b1 [bcm2835 HDMI 1], device 0: bcm2835 HDMI 1 [bcm2835 HDMI 1]
  (省略)
card 1: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
  (省略)
card 2: MicroII [Audio Advantage MicroII], device 0: USB Audio [USB Audio]
  (省略)

この表示を参考に export AUDIODEV='plughw:Headphones' の青字部分を希望の出力先に書き換えてください。 この例の場合ですと、次のようになります。

b1 → hdmi接続しているモニタ(テレビ等含む)のスピーカー
Headphones → raspberry piのHeadphone端子
MicroII → USB接続しているスピーカー

■動作確認

$ ./lis_radiko.sh [チャンネル名] を実行してradikoの放送が聞こえれば成功です。(スピーカーの音量に注意)

チャンネル名は http://radiko.jp/index/ にある各局のアドレス(URL)を見ればわかります。たとえばHBCラジオ(北海道・東北)なら HBC になります。ラジコプレミアム(エリアフリー)に未加入の場合はradiko側が判定している地域の放送しか聞けないので注意してください。 なおJOAK-FMは全国放送なのでテストに便利です。

$ ./lis_radiko.sh HBC    # 終了はCtrl+C
$ ./lis_radiko.sh JOAK-FM &   # 終了は $ ./lis_radiko.sh stop

ストリーミング放送の場合は、URLを""で囲って直接記述します。NHK第二なら以下の通りです。(参考:NHKの放送アドレス

$ ./lis_radiko.sh "https://radio-stream.nhk.jp/hls/live/2023501/nhkradiruakr2/master.m3u8"

音が出ない場合

$ ps aux | grep ffplay でプロセスが見える場合はスクリプト自体は正しく動いています。出力スピーカーから正常に音が出るかどうかを、音声ファイルなどでテストしてみてください。音が小さい場合はamixer等で調整してください。

■ブラウザから操作する

さて、ラジオを聴くのにいちいち raspberry pi にログインしてコマンドを打つのは面倒ですね。
raspberry piでWebサーバを稼働させておくとブラウザから操作することができます。

まず各自でWebサーバをインストールしてCGIを動かす設定をしてください。(簡易説明を下に用意しました)
次に lis_radiko.sh を適当な場所に設置してブラウザで次のようにアクセスしてください。ブラウザに「cgi ok!」と表示されればCGIは正常に動いています。

http://192.168.X.Y/lis_radiko.sh?test  ※192.168.X.Y はraspberry piのIP address

次に /etc/group に hanako を追加した要領でWebサーバのアカウント名を追加してください。www-data なら次の通りです。

audio:x:29:pi,hanako,www-data

次に radiko.js の以下の部分を、各自の環境に合わせて書き換えてください。

var sName = '192.168.X.Y';    // クエリ送信先サーバー

最後に /etc/group の設定を反映させるためWebサーバを再起動してください。(lighttpdなら$ sudo /etc/init.d/lighttpd restart)
そして radiko.html をブラウザで開き「NHK-FM」ボタンを押して音声が出れば成功です。 あとは radiko.html のソースを見ながら、各自の都合に合わせて放送局などを変更して使ってください。設定方法はソースを見ればわかると思います。

lighttpdのインストール&設定(簡易説明)

以下はWebサーバをはじめて導入する人向けの説明です。すでにWebサーバを導入済みの場合は既存の方を使ってください。

以下、順に実行し、lighttpd.confを編集。(データは /home/hanako/www に置くとする)

$ sudo apt install lighttpd
$ sudo cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.org
$ sudo [普段お使いのエディタ名] /etc/lighttpd/lighttpd.conf
# 以下の個所の右辺を "/home/hanako/www" に変更
server.document-root = "/var/www/html"

# 以下三行を lighttpd.conf ファイルの末尾に追加
static-file.exclude-extensions += ( ".sh" )
server.modules += ( "mod_cgi" )
cgi.assign = ( ".sh" => "" )

次に /home/hanako/www/index.html を自前で作成し、中に test と記述。 $ sudo /etc/init.d/lighttpd restart を実行。 ブラウザでhttp//192.168.X.Y/にアクセスして test と表示されたら成功です。 エラーが出る場合は設置ディレクトリ(hanakoとwww)のパーミッションが755であることを確認してください。 lis_radiko.shのパーミッションも755が必要です。

★本スクリプトをWebサーバに設置する場合の重大注意事項

本スクリプトはインジェクション攻撃への対策をとっていません。 lis_radiko.shは絶対に外部(インターネット側)からアクセスされないように注意してください。lis_radiko.shにアクセスできるのは必ずローカル環境からのみにしてください。

■おことわり

本スクリプトはalsaという旧タイプの音声出力方式を使っています。alsa方式は音声出力が競合すると問題がおこる場合もあるようです。ゲームをしながらラジオを聞きたい等、音声出力が競合する使い方をしたい場合にはpulseaudio方式への改造が必要かもしれません。 m(_'_)m

■免責

本スクリプトの使用により生じた損害について、当方は責任を負いません。

放送局側の仕様変更により、とつぜん使えなくなる可能性があります。

その場合でも制作者はスクリプト更新の義務を負いません。 あらかじめご了承ください。

◎謝辞

本スクリプトはuru様のスクリプトを参考にさせていただいています。

―バージョン情報―

最新版DL  version0.2  とりあえず公開