📻

RadikoからプライベートPodcastを作る

2023/12/29に公開

TL;DR

https://github.com/shoppingjaws/radio-station

はじめに

Radikoでいろいろなラジオを作業中に聴くのが楽しみですが、如何せんRadikoのアプリの出来がよろしくなく、

  • 他のメディアを再生し、復帰した際に再開されない現象
  • 一週間しか聴けない
  • 一度再生すると、一日以内に聴かないとだめ
  • 同じ放送回でも放送局の数だけ同じ番組が配信されているが、👆の途中から再生できない

など、不便な点は多いが、他にアプリの選択肢はありません。
(Spotifyなどもあるがすべてをカバーできてない)

なので、いつでも快適に聴けるシステムを構築しました。

採用されなかった案

要件

  • スマホで快適に聴けるフロント環境が提供されていて、今後の仕様変更等で改悪のリスクが少ないこと。
  • ほぼ無料コストで運用できること。

ボツ構成

  • soundcloudにRadigo(後述)で録音してアップロード (プライベートアップロード枠が少ない)
  • Youtubue Premium + 違法アップロード (論外)
  • DropBox + Radigo(GithubActions) (悪くないが、途中再生の再開などの点で快適さに欠ける&GithubActionsのリージョンからRadikoへのアクセスができない)
  • Heroku/RenderなどのBaaS (ストレージ枠の単価が高い。1番組100MBぐらいあるので、無料枠ではむり)

素直にAWSでやろう!

お世話になったスタック

radikoから分割されたメディアファイルを取得してくれる今回のコア技術

Radicasterは特定の番組のRSSファイル(Podcastは実はただのRSSファイルとクライアントの構成)が読み込めない不具合があった。
おそらく、Radigoのffpmegを利用した録音に起因する不具合が原因と見ています。不具合究明するぐらいなら、自前で作ってしまおう!となりました。

構成

クライアント(ApplePodcast)

あとがき

  • GoogleのPodcastはBasic認証に対応していない
  • Radigoの録音できない不具合の特定に一番時間を使った(ffmpegをパッケージインストールせずに、別のステージングしたDockerレイヤからCOPYしてきてたため、特定の条件下で複数のm4aファイルを結合するときに失敗して、15秒(1チャンク分)になってしまう)
  • 権利関係などもあるんだろうけど、Radikoには頑張って欲しい

Discussion