8
4
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

【ニコメア】ニコニコ動画の動画情報を取得するAPIの解説(2024年9月版)

Last updated at Posted at 2024-01-30

はじめに

この記事にてニコニコ動画に書き込まれたコメントの取得方法を紹介していました

しかし2024年8月5日にコメントが新サーバーに移行しました
そしてこれまでコメントを取得を取得していたアプリからは取得出来なくなりました

ここでは2024年9月3日に解析した新コメントサーバーとの通信方法を解説します

スレッド情報

コメントを取得するにはまずスレッド情報を取得する必要があります
ニコニコ動画ではsmで始まる動画IDによって普通は管理されていますが
内部ではスレッドとよばれるIDで管理されていますので
まずは動画IDをスレッドIDに変換する必要があります
その変換過程で動画の情報も取得できます

スレッド取得APIは以前は

https://www.nicovideo.jp/api/watch/v3_guest/

というAPIがあり、URLの後ろに動画IDを追加 例えばこの技術の紹介動画のスレッドを取得する場合は

https://www.nicovideo.jp/api/watch/v3_guest/sm43038967

おまじないとしてパラメータを追加

https://www.nicovideo.jp/api/watch/v3_guest/sm43038967?_frontendId=70&_frontendVersion=0&actionTrackId=

この後ろにランダム生成した英数字9文字と数字12文字を追加すると動画情報が取得出来ていたのですが出来なくなりました。

json形式で返してくるapiが見当たらないので動画視聴ページのHTMLを取得して解析するしか無さそうです。

https://www.nicovideo.jp/watch/sm43038967

取得結果

うまくいくとHTMLが取得出来ます

必要な部分だけ説明すると

<link href="https://resource.video.nimg.jp/web/styles/modules/navigation/common_header/common_header.css?1709186126" rel="stylesheet">

common_header.css?の後ろに引っ付いている 1709186126 がスレッドIDで

<div id="js-initial-watch-data" 

というタグの中に様々な情報が入ってます、一部の記号や漢字はHTML用にデコードする必要があります。

"threadKey":"eyJ0eXAiOiJKV1QiL・・

スレッドのキーとしてここの長い情報を覚えておきます

コメントを取得する

新しいコメント取得サーバーはこちら

https://public.nvcomment.nicovideo.jp/v1/threads

アクセスしても何も返しません
実は今回からGETではなくPOSTに変わりました

POSTとしてJSON形式で大量の情報を送って一致させないと返しません

param.json
{
  "params":{
    "targets":[
      {
        "id":"スレッドID",
        "fork":"owner"
      },
      {
        "id":"スレッドID",
        "fork":"main"
      },
      {
        "id":"スレッドID",
        "fork":"easy"
      }
    ],
    "language":"ja-jp"
  },
  "threadKey":"スレッドキー",
  "additionals":{}
}

さきほど取得したスレッドIDとスレッドキーを置き換えたものをPOSTすると

説明
57a1 次のデータ行のバイト数
{"meta":{"status":200},"data":・・・ データ
・・
0 データの末尾

この形式で返ってきます
ステータス200が返っていれば正常です

おわりに

この説明を見ればわかる人ならすぐにコメントを取得出来るでしょう
わからない人は素直に新サーバーに対応したアプリを使って下さい

昔は同じようなアプリが複数の開発者によって公開されていましたが
2024/3/1現在、ついに私1人だけになってしまいました。

今使っているAPIもいつまで使えるかわかりませんが解析は続けたいと思います

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4