天然パーマです。

Plaggerでニコニコ動画のFLVとコメントを一括ダウンロード!

暇さえあればニコニコ動画。 今日はそんなニコニコ動画をPlaggerを使ってもっと楽しむ方法( = ニコプラ)を教えちゃいます。 Plaggerって何?という人はこちらをご覧ください→Plaggerとは? (Yusukebe::Tech)

本日紹介するのは、ニコRSSというサイトが配信しているニコニコ動画のRSSや、ニコニコ動画にひっそりと実装されているマイリストのRSSをPlaggerで読み込んで、その動画を一括でダウンロードするというレシピです。

ニコRSSさんは「本日のランキング動画」や「タグ」「検索結果」の動画へのRSSフィードを提供してくれているとても便利なサービスです。例えば「本日のマイリスト登録ランキングのRSS」はこちらで取得できます→ http://zio3.net/nicoRss/Handler.ashx このように、RSSのエントリーのリンク先がニコニコ動画の動画ページ、つまり 「http://www.nicovideo.jp/watch/sm000000」という形式になっている場合に、 その動画のFLV(Flashビデオ形式)ファイルとXML形式のコメントファイルをダウンロードしてくれるPlaggerのPluginを作りました。 それがこちらです→Plagger::Plugin::Filter::FetchNicoVideo / ver0.01 (Yusukebe::Tech)。 これをPerlの@INCディレクトリなどに適切に配置するかPlaggerのconfigファイルで指定するPluginディレクトリなどにぶち込めば最初の準備は完了です。 早速config.yamlに以下を書いて、plagger -c config.yaml と実行すると、 「本日のマイリスト登録ランキング」100件の動画をダウンロードしはじめます。 いきなり100件もダウンロードしたくねぇえーーという人は途中でCtr-Cとか押して中断してください。 というかほとんどの人はそうした方がいいです^^;

plugins:

  - module: Subscription::Config
    config:
      feed:
         - url: http://zio3.net/nicoRss/Handler.ashx

  - module: Filter::FetchNicoVideo
    config:
      mail: your@mailaddress
      password: yourpassword
      dir: ./tmp/
      filename_encode: shift-jis #OSによって変えてください
      download_comment: 1 #コメントをダウンロードしたいときに1としてください

端末から plagger -c config.yaml コマンドを実行してダウンロードしている様子
ニコプラ

ダウンロードされたFLVとXML、更新日時でソートするとダウンロードされた順に並べられる
ニコプラ

一応これだけでもダウンロードできることはできるのですが、少々問題があります。 まず、ニコRSSのランキングだと100件と件数が多いので、それを制御したいということ。 そして、このままだと重複して同じ動画をダウンロードする場合あって、それではニコニコ動画サーバーに余計な負荷をかけてしまいます。 そこで、Plaggerの機能であるRuleを使います。件数の制御には RecentNを、 重複の制御にはDedupedを使います。 この場合のDedupedのengineにはmanabouさんのDB_File_URLを使った方がよいでしょう(通常のDedupedではpermalinkとdateをあわせたキーで重複をチェックしているが、ニコRSSの場合、permalinkだけの重複チェックの方がいいから)。 それらを組み合わせたconfig.yamlはこんな感じになります。 (追記: Dedupedに関してはotsuneさんからコメントいただきました。このハックの方がいいかもですね。)

plugins:

  - module: Subscription::Config
    config:
      feed:
         - url: http://zio3.net/nicoRss/Handler.ashx

  - module: Filter::FetchNicoVideo
    rule:
      - module: RecentN
        count: 20
      - module: Deduped
        engine: DB_File_URL
        path: ./deduped.db
    config:
      mail: your@mailaddress
      password: yourpassword
      dir: ./tmp/
      filename_encode: shift-jis
      download_comment: 1

ダウンロードしたFLVをファイルを視聴するにはWindows限定ですがNicoPlayerがオススメです。 FLVファイルを直接開くことができて、さらに、同名のコメントXMLファイルがあればコメントもニコニコ動画のサイトで見るのと同じようスクロールしたりして表示してくれちゃいます。

ニコプラ

