hitode909の日記

趣味はマリンスポーツですの日記です

Rubyでニコニコ動画のマイリストをPodcastにする

前から、id:hakobe932さんがPlaggerを使ってニコニコ動画をPodcastにしているのを*1うらやましがっていたのですが、うちのサーバーにPlaggerが入らなかったので、Rubyで一から作りました。
最近Gitが流行ってるので、GitHubに置きました。

特徴

  • Plaggerが要らないので導入が簡単
  • ライブラリを継承してそこに設定を書くので、Plaggerのようなややこしい設定ファイルが不要
  • ライブラリを継承してオブジェクトを作れば勝手に動くので、誰でも簡単に使える

使い方

Plaggerでできることなので、わざわざこれを使う人は居ないだろうと思ったので、あまり書いていませんが、リポジトリのREADMEに書きました。
実際はタイトルを整形したりジャンルをつけたりするのですが、あるマイリストを取ってきてPodcastにするだけなら、以下のようなスクリプトを書くだけで動きます。

#! /usr/bin/env ruby
require 'lib/crawler.rb'

class MyCrawler < Crawler
  def collect_input_data
    @account_setting_file = 'account.yaml'
    @input_feed_url = 'http://www.nicovideo.jp/mylist/hogehogeho?rss=2.0'
    @output_feed_path = '~/public_html/podcast/hoge.xml'
    @output_file_path = '~/public_html/podcast/enclosure'
    @output_file_url = 'http://hogehoge.com/~user/podcast/enclosure'
    @input_file_type = 'flv'
    @output_file_type = 'mp3'
    @ffmpeg_option = '-acodec copy'
  end
end

MyCrawler.new

やってること

  1. マイリストのフィードを読んで動画のIDを抜き出す
  2. ローカルにファイルがなければflvをダウンロード、変換する
  3. 出力用のフィードを作って、マイリストから要素を移植する
  4. そのときに、2.で落としたenclosureをくっつける
  5. 外から見える場所に置いて完成

簡単ですね。

今後の予定

  • mp3にするのはできたが、動画を生成するのはffmpegのオプションが分からなくてまだ試せていないので、試す
  • アートワークをつけたい
  • ラジオの場合、アップロードする人によってタイトルの付け方が違う問題をどう解決するか
  • ソースコードをまともにする
    • 動画1つを1つのオブジェクトに

*1:[http://d.hatena.ne.jp/hakobe932/20070923/1190594172:title]