ニコ動ダウンロード用ライブラリを使ってみた

ニコ動ダウンロード用ライブラリがgemコマンドでインストールできるようになりました - にたまごほうれん草


gem に正式に登録されたようで、サンプルのソースコードを早速使ってみました。

サンプルソース使い方

サンプルの使い方は以下のように、引数に動画の ID を渡すだけ。

D:\> ruby nv_download.rb sm1950946

※ nicovideo (0.0.2) 以上で以下の問題は解消済み。

が、しかしコメントが取得できない

何かしらのエラーが。
タイトルとタグは表示されたけれど、コメントを取得できなかったみたい。

getting comments xml
D:/home/opt/ruby/lib/ruby/gems/1.8/gems/nicovideo-0.0.1/lib/nicovideo/base.rb:123:in `get_params': Nicovideo::NicovideoNotFoundError (Nicovideo::NicovideoNotFou
ndError)
        from D:/home/opt/ruby/lib/ruby/gems/1.8/gems/nicovideo-0.0.1/lib/nicovideo/base.rb:94:in `get_comments'
        from D:/home/opt/ruby/lib/ruby/gems/1.8/gems/nicovideo-0.0.1/lib/nicovideo/base.rb:53:in `comments'
        from nv_download.rb:22
        from nv_download.rb:22:in `open'
        from nv_download.rb:22
        from D:/home/opt/ruby/lib/ruby/gems/1.8/gems/nicovideo-0.0.1/lib/nicovideo/base.rb:48:in `watch'
        from nv_download.rb:18
        from nv_download.rb:16:in `each'
        from nv_download.rb:16

原因

どういう間隔かはわからないが、連続アクセスしてしまうとエラーになってしまう(戻り HTTP コンテンツは見ていないけれど)。
まぁ、そういうわけで、sleep を入れて対処。
すると、見事ニコニコ動画のコメントを取得に成功。
この問題は、プレミアム会員なら大丈夫だったりするのかな。

  nv.watch(video_id) {|v|
    puts 'title = ' + v.title
    puts 'tags = ' + v.tags.join(' ')
    sleep 3                               # <= 連続アクセスしないように待ち時間
    puts 'getting comments xml'
    File.open("#{video_id}.xml", "wb") {|f| f.write v.comments(100).to_xml }
    puts 'getting flv file'
    File.open("#{video_id}.flv", "wb") {|f| f.write v.flv }
  }