ネトラジとPodcastをつなぐPlaggerプラグイン

ここ数日ごにょごにょやってたのはこれがやりたかったから.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書かなきゃダメなのがちょいめんどうだけどな.