ニコニコ実況API
追記
https://gyazo.com/8d8a2fba4c17f0d4aa360c9eae06a43a
情報が散らばっていて少し苦労したためまとめておく。
2020年9月現在。
エンドポイント
getflv
実況板を指定するとx-www-form-urlencodedの形式で現在進行中のスレッドに対しての情報が返ってくる。ログインしている場合はログインしているユーザーの情報も帰る。
URL: http://jk.nicovideo.jp/api/getflv
パラメータ(GET)
v(必須)
jk1など実況板を指定。
jsonにパースした形式は以下の通り(ログアウト)。
code:getflv?v=jk1.json
{
"done": "true",
"thread_id": "1601319601",
"ms": "XXX.XXX.33.123",
"ms_port": "2526",
"http_port": "8081",
"channel_no": "1",
"channel_name": "NHK 総合",
"genre_id": "1",
"twitter_enabled": "1",
"vip_follower_disabled": "0",
"twitter_vip_mode_count": "10000",
"twitter_hashtag": "#NHK",
"base_time": "1601319601",
"open_time": "1601319601",
"start_time": "1601319601",
"end_time": "1601352517"
}
thread(HTTP)
スレッドのXML。
URL: ${ms}:${http_port}/api/thread
パラメータ(GET)
version(必須)
20061206固定
thread(必須)
getflvで返ってくるthread_id
res_from(任意)
どこのレス番からデータが欲しいか指定する。相対でも指定可能(-10など)。
これを指定しない場合コメント(chat)は返ってこない。
user_id(任意)
何に使われてるんだろう、ユーザーIDの入力だけでは認証にはならないし…
waybackkey(任意)
過去のスレッドデータを遡る時に必要なキー。取得方法は下記。
when(任意)
TwitterAPIでいうmax_id?unixtimestamp
code:thread.xml
<packet>
<thread resultcode="0" thread="1601319601" last_res="5360" ticket="00000000" revision="2" server_time="1601352890"/>
<view_counter video="0" id="1"/>
<chat thread="1601319601" no="5351" vpos="3319767" date="1601352799" date_usec="367428" mail="184" user_id="CqiZMopNLM-SSUwAM_6g3uImHIM" anonymity="1">あら</chat>
<chat thread="1601319601" no="5352" vpos="3319859" date="1601352801" date_usec="854482" mail="184" user_id="i7lqLpKxugRr48eFHYBkYCFqfHk" premium="1" anonymity="1">また中止やで</chat>
<chat thread="1601319601" no="5353" vpos="3321300" date="1601352814" date_usec="461244" mail="184" user_id="zGCZjr49oXfVCvfyGIePaxCG1FI" anonymity="1">あら</chat>
<chat thread="1601319601" no="5354" vpos="3321500" date="1601352816" date_usec="277029" mail="yellow big shita 184" user_id="2fQ63VRifZpQQBKPNTZabibc-nY" anonymity="1">ただwwwwwwwwwwwwwww</chat>
<chat thread="1601319601" no="5355" vpos="3324591" date="1601352849" date_usec="297111" mail="184" user_id="i7lqLpKxugRr48eFHYBkYCFqfHk" premium="1" anonymity="1">秋田県、消滅するんじゃなかったっけ?</chat>
<chat thread="1601319601" no="5356" vpos="3326500" date="1601352866" date_usec="456546" mail="yellow big shita 184" user_id="2fQ63VRifZpQQBKPNTZabibc-nY" anonymity="1">なんで3つでひとまとめwwwwwwwwwwwwwww</chat>
<chat thread="1601319601" no="5357" vpos="3327006" date="1601352870" date_usec="883006" mail="184" user_id="Sjvd0dEdDhUFRDFHmmTk-NMDiCo" anonymity="1">イケメン広島に行ってたか</chat>
<chat thread="1601319601" no="5358" vpos="3327100" date="1601352872" date_usec="543884" mail="184" user_id="1QG7MGB7YRMd3oWy1XMGHoWzjlM" anonymity="1">ピースて</chat>
<chat thread="1601319601" no="5359" vpos="3327859" date="1601352879" date_usec="78010" mail="184" user_id="87UnjGJNq_kroDKl043DJMw2a7U" premium="1" anonymity="1">GoToピース</chat>
<chat thread="1601319601" no="5360" vpos="3328100" date="1601352882" date_usec="959429" mail="184" user_id="n6dTYGnU7xPM0qZI2Cn6iZKSdds" anonymity="1">✌</chat>
</packet>
thread(TCP)
URL: tcp://${ms}:${ms_port}
/api/threadのTCPソケット通信版。一度繋げばストリームでコメントが降ってくる。
スレッドごとに接続先が異なる場合がある。接続先についての情報は上記getflvで返ってくる。
接続後に以下の形式のXMLを送信することで、コメントのストリームが始まる。
code:ms.xml
<thread res_from="5283" version="20061206" thread="1601319601" />\0
res_fromの意味はthread(HTTP)と同じ。末尾\0を忘れると永遠に始まらないため注意。
code:chat.xml
<chat thread="1601319601" no="5360" vpos="3328100" date="1601352882" date_usec="959429" mail="184" user_id="n6dTYGnU7xPM0qZI2Cn6iZKSdds" anonymity="1">✌</chat>
getchannels
URL: http://jk.nicovideo.jp/api/v2/getchannels/
getwaybackkey
thread(HTTP)で使うwaybackkey。x-www-form-urlencoded。
URL: http://jk.nicovideo.jp/api/v2/getwaybackkey
パラメータ(GET)
thread(必須)
スレッドID
code:getwayback
waybackkey=111111111.XXXXXXXXXXXXXXXXXXXXXX
参考
余談
v2_appもあるらしいけど何か違うんだろうか