Rubyでニコニコ動画のダウンローダ

ニコニコ動画にアクセスするnicovideoパッケージをgemでインストールすると、sample/nv_download.rb というファイルも入手できます。それを読んで勉強。で、nv_download.rbをもとにしてnico.rbを書きました。nv_download.rbの劣化コピーですみません。でも、自分で書き写して直すと理解が深まるので、おゆるしください。

require 'nicovideo'
require 'yaml'
require 'iconv'

def puts(s)
  Kernel.puts Iconv.conv('cp932', 'UTF-8', s)
end

account = YAML.load_file('nico.yaml')
mail, password = account['mail'], account['password']
nicovideo = Nicovideo.new(mail, password)

video_id_list = ARGV
if ARGV.size == 0
  video_id_list = [ 'sm2222901', 'sm1846043' ]
end

video_id_list.each do |video_id|
  nicovideo.watch(video_id) do |video_page|
    puts video_page.id + ' : ' + video_page.title
    File.open("#{video_id}.flv", "wb") do |file|
      file.write video_page.flv
    end
  end
  sleep 3
end

実行結果です。

C:\work> gem help
(略)

C:\work> gem help list
(略)

C:\work> gem list nicovideo --remote

*** REMOTE GEMS ***

nicovideo (0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1.0, 0.0.6, 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1)
    utils for nicovideo

C:\work> gem install nicovideo
Successfully installed nicovideo-0.1.4
Installing ri documentation for nicovideo-0.1.4...
Installing RDoc documentation for nicovideo-0.1.4...

C:\work> type nico.yaml (まえもってnico.yamlは作っておく)
mail: yourmail@example.com
password: xxxxxxxx

C:\work> ruby nico.rb (引数省略すると数学ガールをダウンロード)
sm2222901 : 「数学ガール」に絵をつけてみた‐ニコニコ動画(夏)
sm1846043 : 【初音ミク】 数学ガール‐ニコニコ動画(夏)

C:\work> dir /b *.flv
sm1846043.flv
sm2222901.flv

C:\work> ruby nico.rb smXXXXXXX (引数を与えるとその動画をダウンロード)
(略)