最近Podcastにハマっている。 Rebuild.fmから始まり、backspace.fm、TCFM、バイリンガルニュースなどなど。

その流れで、過去に録ったラジオを聞きたくなり、古いHDDからmp3を引っ張り出してきた。 できればPodcastと同じように聞きたいなと思い、自分専用に配信すればよいのでは、と考えて作ってみた。

スクリーンショット

image 当然、著作物は私的利用に留めること。 音源もPodcast配信用のRSSファイルも自分しかアクセスできない場所に置いているので私的利用の範囲内。

動機

上でも書いたが、Podcastにハマっているので、それと同じ体験で聞けるととても楽。 音楽再生用のツールで聞くと、レジューム再生できないだろうし、再生速度も変えられないし、 普通に音楽聴きたいときにランダム再生でラジオ流れてくるの嫌だし。

サーバー選定

タイトルにも書いたが、Dropboxを使うことにした。 VPSでも自宅サーバでもなんでもいい気はするが、なんとなく。

Dropboxについて

Dropbox APIというものを使って、ファイルのアップロードと、直リンクの取得を行う。 Dropbox APIの使い方についてはQiitaあたりで探してほしい。

APIを使って取得できるのは共有リンクというもので、直リンクではないのが注意点。 共有リンクのwww.dropbox.comという部分をdl.dropboxusercontent.comに置き換えて、 末尾にある?dl=0という文字列を削除すると直リンクになる。

配信方法

Podcastというのは、RSSフィードに書かれているリンク先のmp3を引っ張ってくるだけの仕組みなので、 mp3をDropboxにアップロードして、その直リンクをRSSに書いて、更にそのRSSファイルをDropboxにアップロードすればよい。 その直リンクを手持ちのPodcastクライアントに読ませれば完成。

スクリプト

mp3が少ない場合は手動でやってもいいが、今回は100本以上の番組だったので、スクリプト化した。 GitHubにdropcastというリポジトリに、今回作成したスクリプトをおいた。

  1. mp3フォルダに置いたmp3をDropbox APIを使って指定したディレクトリにアップロード
  2. アップロードしたmp3の直リンクを取得し、それをもとにPodcast用のRSSファイルを生成
  3. 生成したRSSをDropboxにアップロードして、直リンクを標準出力

という処理を一気に実行してくれるシェルスクリプト。 3行目にDropbox API用のTOKENを入力して、mp3ファイルを用意すればあとは実行するだけ。 最後に出力されるリンクを、手持ちのPodcastクライアントに入力すればOK。

オプションとしてタイトルとDropbox上のパスを変更できるようにしている。

おまけ

結構いい感じで使えるようになったけど、気になるのがサムネイル画像。 最初はどうでもいいと思っていたが、ここまで来たら画像まで完璧にしたくなってしまった。 さすがに番組紹介的な文章はいらないけれど、サムネは欲しい。

ということで、スクリプトには含めてないけれど、サムネイル画像を手動で設定することにした。 画像もDropboxにアップロードしたものを使う。いつものように直リンクを取得して、RSSファイルのtitleの下あたりに、

    <itunes:image href="https://dl.dropboxusercontent.com/s/*/thumbnail.jpg"/>

こんな感じで書けばOK。ただしクライアントアプリの作り次第なのかDropboxの問題なのかわからないが、 反映には結構時間がかかる。RSSファイルの名前を変えて直リンクを生成し直せばすぐに反映される。