ニコ生のコメントサーバからコメントのデータを取得する方法を調べてた
rubyでSocket使って通信する方法の勉強も兼ねて調べたメモ。っていうか、それ勉強してた。
require 'socket' msgsvr = ARGV[0] #メッセージサーバのホスト名 port = ARGV[1] #メッセージサーバのポート番号 thread = ARGV[2] #スレッド番号 s = TCPSocket.open(msgsvr,port) req = "<thread thread=\"#{thread}\" res_from=\"-200\" version=\"20061206\" \>\0" s.print req s.each("\0") do |line| print line + "\n" end
ホスト名とかはニコニコ動画にログインしてるブラウザから
http://live.nicovideo.jp/api/getplayerstatus?v=生放送の番号(lv9999…)
にアクセスして取得できる(これ取得する処理もmechanizeとか使えば書けると思うけど今開いてるブラウザのニコ生がログアウトしちゃうんだろうなぁ)。区切り文字がnull文字というのがなんか嵌りました。
参考にしたのはニコニコ生放送のコメントを取得しようとした…けど失敗 - imakamiのメモとか、Nico Requestのソースコードとか。あと、Web+DBPress Vol.47のネットワークプログラミングの特集も読んだ。
どうなったら停止させたらいいのかとかよくわからないけど、最初の一歩ということで。
追記
すいません、s.puts reqだと改行コードはいっちゃいますね。s.print reqに修正しました。ごめんなさい。