これは、NicoClientというTypeScript製のニコニコ動画のラッパーを開発する際のメモ書きです。
随時追加していきます。
注意
ここに載っているAPIの大半は公表されていないAPIです。
自己責任で使用して下さい。
ニコニコ動画のサーバーに負担がかからないよう、リクエストは最小限にとどめるなど節度を持った利用をしましょう。
また、UserAgentを適切に指定しましょう。
例: <実装するソフトウェアとかの名前>/<バージョン> <開発者のメール> niconico/<ニコニコのユーザーID>
*
が付いたヘッダやパラメーターなどは必須です。
付いていないものは必須では有りませんが、取得できるデータが少なくなったりします。
githubのリンク先でanyとなっているものは筆者が確認できていないデータです。
もしそのデータが確認できた場合は教えてくれたら追記します。
間違っていたら教えて下さい。
nicovideo.jp
多くの場合、以下のような値を指定しないと INVALID_PARAMETER(400) と怒られます。
指定しましょう
Frontend-Id
とFrontend-Version
は必須です。
他はなくてもいいですが、あったので一応書いておきます。
X-Frontend-Id: 2
X-Frontend-Version: 9.46
X-Niconico-Language: ja-jp
X-Client-Os-Type: others
いくつかのapiでしか確認をしていませんが、以下のようなパラメーターを指定することでも大丈夫なようです。
_frontendId
: 2
_frontendVersion
: 9.46
多くのサンプルコードの場合X-Frontend-Version
は整数ですが、
後述する nvapi.nicovideo.jp/v1/hello で整数だとINVALID_PARAMETER(400)
が返されるので小数点付きの方がよいと思います。
執筆時点(2024/05/09)のWeb版は以下を使用していました。
X-Frontend-Id: 70
X-Frontend-Version: 0
レスポンス
jsonは以下の形式で帰ってきます。
この記事ではmetaは無視してdata以下を記述しています。
{
"meta": {
"status": 200,
"id"?: string,
"errorCode"?: string,
"errorMessage"?: string,
}
"data": {
/* ... */
}
}
Cookie
ニコニコ動画のアカウント認証はuser_session
という値が使用されます。
二段階認証を設けている場合でもこの値だけです。
Cookie: user_session=user_session_<userid>_<token>
ActionTrackID
ActionTrackIDはコメントなどを取得する際に使用される値です。
リクエストごとにランダムな値を生成する必要があります。
ActionTrackIDは <英数字>_<数字>
の値です。
英数字と数字は一文字以上であれば何でもよさそうです。
だた、実際のリクエストでは <英数字10桁_UnixTime>
が使われているのでそれを使います。
www.nicovideo.jp
api/watch/v3(_guest)/
動画情報を取得するapiです。
https://www.nicovideo.jp/api/watch/v3/<videoID>
(ログイン必須)
https://www.nicovideo.jp/api/watch/v3_guest/<videoID>
Method: GET POST PUT PATCH DELETE
Header:
X-Frontend-Id
*
X-Frontend-Version
*
Param:
actionTrackId
*: actionTrackID
Response: VideoInfo.www.d.ts
media系は飛ばしてるところがありますが、きちんと理解したら追記します。
こちらも参考になるかと ニコ動 動画情報取得API サンプルレスポンス
api/watch/v3/
でログインすることで各viewer
の値が確認できるようになります。
api/watch/v3_guest/
では各viewer
の値はnull
になります。
nvapi.nicovideo.jp
v1/hello
アプリのアップデートを確認するapiです。
https://nvapi.nicovideo.jp/v1/hello
Method: GET
Header:
X-Frontend-Id
*
X-Frontend-Version
* - 小数点以下がないとだめ
Param:
osVersion
: 15.8.2
(exam)
- iOSだとシステムのバージョンだったけど他は確認してない
data: {
"version": {
"isUpdateRequired": false,
// アプリにアップデートが必要かどうか(X-Frontend-Version)が最新かどうか
"isOSUpdateRequired"?: false,
// OSにアップデートが必要かどうか(osVersion指定時のみ)
}
}
account.nicovideo.jp
secure.nicovideo.jp
はaccount
と内容は同じだと思います(パスは違う)。
もし違う点があった場合は随時書きますが、今のところ書く予定はありません。
login/redirector
ニコニコ動画にメール(電話番号?)とパスでログインするapiです。
Cookieで取得できます。
https://account.nicovideo.jp/login/redirector
執筆予定...
(2段階認証のログインも執筆予定)
RestAPIでセッションを取得する方法はなさそうです。
api/public/v2/user.json
アカウントの個人情報とかを取得するapiです。
https://account.nicovideo.jp/api/public/v2/user.json
執筆予定...
Response: AccountInfo.account.d.ts
api/v1/register/account_passport
ゲストアカウントを新規作成するapiです。
https://account.nicovideo.jp/api/v1/register/account_passport
以下が参考になると思います。
Nicoaccount-Signature/register.py
Cryptoとかよくわかってないので、NicoClientには未実装です。
実装するかもですが
snapshot.search.nicovideo.jp
公開されてるAPIです。
サーバーに負荷がかからないようにできるだけこのapiから取得する方が良いでしょう。
詳しくは以下に記載されています。
api/v2/snapshot/video/contents/search
ニコニコ動画のスナップショットから動画を検索するapiです。
api/v2/snapshot/version
スナップショットの最終更新日時を取得するapiです。
nimg.jp
dcdn.cdn.nimg.jp
nicovideo/old-ranking/
ニコニコ動画の過去ランキングを取得するapiです。
詳しくは以下を参照してください。
参考
https://qiita.com/vram/items/0b14bc800ce8fd69b70d
https://zenn.dev/negima1072/articles/nvcomment-api
https://github.com/popo-nyan/Nicoaccount-Signature
https://site.nicovideo.jp/search-api-docs/snapshot