今回はニコニコ動画のコメントの取得をしてみました。
ニコニコ動画APIが非公式であるんですが、コメントの取得はできるのかなー?と思ったので調べてみました。
取得方法
ニコニコ動画のコメントを取得するにはまず、ニコニコ動画にログインした状態で、
http://flapi.nicovideo.jp/api/getflv/動画ID(sm9)もしくは、スレッドID
からメッセージサーバーのアドレスとスレッドIDを取ってくる
ログインした状態とは、ニコニコ動画にログインするとセットされるuser_session
という Cookie があればログインした状態となります。
短時間でgetflvを叩くとエラーが帰ってくるので注意が必要です。
ついでに昔のURLは、http://www.nicovideo.jp/api/getflv/
ですが、現在はリダイレクトされるので flapi の方を使ったほうがいいですね。
変更したのはずいぶん前だけど、旧アドレスへのアクセスがまだあるのね RT @shinno ニコニコ動画APIのURLを修正しました。ご利用の方は修正お願いしますー : ニコニコ動画API – ニコ百 http://bit.ly/aPGSyE
— Akihiko Koizuka (@koizuka) June 26, 2010
- メッセージサーバーに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の取得
http://www.nicovideo.jp/api/getwaybackkey?thread=スレッドID
<thread thread="スレッドID" version="20061206" res_from="コメント数" when="タイムスタンプ" waybackkey="うぇいばっくきー" user_id="ユーザーID" />
そんなかんじでコメントをダウンロード・解析できるページを作ってみました(結構前から作って放置してたんですけど
追記:いつの間にか凝ったものを作ってしまいました三c⌒っ.ω.)っ
http://chillin.cafemix.jp/
移転:http://www.nicofinder.net/
※この記事は加筆修正しています。
参考にしたサイト: