ニコニコ動画のコメント解析

今回はニコニコ動画のコメントの取得をしてみました。

ニコニコ動画APIが非公式であるんですが、コメントの取得はできるのかなー?と思ったので調べてみました。

取得方法

ニコニコ動画のコメントを取得するにはまず、ニコニコ動画にログインした状態で、

からメッセージサーバーのアドレスとスレッドIDを取ってくる

ログインした状態とは、ニコニコ動画にログインするとセットされるuser_sessionという Cookie があればログインした状態となります。
短時間でgetflvを叩くとエラーが帰ってくるので注意が必要です。

ついでに昔のURLは、http://www.nicovideo.jp/api/getflv/ですが、現在はリダイレクトされるので flapi の方を使ったほうがいいですね。

  • メッセージサーバーにXMLをPOSTすればコメントを取得できる↓
<thread thread="スレッドID" version="20061206" res_from="コメント数" />
  • fork="1"を追加することによって投稿者コメントを取得できる
  • 公式動画の場合はスレッドキーを追加することで公式動画のコメントも取得できる
    http://flapi.nicovideo.jp/api/getthreadkey?thread=スレッドID

ニコニコ動画では、下記のように一括で取得しているようです。

<packet>
<thread thread="スレッドID" version="(20061206|20090904)" scores="(0|1)" nicoru="(0|1)" language="(0|1|2)" with_global="(0|1)"/>
<thread_leaves thread="スレッドID" scores="(0|1)" nicoru="(0|1)" language="(0|1|2)">0-10:100,500</thread_leaves>
<thread thread="スレッドID" version="(20061206|20090904)" res_from="-1000" fork="(0|1)"/>
</packet>

※括弧内はいずれかの値を使用してください。
2行目でスレッドの情報を取得
3行目でコメントを取得できます。『0-10:100,500』は、0~10分間のコメントを1分間最大100コメずつ、直近で500コメは取得する。でいいのかな?
4行目で投稿者コメントを取得

GETでもできる

http://msg.nicovideo.jp/10/api/thread?version=20090904&thread=1173108780&res_from=-100

  • msg.nicovideo.jp/10/api
    • メッセージサーバーURL (1~72くらいある)
    • 2015年8月頃から、nmsg.nicovideo.jp というドメインも存在するので留意
  • version
    • 20061206 または 20090904
  • thread
    • スレッドID(上記はsm9)
  • res_from
    • 取得コメント数(最大直近1000コメ)

バージョンが新しい方では、分毎のコメント数なども取得できます。

JSONフォーマットでもGETできます。
http://msg.nicovideo.jp/10/api.json/thread?version=20090904&thread=1173108780&res_from=-100

JSON + POSTの場合は、
http://msg.nicovideo.jp/10/api.json/に、

[{"thread":{"thread":1173108780,"version":20090904,"scores":1,"nicoru":1,"with_global":1,"res_from":-250}}]

こんな感じでPOSTすれば取得できるが、thread_leaves を用いたコメント数の指定方法はわからない。

追記(2016/5/10):
JSON + POSTの場合でも、nmsgサーバーの場合はthread_leavesが使える(順次対応の模様)

[{"thread":{"thread":1307098772,"version":20090904,"language":0},"thread_leaves":{"thread":1307098772,"content":"0-51:100,1000","language":0,"scores":1}}]

また、過去のコメントを取得したい場合は、ログインした状態ユーザーID指定時間のタイムスタンプwaybackkeyとやらを送りつけることで過去コメも取得できるようです。

waybackkeyの取得

<thread thread="スレッドID" version="20061206" res_from="コメント数" when="タイムスタンプ" waybackkey="うぇいばっくきー" user_id="ユーザーID" />

そんなかんじでコメントをダウンロード・解析できるページを作ってみました(結構前から作って放置してたんですけど
追記:いつの間にか凝ったものを作ってしまいました三c⌒っ.ω.)っ

http://chillin.cafemix.jp/
移転:http://www.nicofinder.net/

※この記事は加筆修正しています。

参考にしたサイト:

ニコニコ動画API: getflvとコメントの取得
ニコニコ動画を分析してみる
追記:ニコニコ超開発