ニコニコ動画 swf、mp4、flvをダウンロードする

昨日書いたエントリに、「swfも忘れないであげて!」と言われたので修正します。動画タイトルの「‐ニコニコ動画(SP1)」が邪魔とも言われたので、そっちも修正。

#!/usr/bin/ruby -Ku

# nicodown.rb

require 'rubygems'
require 'nicovideo'

module Nicovideo
  class VideoPage
    def type
      @params ||= get_params
      pattern = %r!^http://.*\.nicovideo\.jp/smile\?(.*?)=.*$!
      CGI.unescape(@params['url']) =~ pattern
      case $1
      when 'm'
        return 'mp4'
      when 's'
        return 'swf'
      else
        return 'flv'
      end
    end
  end
end

nv = Nicovideo.new('メールアドレス', 'パスワード')

ARGV.each do |video_id|
  nv.watch(video_id) do |v|
    File.open("[#{v.id}] #{v.title.sub(/.*$/, '')}.#{v.type}", "wb"){|f| f.write(v.flv) }
  end
end

使い方。

ruby nicodown.rb sm2538662 nm2536146 sm2540481

結果。

[nm2536146] 日刊VOCALOIDランキング 2008年3月6日.swf
[sm2538662] 【MAD】 魔法少女リリカルなのはA's Lyrical on Fire 【H.264】.mp4
[sm2540481] 【鏡音リン・レン】ジェミニ【オリジナル】.flv 

ご利用の際にはgemのインストールを忘れずに。

% sudo gem install nicovideo

追記

Windows向け解説。Rubyのインストールからダウンロードまで。