ニコニコ動画のコメントを取得するクラス
以下のサイトの参考にして、クラス化してみたけれども、
にたまごほうれん草 - ニコニコ動画のコメント最新500件を取得するCommentsAdd Star
すでに gem 用のパッケージにまでなっていた。
まぁ、先を見ずして先走って作ってしまった。
にたまごほうれん草 - ニコニコ動画をダウンロードしたりするgemを作ってみた
でも足跡としてソースコードは載せておく。
comment_host, path の値の取得の仕方が変わったのか、
掲載されていたものでは使えなかったので、その部分だけは処理を変更している。
- 試しに作ったソースコード
#!/usr/bin/env ruby -Ku require 'yaml' require 'rubygems' require 'mechanize' require 'cgi' $KCODE = 'u' class Nicovideo LOGIN_URL = 'https://secure.nicovideo.jp/secure/login?site=niconico' WATCH_URL = 'http://www.nicovideo.jp/watch/' FLV_URL = 'http://www.nicovideo.jp/api/getflv?v=' def initialize(url) @video_id = url.scan(/sm\d+$/).first @agent = WWW::Mechanize.new end def login(mail, passwd) @agent.post(LOGIN_URL, {'mail' => mail, 'password' => passwd}) end def save_comment(filename) @agent.get_file(WATCH_URL + @video_id) content = @agent.get_file(FLV_URL + @video_id) params = content.scan(/([^&]+)=([^&]*)/).inject({}){|h, v| h[v[0]] = v[1]; h} puts "#{@video_id} saving comments as #{filename}\n" comment_host, path = %r{http://([\w\.]+)(.*)}.match(CGI.unescape(params['ms'])).to_a.values_at(1,2) thread_id = params['thread_id'] 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("#{filename}", "wb") {|f| f.write comments } end end if $0 == __FILE__ nico = Nicovideo.new('http://www.nicovideo.jp/watch/smXXXXXXX') nico.login('mailaddress','password') nico.save_comment('./smXXXXXXXX.xml') end