動機
ラジオで録音した語学番組(mp3)をiPhoneなどiOS端末で聞く場合、普通はMusicアプリで聞くしかありません。
Musicアプリでは以下のような不便な点があります。
- 細かな前後への移動ができない
- 前回の停止位置から再生されない(先頭から再生される)
上記のような機能を持った再生アプリを探せばいいのかもしれませんが、普段使っているpodcastアプリで再生できれば上記の点が解消されます。そこで、なんとかmp3ファイルを簡易にPodcast番組にする方法を探してみました。
仕組み
Podcastは、RSSフィードの仕組みを使って公開されます。
そのためには、以下のものが必要です。
(1) RSSファイル:公開する項目に関する各種情報のリスト
- 通常は、Webサイトの記事の要約とリンク先。
- Podcastの場合は、番組に関する情報(タイトルや要約など)と音声ファイルのURL.
(2) RSSファイルを公開するWebサーバ
これは、iOSデバイスに転送したい時だけ使えればいいので、rubyに付属のwebrickを使いました。
RSSファイルの生成
RSSファイルは、XMLのファイルなので、Appleのサイトの仕様をみて、テキストエディタでも作れますが、音声ファイルがたくさんあると面倒なので、rubyのスクリプトファイルを探しました。
見つけたのが下記のスクリプトで、これを利用しました。
あとで見つけたのですが、「指定ディレクトリ内のmp3ファイルから必要最低限のPodcast用RSSを生成する」というのもありました。
こちらの方が、スッキリしている気もします。
元のスクリプトを若干修正をしました。
スクリプト本編は、上のリンクを参照してください。
修正箇所は、以下の3点です。
後の2点は、日本語関係の問題なので、ファイル名などが英語の場合は、不要と思います。
- ベースURLを下で使うWebサーバのURLにします。
public_url_base = "http://192.168.1.6:8000"
- ラジオで録音した時のファイル名が*.MP3と、拡張子が大文字になっていたので、ファイル名のフィルタに"MP3"を追加しました。
next unless file =~ /\.(mp3|m4a|MP3|M4A)$/ # only use audio files
- フォルダ名、ファイル名に日本語が入っているとiTunesやiOS端末でアクセスした時にエラーになり、ファイルをダウンロード出来ませんでした。そこで、音声ファイルのURLをパーセントエンコードするようにしました。
追記:最初URI.encode_www_form_component()
を使ってましたが、ファイルパスの'/'もエンコードされてしまうので、URI.escape()
に変えました。
require 'uri'
...
item_url = "#{public_url_base}/#{URI.escape(file)}"
また、このスクリプトではmdlsコマンドでMacOSXのSpotLight検索用のメタデータから概要などを生成してますが、今回使ったファイルではそのようなメタデータを設定していないため、不要なものをコメントアウトしました。
RSSファイルの生成
上のスクリプトファイルをmp3のファイルと同じディレクトリに置きます。
ターミナルソフトで、そのディレクトリに移動し、次のコマンドで実行します。
./generate_personal_podcast.rb
すると 'podcast.rss' というファイルが作成されます。
RSSの公開は、rubyのwebrickを使いました。
上と同じディレクトリで、以下のコマンド(ワンライナー)を実行します。
ruby -rwebrick -e WEBrick::HTTPServer.new(:DocumentRoot => "./", :Port => 8000).start
iOS端末へのダウンロード
- iTunesでpodcast.rssのurlを登録し、iOS端末に同期しました。
iTunesのファイルメニュー/Podcastを購読を選択し、下のURLを入力するとPodcastとして各音声ファイルのタイトルが表示されます。
http://192.168.1.6:8000/podcast.rss
iTunesを使わずに、直接iOS端末でダウンロードするやり方もあるようです。
podcast.rssのurlをメールで送って、そのメールをiOS端末で開いて、URLをクリックすると登録できるそうです。
(試してみましたが、うまくいきませんでした。ご存知の方がおられたら教えてください。)