ニコ生アラート(本家)APIを少し使ってみた
先日、ニコ生アラート(本家)がリリースされました。
これで加入しているコミュニティや運営生放送の開始を逃さずチェック出来るようになりました。
また、アプリの公開とあわせてAPIも公開されたのでツールの作成もしやすいです。
APIの仕様やレスポンス自体は生放送・ニコ動のメッセージサーバからのレスポンスと殆ど同じなので認証API1・2とメッセージサーバへの接続あたりをツールを作る下準備も兼ねてRubyで超簡単に書いてみました。
require "net/https" require "uri" require "socket" require "rubygems" require "nokogiri" NICO_ID = "あいでー" NICO_PASS = "ひみつ" def access_api(url, post_data = nil) uri = URI.parse(url) Net::HTTP.version_1_2 http = Net::HTTP.new(uri.host, uri.port) if(uri.port == 443) http.use_ssl = true http.ca_file = "./nico.cer" http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.verify_depth = 5 end http.start do |access| path = uri.path path += "?" + uri.query unless uri.query.nil? req = Net::HTTP::Post.new(path) req["User-Agent"] = "NicoLiveAlert 1.0.2" req.set_form_data(post_data) unless post_data.nil? response = access.request(req) response_body = response.read_body end end #認証API1にアクセスしてキー貰う ticket_api_response = access_api("https://secure.nicovideo.jp/secure/login?site=nicolive_antenna", {:mail=>NICO_ID, :password=>NICO_PASS}) login_ticket = Nokogiri(ticket_api_response) ticket = (login_ticket/"ticket").inner_text() #認証API2にアクセスしてメッセージサーバの情報やコミュニティ情報を貰う alertstatus_api_response = access_api("http://live.nicovideo.jp/api/getalertstatus" ,{:ticket=>ticket}) alert_status = Nokogiri(alertstatus_api_response) puts "My Channel & Coumunity" (alert_status/"community_id").each do |com| puts com.inner_text() end addr = (alert_status/"addr").inner_text() port = (alert_status/"port").inner_text() thread = (alert_status/"thread").inner_text() puts "Server Information" puts "Add: " + addr puts "Port: " + port puts "Thread: " + thread TCPSocket.open(addr, port) do |sock| sock.write("<thread thread=\"#{thread}\" version=\"20061206\" res_from=\"-1\"/>") puts sock.gets end
こんな感じです。
http.ca_fileにニコ動の使用している証明書(ルート証明書の方が使い回しがききます)を指定します。
UAに「NicoLiveAlert 1.0.2」と指定しないとInvalid Clientとエラーが返ってきます。
最後のメッセージサーバへの接続はテストなので、ずっと待ち受けている用に変更する必要があります。
こんな感じで簡単に使えて便利ですね。
その他詳しい事は
ニコ生アラート(本家)の仕様とは (ニコナマアラートホンケノシヨウとは) [単語記事] - ニコニコ大百科