GETFLV

コメント取得

上記GETFLVの項のリンク先説明にあるとおり、GETFLVの戻り値から得られるURLからコメントを取得する。

コメントを取得するためにPOSTすべきメッセージフォーマットは、ニコニコ動画のコメント仕様毎(「コメント保持数の仕様」項参照)に存在する模様。

2008年2月4日~

<thread thread="スレッドID" version="20061206" res_from="コメント数">

なお、いつの頃からかpacketタグで囲まれるようになっており、現在では、

<packet><thread thread="1303805536" version="20061206" res_from="-1000" user_id="nnn"/></packet>
となる。

投稿者コメントを取得する場合は、前述リンク先にあるとおりforkを付与。

過去ログ取得の場合にはwhenやらwaybackkeyやらを付与することになる。

2011年2月3日~

<packet><thread thread="1313100893" version="20090904" user_id="nnn"/><thread_leaves thread="1313100893" user_id="nnn">0-8:100,500</thread_leaves></packet>

threadタグの中身は、2008/2/4-版 res_from が無いものになっている。そして新しくthread_leavesタグが増えている。属性はthreadと同様で、要素の意味は上記リンク先の通り。細かい仕様は別にあるようで、これは #26020 で調査予定。

投稿者コメントがある場合は以下の通り。

<packet><thread thread="1312907031" version="20090904" user_id="nnn"/><thread_leaves thread="1312907031" user_id="nnn">0-5:100,250</thread_leaves><thread thread="1312907031" version="20061206" res_from="-1000" fork="1" click_revision="-1"/></packet>

packetの中に投稿者コメント用のthreadが詰められている。

click_revisionの意味は不明。NicoBrowserでは付与していない(追記: ニコニコ動画が機能拡張したみたい - まめ畑に説明有り)。

公式動画の場合は以下。

<packet><thread thread="1313044774" version="20090904" user_id="nnn" threadkey="xxx" force_184="n"/><thread_leaves thread="1313044774" user_id="nnn" threadkey="xxx" force_184="n">0-24:100,1000</thread_leaves></packet>
threadkey, force_184も、共にthread, thread_leaves両方についている。これらの情報取得は2008/2/4~版と同じ。公式プレーヤのパケットキャプチャを行うと、threadkeyを付けていないpacketと付けていないpacketをそれぞれ1回ずつ計2回投げているようだが意図は不明。threadkeyを付与しないPOSTではコメントは取得できていないが、エラーではなく以下のようにそれなりの情報を含んでいるので、何かに用いているのかもしれない。
<?xml version="1.0" encoding="UTF-8"?><packet><thread resultcode="0" thread="1313044773" ticket="0x2bfd8000" revision="1" server_time="1313601549"/><view_counter video="169832" id="so15277626" mylist="1723"/><thread resultcode="0" thread="1313044773" ticket="0x2bfd8000" revision="1" server_time="1313601549"/></packet>

なお、「コメントの量を減らす」にチェックを入れた場合は、前述の2008/2/4のフォーマットが用いられる。

過去ログ

公式プレーヤでは、非過去ログの場合、前述のとおり投稿者コメントと一般コメントは1つのpacketにまとめて1回のGETで一括取得している。一方、過去ログ取得では投稿者コメントと一般コメントをそれぞれ別のGETで取得している。ただし、まとめてしまっても正常に取得できたのでいんきゅばすv2ではまとめて送信している。

投稿者コメント過去ログ

<packet><thread thread="1196772170" version="20061206" res_from="-1000" waybackkey="1313687447.rVm2w89IdtTH4cHpuBFGA8fYTCQ" when="1251824340" user_id="nnn" fork="1"/></packet>

昔のバージョンと変わっていない。

通常コメント過去ログ

<packet><thread thread="1196772170" version="20090904" waybackkey="1313687406.fbHglDiiHLdONAAeD6YO-MLMlv8" when="1251910740" user_id="nnn"/><thread_leaves thread="1196772170" waybackkey="1313687406.fbHglDiiHLdONAAeD6YO-MLMlv8" when="1251910740" user_id="nnn" res_before="15822">0-11:100,1000</thread_leaves></packet>

waybackkey, whenはthreadタグとthread_leavesタグ両方についている。

res_beforeの意味は不明だが、名称から想像するに、すでに取得済みの通常コメント(非過去ログコメント)の最も若いコメントの番号を指定して、情報の重複取得によるネットワークリソース浪費を防ぐ目的とかでないだろうか。付与しなくても取得に問題は無い模様。

2011年2月3日以前(2010年など)を指定してもこのフォーマットが使われている。 2010年12月22日版(2011年2月3日版のひとつ前)の仕様変更では、過去ログ取得に影響が出たらしいが、この、常に新フォーマットで要求するという実装のせいだろう(つまり2011年2月3日版でも過去ログ取得では当時のコメント表示再現はできないはず)。

http://twitter.com/koizuka/status/17512844694130689

@koizuka
Akihiko Koizuka
「コメントの量を減らす」のon/off状態も含めて過去ログやマイメモリー作成に反映するので、今だと崩れてしまう過去作品はマイメモリーなどで再現残すこともできる
12月22日 Echofonから 
とあるので、昔の形で見たかったら「コメント量を減らす」にすればよい(する必要がある)。

NG共有機能(2011/10/05~)

【ニコニコ】自動ローカル保存プロクシ NicoCache14より:

573 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/10/05(水) 17:20:34.07 ID:fTCAJqzB0
NG共有機能について、ちょっと挙動を見た感じのまとめ。

・コメント取得時にscores="1"付きでリクエストすると、各コメントがスコア付きで返される
・プレイヤー側で閾値を設定して、閾値以下のコメントは表示しない。スコアは負の値のみ?
・NG登録時は&comments=を付加してコメ番も鯖に通知
・nl本体のコメント取得はscores="1"を付加していないのでスコア無し

スレッドID

一般的なsmで始まる動画のページ( http://www.nicovideo.jp/watch/sm9 など)では、代表スレッドページ( http://www.nicovideo.jp/watch/1173108780 など)へのシンボリックリンクになっているが、soで始まる動画( http://www.nicovideo.jp/watch/so15210023 など)では、代表スレッドページ( http://www.nicovideo.jp/watch/1312437962 など)へリダイレクトされる、というのがsmとsoの差異と考えればよい模様。

ちなみに無料視聴期間が終わると、更に購入ページ( http://www.nicovideo.jp/ppv_video/ch60005/so15210023 など)にリダイレクトされる。この状態の動画では、リダイレクトは2回発生する(直接このページにリダイレクトされるわけではない)。

NicoBrowser0.9.2(及びこれを用いているいんきゅばす1.6.0)では、上記の性質を利用し、リダイレクトが0回または1回であればダウンロード可能な動画とみなしている。

スレッドIDから動画IDの逆引き

以前の調査では、nicocache_nlにおいてはwatchページをスクレイピングして動画IDを取得していた。 (この手法はNicoBrowserの方針にはそぐわないとみなしたので、現在のNicoBrowserでは未対応である。すなわちNicoBrowserではスレッドIDから動画IDの逆引きは行えない。)

前述「コメント取得」項で記載したとおり、現在のコメント取得APIにおいては、公式動画に対してthreadkey無しのPOSTを行うとview_counterタグのid要素で動画IDが取得できているように見える。

nicoplayer