Raspberry Pi4 でラジオ録音サーバーを構築する

ラジオの録音は [rec_radiko.sh](https://gist.github.com/matchy2/3956266) を使用し、グーグルドライブに保存していました。しかし2020年12月頃より、Flashの関係で録音ができなくなりました。
そこで、新たに登場したスクリプトを使い、ラジオの録音サーバーを構築、sambaでPCに共有してみます。


#スクリプトについて

<dl>
<dt>1. radish</dt>
<dd>オンタイムで録音ができるスクリプトです。<br>
らじるらじる、ラジコ、ListenRadio、JCBAインターネットサイマルラジオ、渋谷のラジオに対応しています。</dd>
<br>
<dt>2. rec_radiko_ts</dt>
<dd>番組終了後、ラジコのタイムフリーの音声ファイルを落とすことができるスクリプトです。<br>放送中にずっと、録音させなくて良いので便利です。</dd>
</dl>

※ どちらのスクリプトもラジコのエリアフリーに対応しているようです。

# 1. radish
## 導入準備

[radish](https://github.com/uru2/radish) を動かすのに必要なものを入れます。

```
$ sudo apt-get install curl
$ sudo apt-get install libxml2
$ sudo apt-get install jq
$ sudo apt-get install ffmpeg
```


## スクリプトのダウンロード

Githubより [radish](https://github.com/uru2/radish) をダウンロードします。

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

この時点では、/home/pi/radish にスクリプト(radi.sh)が入っています。
それで、後々やりやすくするために、radi.sh を /home/pi の直下に移動をします。
この操作は、VNCなどを使い、画面で行うのがやりやすいかと思います。


次に、実行の権限を与えます。 

```
$ chmod 755 radi.sh
```


## 録音テストと定期実行(cron)設定

録音の試しに・・・

```
$ /home/pi/radi.sh -t radiko -s TBS -d 1 -o /home/pi/test.m4a
```

ラジコでTBSのラジオを1分間録音できたはずです。
$ ls で、test.m4a があるかを確認します。

次に定期的に番組のを録音をするために、cronの設定をします。

```
$ sudo crontab -e
```

コメントアウトされた文がたくさん出てきます。
一番下の行に、録音したい番組を入力します。

```
# 入力のしかた
（分）（時間）(日)(月)(曜日) /home/pi/radi.sh -t (録音対象サイト) -s (録音したい局ID) -d (録音時間) -o (保存先パス/ファイル名)_$(date "+\%Y-\%m-\%d").m4a
```

以下に例を記します。

```
# 毎週月曜日、朝5:00から、らじるらじるでNHK-FMの番組を50分間録音する
00 05 * * 1 /home/pi/radi.sh -t nhk -s JOAK-FM -d 50 -o /mnt/hdd1/radio/OngaknoIzmi_$(date "+\%Y-\%m-\%d").m4a
```

次に、cronを使い録音したファイルを、外付けのHDDに保存します。
[sambaの設定](#sambaの設定)をご覧ください。

### 補足
- (日)(月)など、使わない部分は ＊ とします。
- 曜日は、月曜日を1として、日曜日を7(0も可)となっています。
- 録音したい放送局のIDは、$ ./radi.sh -l で一覧を見ることができます。<br>なお、渋谷のラジオはIDの指定が不要のようです。

- 録音対象サイトとコードは以下の通りです。

| サイト名 | コード |
|:-:|:-:|
|   らじるらじる|   nhk|
|   ラジコ|   radiko|
|   ListenRadio|   lisradi|
|   サイマルラジオ|   jcba|
|   渋谷のラジオ|   shiburadi|

#２. rec_radiko_ts

## 導入準備

[rec_radiko_ts](https://github.com/uru2/rec_radiko_ts) を動かすのに必要なものを入れます。
なお、radish を導入した方はインストールの必要ありません。

```
$ sudo apt-get install curl
$ sudo apt-get install libxml2
$ sudo apt-get install ffmpeg
```


## スクリプトのダウンロード

Githubより [rec_radiko_ts](https://github.com/uru2/rec_radiko_ts) をダウンロードします。
radish同様、rec_radiko_ts.sh のファイルを /home/pi の直下に移動します。

```
$ git clone https://github.com/uru2/rec_radiko_ts.git
```

そして、実行の権限を与えます。 

```
$ chmod 755 rec_radiko_ts.sh
```


## ダウンロードテストと定期実行(cron)設定

試しに・・・

```
$ /home/pi/rec_radiko_ts.sh -s QRR -f (昨日の年月日)0７00 -t (昨日の年月日)0800 -o /home/pi/Nanakyu.m4a
```

※ 昨日の年月日は、20210101 といった具合です。
これでラジコから、昨日の朝に放送した番組が、ダウンロードできたはずです。
$ ls で、Nanakyu.m4a があるかを確認します。

定期的に番組をタイムフリーからダウンロードするために、cronの設定をします。

```
$ sudo crontab -e
```

radish も導入された方は、その下に rec_radiko_ts の入力をします。

```
# 入力のしかた
（分）（時間）(日)(月)(曜日) /home/pi/rec_radiko_ts.sh -s (録音対象サイト) -f `date +\%Y\%m\%d`(番組開始時間) -t `date +\%Y\%m\%d`(番組終了時間) -o (保存先パス/ファイル名)_$(date "+\%Y-\%m-\%d").m4a
```
★ この場合の(分)(時間)は、**番組終了時間以降**に設定する必要があります。
　例えば、12:30に番組が終了する→12:31以降にcronで実行可能

では、実際の入力例です。

```
# 毎週日曜日、ラジコで10:00~11:55放送のTBSのラジオを、12:00にダウンロードしたい。
00 12 * * 7 /home/pi/rec_radiko_ts.sh -s TBS -f `date +\%Y\%m\%d`1000 -t `date +\%Y\%m\%d`1155 -o /mnt/hdd1/recorded/radio/Nichiten_$(date "+\%Y-\%m-\%d").m4a
```

# sambaの設定

録音できたファイルを外付けHDDに保存します。
そして、sambaでMacやWindowsからアクセスできるようにします。
詳しくは、以下の記事をご参考ください。
　ohbashunsuke様執筆の、[Macとラズパイ間でファイル転送したいのでラズパイをファイルサーバー化する](https://qiita.com/ohbashunsuke/items/0244826d68fb9109e922)
　HyunwookPark様執筆の、[Raspberry Piの共有フォルダにWindowsから接続(samba install)](https://qiita.com/HyunwookPark/items/d93066a8965ac5c1ef01)

# 参考サイト

[【2020年12月改訂】Raspberry PiでRadikoの自動録音サーバーを作る](https://digitalyze.net/raspberry-pi_rec-radiko/#toc10)
[【入門】cron（クロン）設定・書き方の基本](https://www.kagoya.jp/howto/rentalserver/cron/)

# おわりに

以前のように、グーグルドライブへ自動保存はできなくなったが、タイムフリーからのダウンロードが可能になったのは便利です。録画サーバーも並行運用している身としては、処理が重くなりにくくするのに役立つと思います。

これらのスクリプトを製作してくださった、[uru2](https://github.com/uru2)様には深く感謝いたします。