ここ数日ごにょごにょやってたのはこれがやりたかったから.Plaggerを使ってネトラジをPodcast化します.
ネトラジとPodcastをつなぐのに使うのがFilter::FetchEnclosure::Mplayerというプラグイン.これは,Mplayerで再生できるenclosureをwavファイルとしてダンプしてローカルに保存する.MplayerはWindows MediaやRealのストリームを再生できるので,ネトラジをローカルに保存できるということになる.
このプラグインと組み合わせて使うのがFilter::Lameというプラグインで,字のごとくLameを使ってmp3を作る.ネトラジの30分番組なんかをwavのままにしとくと200MBくらになるので,このプラグイン必須.
で,どう使うかっていうと,次のようなYAMLをPlaggerに渡してやる.
- module: Subscription::Config config: feed: http://lantis-net.com/haruhi/radio.html - module: CustomFeed::SOS - module: Filter::Rule rule: module: Fresh mtime: path: /tmp/sos.tmp autoupdate: 1 - module: Filter::FetchEnclosure::Mplayer config: dir: /Users/yohei/Sites/plagger/enclosures/ - module: Filter::Lame config: dir: /Users/yohei/Sites/plagger/enclosures/ delsrc: 1 - module: Filter::RewriteEnclosureURL config: rewrite: - local: /Users/yohei/Sites/plagger/enclosures/ url: http://localhost/~yohei/plagger/enclosures/ - module: Publish::Feed config: format: RSS dir: /Users/yohei/Sites/plagger/podcast/ filename: sos.xml
これをPlaggerで実行して,しばし,というか,かなり待つとpodcast用のxmlが出力される.これをiTunesに登録などすると下の画像のようなる.もう,こうなったら煮るなり焼くなりお好きにどうぞ.iPodで聞けるのが良い.
とりあえずのところの,Filter::Fetch::MplayerとFilter::Lameを置いておく.ただし,またすぐ修正が入るかも.
実はこれだけでは動かなくて,CustomFeed::SOSというプラグインも必要.これはネトラジを配信してるサイトをPlaggerにFeedとして入力するためのプラグインだ.これも配ってもいいんだけれど,Mplayerでストリームをダンプしまくるのがネトラジ配信鯖にどのくらい良くないのかわかんないので,とりあえず保留で.なにかの加減で欲しい人がいるようなら,どうにか考えるかなー.
このCustomFeed::SOSは普通に正規表現でtitleやらbodyやらを拾ってきてるだけ.ただし,enclosureに関しては,ストリーミングのアドレスからメタデータファイルを拾ってその中に記載されてるメディアファイルの実体を探してenclosureに指定するようにしてる.ちょっとわかりにくいんだけど,まぁ,ためしにそのへんのasxファイルをダウンロードしてそれをテキストファイルで開いてみるとわかるかも.
実はコレとは別に,自分用のネトラジをPodcast化するツールをこっそり作ったりしていた.いちおう動いてくれてるんだけど,つぎはぎだらけで大変なことになってきていた.そこでPlaggerにその代わりをさせたらすっきりした構成で同じことできるんじゃなかろうか,と思って試してみたわけ.これはなかなか良さそう.ネトラジのサイト毎にCustomFeed書かなきゃダメなのがちょいめんどうだけどな.