raspberryPiでラジオサーバーを作るメモ

# ざっとやりたいこと
1. Radikoを録音
2. 音声ファイルで保存
3. localサーバーでpodcast化
4. 自分のiphoneに自動購買させて、
5. 勝手にダウンロードされている

こんな事を、PCではなく、
電力消費が少なくて付けっぱなしも気にならないraspberrypiでやりたい。

<img width="375" alt="IMG_6294.JPG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215645/25f50531-d1ce-f6be-8dc8-0d635a45368a.jpeg">

このページは
紹介する「良質記事」の補足・留意点の追加メモとなります。
まずは以下の紹介する記事をメインに読んでください。

**こちらの記事をメインに進めてください。
良質記事:radicastのまとめ
https://omiso46.blogspot.com/2018/05/raspberrypi-radiko-podcast_23.html**

*注意! あくまで、個人で楽しむものとしてやってください。作成したラジオサーバーを公開すると違法アップロードとなります。絶対に、非公開サーバーでひとりの楽しみとしてください。*

# ラズパイのラジオサーバー化には2つの方法があった。
作り出すその前に、

調べてみると、以下の2つがどうも良いとオススメされていました。
①radicast
②radigo

実はそれぞれメリット・デメリットがあります。

### radicast
- メリット
radikoから番組表を取得
番組名、番組詳細を取得できる。

- デメリット
番組最後までの録音しかない。
常に簡易サーバーが立ち上がっている必要がある。

### radigo
- メリット
時間指定録音ができる（15分だけ録音とか）
簡易サーバーの立ち上げは不要

- デメリット
podcast化部分は自分でWebServerを建てて、
rss化しないといけない。
番組内容も、番組名も自動取得なし

radigo参考
https://qiita.com/tinoji/items/5f57239de5772681c64a
作者さん
https://qiita.com/yyoshiki41/items/f81442d7dc2d0ddcf15b


**導入したのは、、radicast**
番組名、番組情報の取得できるのが大きいです。
これは本当にでかい。


# radicastの導入
しつこいですが、紹介の「良質記事」を参照のこと。
以下、記事を補足。

###「メディアのマウント定義とRAMDiskの有効化」
初級者で必要を感じないのであればしなくても良いと思います。
fstab内での、マウント定義を間違えると最悪OSが立ち上がらなくなる危険性がある。
（残念ながら私は一度やらかして全て無に帰しました。。）

tmpやlogに関してもRAMDisk化するとログ参照できない（毎回まっさらになるので。というよりメモリに持つだけなので）。
プログラムやインストールによっては一度tmpに展開したものを使うなどの処理があり、そういうものはエラーになってしまいます。
必然性がなければ、fstabの変更はしなくても良いと思います。

また、
OS:rasbianでUSBメモリを挿すと、
```/media/[username]/```
上記内に自動認識されるので、私はそこを利用しています。

私の設定は
username=pi
usbメモリ=rasUSB
と命名しています。
作業用ディレクトリを以下で用意しました。
```/media/pi/rasUSB/radio/podcast/```


### radicastの取得
radicastをフォークしたリポジトリから取得
https://github.com/tkhs/radicast

オリジナルから改良部分がありますのでこちらがオススメです。

- 無劣化録音対応
- 05時開始番組が録音できない不具合の対応
- チャンネルのアイコン設定
- 番組のアイコン取得
- 他  

私は、特にアイコンが欲しかった。。

### radicastの自動起動設定に関して
何度か試したのですが、自動起動は失敗してしまう。
恐らく、事前に必要なprocessが立ち上がる前にradicastが自動起動しちゃって失敗してるようです。
試行錯誤したけど、事前processが特定できなかったので、
いっその事、数秒遅らせてからコマンド実行させることにしました。

まず、「良質記事」から以下を変更。

```/etc/systemd/system/radicast.service

ExecStart=/home/pi/radio/radicast_daemon.sh
```
直接、radicastをスタートするのでなく、shellを挟み込みます。

そしてshellを作成

```/home/pi/radio/radicast_daemon.sh

#!/bin/bash

sleep 30

#実行
/home/pi/go/bin/radicast -title 俺のらじお -config /media/pi/rasUSB/radio/podcast/config.json -host 192.168.0.10 -output /media/pi/rasUSB/radio/podcast -bitrate 96k -buffer 30
```

軽く解説

- sleep
起動を遅らせることで自動起動が問題なくなりました。
30秒もいらないかもですが、それ以上急ぐ必要もないのでこれぐらいがいいかなと。

- 俺のらじお
任意のタイトルを付けます。日本語もOKです。
ここでつけたタイトルが、podcastでのチャンネルのタイトルとなります。

- -output
outputディレクトリに音声ファイルが入ったディレクトリが生成されます。
podcastのサムネイルも表示したければ、このディレクトリ内にradicast.pngで格納します。
私は200x200pxで作成しました。

- -bitrate
96kとしたのですが、少し音がこもってます。気になる場合は数値上げてます。  
あとは「良質記事」の通りです。

現状ではsleepだけのためにshell使ってますが、今後、機能拡張などを書き込んで便利につかおうかと考えてます。
例えば、起動直後に

- ○日以上経った古いファイルを削除する
- 好きな番組だけを別のディレクトリにバックUP取っておく

など。あくまで「いつでもいいけど起動したついでにやっとくぐらいでいいよ」ぐらいのゆるい処理です。
ラズパイ起動したら付けっぱなしの場合や、厳密なタイミングで処理を求める場合は、crontabでやらせたほうがいいです。

### iphoneのpodcastに番組を購読させる

- podcastアプリを起動
ライブラリ > 編集 > PodcastをURLで追加

- 上記を選択して
radicastで立ち上がっているipaddressと、portでURLを入力
portデフォルト:3355
私の例なら以下を入力。
http://192.168.0.10:3355/rss

こちらで購読完了です。
ラズパイのradicastが立ち上がっていれば、
radikoから番組を録音して、iphoneのpodcastに自動DLされると思います。

---
それでは、良いラヂオライフを！
*（注！ しつこいですが、あくまで個人で楽しむものです。サーバー公開や配布は法律違反となります。）*