Podcastのいいところ
情報中毒者的な利点は、新聞やニュースサイトと違って、移動中やランニングのBGMとかにながらで聴けるのが大きい。ツイッターのフォローしてる人達の投稿読んでいる時間ないから音声読み上げで聴く、という人もいた。
またPodcastに対応した音楽プレイヤーソフト側でストリーミング、ファイルの未聴状態などを管理してくれるので携帯本体にダウンロードしたりしなくていい。
サーバー環境
Osukini Server / VPS ルート権限ある。今回の為に契約したというわけではなく汎用的なリモートマシンとして普段から使っているやつ。
Radikoは受信元の住所で制限があるはずだけど、俺のサーバはIPアドレスで調べたら所在地が長野県だった気がする。
OS は GNU/Linux Ubuntu maverick。
ワーキングディレクトリ、方針
えーと、すべての作業を~/work/radiko 以下でやるようにしている。
Ubuntu の標準パッケージにあるやつはapt-get でインストールし、ない奴はユーザー領域にインストールする方針。
CRON 実行もユーザー権限でやりたかったんだけど。plagger 時代にうまくいかなかった過去があるので、root から"sudo -u user" として実行するみたいにしている。
必要なツールの準備
このへん
sudo aptitude install wget rtmpdump libmp3lame-dev nasm ffmpeg
Radiko録音シェルスクリプト
https://gist.github.com/2780702 これ
https://gist.github.com/875864 をベースに都合の良いよう改造した
以下のように使う
# Bangumi01 という名前でTBSラジオを10分録音し /var/www/Music へmp3に変換して保存 $ ./rec_radiko.sh TBS Bangumi01 $((60*10))
flv 形式の中間ファイルはワーキングディレクトリに都度Bangumi01.flv に上書きしてる。
/var/www/Music 以下に保存する時は Bangumi01-20120525.mp3 みたいな命名規則にしている
rtmpdump が中断しちゃったら完遂できないんだけどまだ失敗していないので、リトライなどの対策を考えていない
CRON設定
番組がはじめる時間にシェルスクリプトで放送時間ぶんだけ録音するよう命令している
# sudo crontab -l 30 18 * * 0 cd ~/work/radiko && ./rec_radiko.sh TBS Denpa $((60*90)) 0 1 * * 2 cd ~/work/radiko && ./rec_radiko.sh TBS Baka $((60*120)) 0 15 * * 3 cd ~/work/radiko && ./rec_radiko.sh TBS Tsutaya $((60*20)) 0 1 * * 5 cd ~/work/radiko && ./rec_radiko.sh TBS Megane $((60*120))
今んところこんだけ
Apacheのmod_musicindex をインストール
保存したMP3ファイルをPodcastとして配信するのにはApcheモジュールのmod_musicindex を使うのが楽
sudo aptitude install libapache2-mod-musicindex sudo a2enmod musicindex
今回は専用のサブドメインから配信することにした
# /etc/apache2/sites-available/podcast.example.jp <VirtualHost *:80> Alias /musicindex "/usr/share/mod_musicindex" <Directory /usr/share/mod_musicindex"> Order allow,deny Allow from all </Directory> ServerName podcast.example.jp DocumentRoot /var/www/Music <Directory /> Options Indexes MultiViews FollowSymlinks AllowOverride Indexes MusicIndex On +Stream +Download +Search +Rss -Tarball MusicSortOrder album disc track artist title length bitrate freq filetype filename uri MusicFields title artist album length bitrate MusicPageTitle Radio MusicDefaultCss musicindex.css MusicDirPerLine 3 MusicDefaultDisplay HTML MusicCookieLife 300 </Directory> ErrorLog ${APACHE_LOG_DIR}/podcast.example.jp-error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/podcast.example.jp-access.log combined </VirtualHost>
ウェブブラウザから podcast.example.jp にアクセスして以下のようになってればOK
Podcast 用のRSSは http://podcast.example.jp/?action=podcast になる
認証かける
私的利用なんだけど、そのままだと一般に公開されている状態なのでURLにパスワードかけておく。
htaccessで設定すればいいと思う。
Listen用にGoogle Readerに登録
http://user:password@podcast.example.jp/?action=podcast でRSSにアクセスできるようになったらそれをプレイヤーに登録する。
自分は実際の聴取にはListen というAndroid アプリケーションを利用している
Google Reader の特定のフォルダに登録しておけばOK というシンプルなのがいい
おまけ: podcast配信ディレクトリをDropboxで同期して「あとで聴く」の環境をつくる
まずサーバでDropboxデーモン走らせるのが必要
あとは「あとで聴く」用のフィードを作ってディレクトリを~/Dropbox 以下にシンボリックリンクはっておく。
するとデスクトップから音楽ファイルほうりこんでおくと登録したPodcastに配信されてくるという方法。
追記: 着陸失敗
と、大見栄きったところでもGoogle Reader が認証つきフォードに対応してないことを思い出した。だめじゃん。そもそもPodcast が認証を受け入れるように設計されてないのか……
参考サイト
UPDATE: Fri Oct 26 13:07:25 JST 2012
Radikoサーバーの仕様変更で録音コケてた(野良バッチの宿命)
の人の書き込みを参考にスクリプト書き換えて動くようにしておいた。