にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

ニコニコ動画のコメント最新500件を取得する

参考サイトのコードをつぎはぎしたらできました。

#!/usr/bin/env ruby -Ku
require 'yaml'
require 'rubygems'
require 'mechanize'
require 'cgi'
$KCODE = 'u'

video_id = ARGV.first.scan(/sm\d+$/).first

agent = WWW::Mechanize.new
agent.post('https://secure.nicovideo.jp/secure/login?site=niconico', YAML.load_file('nico.yaml'))

agent.get_file('http://www.nicovideo.jp/watch/' + video_id)
content = agent.get_file('http://www.nicovideo.jp/api/getflv?v=' + video_id)
params = content.scan(/([^&]+)=([^&]*)/).inject({}){|h, v| h[v[0]] = v[1]; h}

puts "saving comments as #{video_id}.xml\n"
comment_host = CGI.unescape(params['ms']).sub(/http:\/\/([\w\.]+)\/api\//, '\1')
thread_id = params['thread_id']
path = '/api/'
body = %!<thread res_from="-500" version="20061206" thread="#{thread_id}" />!

comments = Net::HTTP.start(comment_host, 80) {|http|
  response = http.post(path, body)
  response.body
}
File.open("#{video_id}.xml", "wb") {|f| f.write comments }

変更履歴

  • 2007/09/02 ログイン時のURLが変更になったので修正