ニコニコ動画API とは、ニコニコ動画で利用可能なAPI(Application Programming Interface)である。
概要
現時点でも様々な方法でニコニコ動画内の情報(動画情報やサムネイルなど)を取得している方がいると思いますが、これも思ったより負荷がかかるので心情的にはやめてほしいというのが正直なところです。できれば負荷の少なそうな時間帯にやってもらえるとありがたいです、こっそりと。
最終的には他のサービスと同様にニコニコ動画内の情報を提供するAPIというのは用意していく予定で、具体的なスケジュールはまだ未定ですが年内にはいろいろできてるんじゃないかと思います。というわけで温かい目で見守ってください。情報は継続的に開発者ブログなんかで提供していきます。
とのことなのだが、どこからどう見ても継続的に開発者ブログで情報を提供している形跡はない。まあそれはともかく、APIが用意されている情報に関してはAPIを用いて取得しよう。そちらの方が一般的に楽。 ニコニコチャート などもこれらのAPIを使用してランキング情報を取得している。また、利用する際はheaderに個別のUser-Agentを設定することが推奨されている。
ニコニコ公開API
スナップショット検索API
ニコニコ動画の動画を検索するための公式API「スナップショット検索API」が2014年10月15日に公開された。2016年12月7日に、2017年2月末頃を目途として「 スナップショット検索API v2 」へと置き換えられることが 発表
された。JSONをPOSTすることで、特定のキーワードやフィルタ条件に合致する動画の情報を一括で取得できる。
ニコニコ非公開API
ニコニコのサーバ上で運用されているものの運営から存在が明言されていないAPI。予告なく停止する可能性もあるので利用は自己責任で。
getthumbinfo
GET https://ext.nicovideo.jp/api/getthumbinfo/{動画ID}
動画ID | smやsoから始まる動画を識別する固有のID | sm500873 |
動画の簡単な情報をXML形式で取得する。ログイン無しでも使用でき、アクセス制限が無いのが最大の特徴。動画IDまたはスレッドID(コミュニティ動画やチャンネル動画で使われる数字のみから成るID)を指定できる。また、得られるものはほぼ最新の値だが、サーバー側でキャッシュが利いているらしく、何回かリロードすると値が変化することもある。
削除済み動画、コミュニティ動画、非表示設定されている動画は情報が得られず、 nicovideo_thumb_response タグのstatus属性が "fail" となる(通常は"ok")
nvapi
ジャンル別や個別ランキングのランキングデータが取得できる。4月7日のランキング改定にあわせて個別ランキングの追加があった模様。個別のランキングは/teiban/となっているので以下では仮に定番ランキングと記載している。
前提
以下のリクエストヘッダーが必須になっている模様。なお、クエリパラメータに「_frontendId=6」を指定しないとランキングデータからなぜか一部動画が欠落することがある。
ヘッダー名 | 説明 |
---|---|
User-Agent | 作成しているツール名を入力する。具体的なツール名をきちんと明記しないとはじかれる危険がある。 |
Cookie | ニコニコ動画のuser_session Cookieを指定する。 |
ジャンル一覧取得
GET https://nvapi.nicovideo.jp/v2/genres
レスポンスは以下のようにジャンルキーとラベルの組み合わせになっている。
ジャンル別ランキングデータ取得
GET https://nvapi.nicovideo.jp/v1/ranking/genre/{ジャンルキー}
現時点で確認できる範囲においては、パラメータの仕様は以下の通り。
URLパラメータ
パラメータ名 | 必須要否 | 説明 |
---|---|---|
{ジャンルキー} | 必須 | allを指定すると全ジャンルが取得可能。個別のジャンルを取得する場合は一覧取得で確認したジャンルキーを使用する。 |
クエリパラメータ
パラメータ名 | 必須要否 | デフォルト値 | 説明 |
---|---|---|---|
term | 必須 | 24h | ランキングの集計期間でそれぞれのランキングについては以下の値になっている。 |
page | 任意 | 1 | ページの番号 |
pageSize | 任意 | 25 | 1ページあたりの取得件数だが、任意の数は指定できない。25と100しか用意されていない模様。 |
レスポンスデータ
レスポンスデータは以下の通り。何に使っているかわからないものもある。
キー | 値 | 備考 |
---|---|---|
type | "essential" | 固定されている? |
id | 動画ID | |
title | 動画タイトル | |
registeredAt | 投稿日時 | ISO 8601形式 |
count | 数値データ | カンマ区切りなし |
└view | 再生数 | 取得できるデータはリアルタイムに更新されている |
└comment | コメント数 | |
└mylist | マイリスト数 | |
└like | いいね数 | |
thumbnail | サムネイル画像 | サムネイル画像のURLが各種用意されている。 |
└Url | サムネイル画像URL | 標準サイズ(130x100ピクセル) |
└middleUrl | 中サイズ(320x180ピクセル) | |
└largeUrl | 大サイズ(360x270ピクセル) | |
└listingUrl | 中サイズ(320x180ピクセル)※用途不明 | |
└nHdUrl | 最大サイズ(640x360ピクセル)※用途不明 | |
duration | 動画の再生時間 | 単位は秒 |
shortDescription | 動画説明文 | 冒頭の抜粋 |
latestCommentSummary | 直近のコメント | |
isChannelVideo | チャンネル動画判定 | チャンネル動画以外はfalse |
isPaymentRequired | 有料動画判定 | 有料動画以外はfalse |
playbackPosition | ※詳細不明 | |
owner | 投稿者情報 | |
└ownerType | 投稿者のタイプ | userかchannel |
└Type | ※詳細不明 | ownerTypeと同じ値になっている |
└visibility | ※詳細不明 | 基本的にvisibleが入っている |
└id | ユーザーID | ownerTypeがchannelの場合は先頭に「ch」が付与されている |
└name | ユーザー名 | チャンネルの場合にはチャンネル名 |
└iconUrl | ユーザーアイコンの画像URL | |
requireSensitiveMasking | ※詳細不明 | センシティブフラグのようだが例のソレもすべてfalseになっている |
videoLive | ※詳細不明 | ライブ公開した動画もfalseになっている |
isMuted | ※詳細不明 | 基本的にfalseが入っている |
9d091f87 | ※詳細不明 | 基本的にfalseが入っている |
acf68865 | ※詳細不明 | 基本的にfalseが入っている |
定番ランキング一覧取得
GET https://nvapi.nicovideo.jp/v1/ranking/teiban/featured-keys
レスポンスは以下のようにランキングごとのキーとラベル、トレンドタグ(※)が取得可能なランキングの組み合わせになっている。
"featuredKey": "dshv5do5",
"label": "ボカロ"
"isEnabledTrendTag": false
(※)トレンドタグとは定番ランキングの上部に並んでいる個別のタグランキングのことを指す。例えば「ボカロ」では「初音ミク」や「VOCALOID」などが並んでいる。
featuredKeyを後述のトレンドタグ一覧取得APIや定番ランキングデータ取得APIで指定する。
トレンドタグ一覧取得
GET https://nvapi.nicovideo.jp/v1/ranking/teiban/featured-keys/{featuredKey}/trend-tags
定番ランキング一覧で取得したfeaturedKeyを利用して、定番ランキングごとにトレンドタグとして何が存在しているのかを取得できる。ここで取得できたトレンドタグを定番ランキングデータ取得APIで使用することで、定番ランキング全体からさらに絞り込んだトレンドタグごとのランキングデータを取得できる。
レスポンスは以下のようにランキングごとのキーとラベル、トレンドタグの組み合わせになっている。
"featuredKey": "v6wdx6p5",
"label": "解説・講座",
"isTopLevel": false,
"isImmoral": false,
"trendTags": [
"琴葉茜",
"voiceroid解説",
"ニコニコ動画講座",
"VOICEROID解説",
"ゆっくり解説",
"VOICEVOX解説",
"歴史",
"科学",
"SCP解説",
"ずんだもん",
"結月ゆかり"
なお、isTopLevelは総合のみtrueになっているので、最上位ランキングであることを示していると思われる。isImmoralは例のソレのみtrueになっている。つまりはそういうこと。
定番ランキングデータ取得
GET https://nvapi.nicovideo.jp/v1/ranking/teiban/{featuredKey}
現時点で確認できる範囲においては、パラメータの仕様は以下の通り。
URLパラメータ
パラメータ名 | 必須要否 | 説明 |
---|---|---|
{featuredKey} | 必須 | 定番ランキング一覧取得で確認したfeaturedKeyを使用する。 |
クエリパラメータ
パラメータ名 | 必須要否 | デフォルト値 | 説明 |
---|---|---|---|
term | 必須 | 24h | ランキングの集計期間でそれぞれのランキングについては以下の値になっている。 |
page | 任意 | 1 | ページの番号 |
pageSize | 任意 | 25 | 1ページあたりの取得件数だが、任意の数は指定できない。25と100しか用意されていない模様。 |
tag | 任意 | - | トレンドタグ一覧取得で得られたタグを指定するとトレンドタグに絞り込んだランキングデータが取れる。 定番ランキング一覧取得APIのレスポンスに含まれるisEnabledTrendTagがtrueの場合のみ指定可能で、termのパラメーターが24hとhourの場合のみデータが取得できる。 |
レスポンスデータ
レスポンスデータは以下の通り。何に使っているかわからないものもある。
キー | 値 | 備考 |
---|---|---|
type | "essential" | 固定されている? |
id | 動画ID | |
title | 動画タイトル | |
registeredAt | 投稿日時 | ISO 8601形式 |
count | 数値データ | カンマ区切りなし |
└view | 再生数 | 取得できるデータはリアルタイムに更新されている |
└comment | コメント数 | |
└mylist | マイリスト数 | |
└like | いいね数 | |
thumbnail | サムネイル画像 | サムネイル画像のURLが各種用意されている。 |
└Url | サムネイル画像URL | 標準サイズ(130x100ピクセル) |
└middleUrl | 中サイズ(320x180ピクセル) | |
└largeUrl | 大サイズ(360x270ピクセル) | |
└listingUrl | 中サイズ(320x180ピクセル)※用途不明 | |
└nHdUrl | 最大サイズ(640x360ピクセル)※用途不明 | |
duration | 動画の再生時間 | 単位は秒 |
shortDescription | 動画説明文 | 冒頭の抜粋 |
latestCommentSummary | 直近のコメント | |
isChannelVideo | チャンネル動画判定 | チャンネル動画以外はfalse |
isPaymentRequired | 有料動画判定 | 有料動画以外はfalse |
playbackPosition | ※詳細不明 | |
owner | 投稿者情報 | |
└ownerType | 投稿者のタイプ | userかchannel |
└Type | ※詳細不明 | ownerTypeと同じ値になっている |
└visibility | ※詳細不明 | 基本的にvisibleが入っている |
└id | ユーザーID | ownerTypeがchannelの場合は先頭に「ch」が付与されている |
└name | ユーザー名 | チャンネルの場合にはチャンネル名 |
└iconUrl | ユーザーアイコンの画像URL | |
requireSensitiveMasking | ※詳細不明 | センシティブフラグのようだが例のソレもすべてfalseになっている |
videoLive | ※詳細不明 | ライブ公開した動画もfalseになっている |
isMuted | ※詳細不明 | 基本的にfalseが入っている |
9d091f87 | ※詳細不明 | 基本的にfalseが入っている |
acf68865 | ※詳細不明 | 基本的にfalseが入っている |
thumb
GET https://ext.nicovideo.jp/thumb/{動画ID}
getrelation
GET https://flapi.nicovideo.jp/api/getrelation?page=1&sort=commentCount&order=acs&video=sm9
nvcomment
GET https://nvcomment.nicovideo.jp/legacy/api.json/thread?nicoru=3&res_from=-1000&scores=1&thread=1173108780&version=20090904&with_global=1
rss
GET https://www.nicovideo.jp/**/**?rss=atom
GET https://www.nicovideo.jp/**/**?rss=2.0
マイリストや投稿動画一覧などのURLの最後に「?rss=atom(または2.0)」と打ち込んでアクセスするとATOM(RSS)形式で表示され、購読することも可能
外部API
ニコニコ実況過去ログAPI
ニコニコ実況過去ログAPIとはニコニコ実況のコメント過去ログをXML形式、JSON形式で取得できる非公式API。それぞれの実況チャンネルのコメントを日時範囲指定で取得できる。
API利用ツール等
ここではニコニコ動画APIを利用するライブラリ及びツールの例を紹介する。
nicovideo gem (Ruby)
インストール方法
% gem install nicovideo
nicovideo Thumbinfo popup (Greasemonkeyスクリプト)
nicovideo Thumbinfo popup は、ニコニコ動画へのリンクにマウスカーソルを載せるとサムネイル情報をポップアップ表示する。
NicoApiWrapper
ニコニコ技術部員の作成したツール、兼ライブラリ。Javaで書かれており利用方法も動画で紹介されている。
外部リンク
関連項目
脚注
- 35
- 0pt