さて、次は冒頭で述べたニコニコ動画にこっそりと実装されているマイリストのRSSを読んで、 そのマイリストの動画を一気にダウンロードしてみましょう。 とはいえ自分でマイリストを作っている人はそれで試してみるのもいいのですが、 作ってない人いたりして(自分もそうでした)、 欲を言えば、他の人が作ったマイリストがどんなのあるか知りたいところ。 というわけで、ニコニコ動画のマイリストの全てとはいきませんが、ある程度一部をキーワードで検索できるページをGoogle Coopという便利なツールを使ってさくっと作ってみました。 こちらです→ニコニコ動画 マイリスト検索

ニコプラ

では、このマイリスト検索で「全てのマイリストの検索結果」を表示するとトップに表示される 「マイリスト びゃあ゛ぁ゛゛うまひぃ゛ぃぃぃ゛ぃ゛い逆から読んだらい゛ぃ゛ぃぃぃぃ゛ぃひまう゛゛ぁ゛あゃび」 をPlaggerで読み込ませ、このマイリストに登録されている動画を全てダウンロードしてみましょう。 config.yamlの例はこんな感じです。

plugins:

  - module: Subscription::Config
    config:
      feed:
         - url: http://www.nicovideo.jp/mylist/174381/1698397
         #↑URLはRSSのURLじゃなくてもいい

  - module: Filter::FetchNicoVideo
    config:
      mail: your@mailaddress
      password: yourpassword
      dir: ./tmp/
      filename_encode: shift-jis
      download_comment: 1

最後に、SoftwareDesign 2006年10月号のPlagger特集でのmizzyさんの記事「PlaggerでYouTube Casting」を参考に、ダウンロードしたニコニコ動画の動画ファイルをiTunesで閲覧できるMPEG4フォーマットに変換してVodcastingするという超絶ワザを紹介します。 といってもまだちゃんと試したわけではないので動作の保障はしかねます^^; config.yamlはこれでうまくいくんじゃないかなー

plugins:

  - module: Subscription::Config
    config:
      feed:
         - url: http://zio3.net/nicoRss/Handler.ashx

  - module: Filter::FetchNicoVideo
    rule:
      - module: RecentN
        count: 20
      - module: Deduped
        engine: DB_File_URL
        path: ./deduped.db
    config:
      mail: your@mailaddress
      password: yourpassword
      dir: /home/yusuke/nicovideo

  - module: Filter::FFmpeg
    config:
      command: /usr/local/bin/ffmpeg
      device: ipod
      dir: /home/yusuke/nicovideo

  - module: Filter::RewriteEnclosureURL
    config:
      rewrite:
        - local: /home/yusuke/nicovideo
          url: http://hogehoge.fuga/nicovideo

  - module: Publish::Feed
    config:
      dir: /home/yusuke/nicovideo
      filename: %t.rss
      format: RSS

一応mpeg4に変換してiTunesにぶちこむところはできた
ニコプラ

変換のオプションを変えればPSPフォーマットの映像も作ることができるので、 PSPやiPodなどにニコニコ動画を入れて、みんなで動画を見て実際にその場で会った人の間で「ニコニコ」するのも楽しいかもしれませんね。

というわけで、ながながと自分が作ったモジュールの宣伝をしてきたわけですが、 これを機にPlaggerに触れてみるのもいいかなと思います。 あとはFilter::FetchNicoVideoの詳しい使い方についてはPODを参照してください。 最後にPlaggerを使うにあたって参考になる書籍を紹介しておきます。

Software Design (ソフトウエア デザイン) 2006年 10月号 [雑誌]
posted with yusukebe.com::AmazonSearch on 2007.8.9
  • 雑誌 / 技術評論社 (2006/09/16)
  • Amazon 売り上げランキング:
Amazon.co.jpで詳細を見る

まるごとPerl! Vol.1
posted with yusukebe.com::AmazonSearch on 2007.8.9
  • 小飼 弾 宮川 達彦 伊藤 直也 川合 孝典 水野 貴明
  • 大型本 / インプレスコミュニケーションズ (2006/08/24)
  • Amazon 売り上げランキング: 46246
  • Amazon おすすめ度の平均: 5.0
    • 5 技術書・解説書というよりはマイルストーン
Amazon.co.jpで詳細を見る

ずばりわかる!Webプログラミング2.0―最新のWeb技術を一挙解説
posted with yusukebe.com::AmazonSearch on 2007.8.9
  • 日経ソフトウエア
  • 大型本 / 日経BP社 (2007/04)
  • Amazon 売り上げランキング: 21745
Amazon.co.jpで詳細を見る