ニコニコ動画のコメント最新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が変更になったので修正