ニコニコ動画で現在提供・確認されているAPIを複数用いて必要な動画情報(再生数・コメント数等の範囲検索、及びタイトルやジャンル名等)を採取する方法を簡単に纏めています。今回使用するAPIは下記の通りです。
キリ番達成の確認(VOCALOID殿堂入り、ミリオン達成)、対象動画の件数確認、ニコニコ生放送での動画引用リスト作成等を使う目的として参考までにご利用下さい。
『スナップショット検索API v2』で対象動画を採取
まずニコニコ運営から公式に提供されているスナップショット検索APIを使います。
・ニコニコ動画 『スナップショット検索API v2』 ガイド
各パラメータの使い方は下記の通りです。
・検索キーワード(q)
→検索したいキーワードを複数指定。
例)Aのみ指定
q=A
例)AかつBのみ指定
q=A B
例)A又はBのみ指定
q=A OR B
例)Aは含むが、Bは含まない場合の指定(除外は"-"を使います)
q=A -B
例)キーワード無し
q=
・検索対象のフィールド(targets)
→title(タイトル),description(説明文),tags(タグ),tagsExac(タグ完全一致)を指定。
キーワード無し検索の場合のみ省略可能。
例)タグ完全一致検索を指定
targets=tagsExac
・ソート順(_sort)
→"viewCounter"(再生数)や"commentCounter"(コメント数)等を使用。
昇順の場合は頭に"+"、降順の場合は頭に"-"を付加。
例)再生数を昇順で並び替え
_sort=-viewCounter
(※上記以外の項目での並び替えが必要な場合はガイド参照)
・検索条件(filters)
→"viewCounter"(再生数)か"commentCounter"(コメント数)で検索範囲設定。
例)再生数が5万以上10万以下まで
filters[viewCounter][gte]=50000&
filters[viewCounter][lte]=100000
(※上記以外の項目での条件が必要な場合はガイド参照)
・返ってくるコンテンツの最大数(_limit)
→100固定
・返ってくるコンテンツの取得オフセット(_offset)
→(何ページ目-1)×100+1
・レスポンス値(fields)
→下記の項目を採取選択
・"contentId"(動画ID)
・"title"(タイトル)
・"viewCounter"(再生数)
・"commentCounter"(コメント数)
・"startTime"(投稿日時)
例)動画ID、タイトル、再生数、投稿日時の情報が欲しい場合
fields=contentId,title,viewCounter,startTime
(※上記以外の項目が必要な場合はガイド参照)
例)指定したパラメータで再生数又はコメント数を降順で範囲内のデータを採取。
・[検索キーワード]=指定キーワード
・[検索対象のフィールド]=対象フィールド
・[検索対象]="viewCounter"(再生数)又は"commentCounter"(コメント数)
・[上限]=数値
・[下限]=数値
・[何ページ目]=1以上
・[API_URL]="http://api.search.nicovideo.jp/api/v2/snapshot/video/contents/search?q=[検索キーワード]&targets=[検索対象のフィールド]&_sort=-"&[検索対象]&"&fields=contentId,"&[検索対象]&",title,startTime&_limit=100&filters["&[検索対象]&"][gte]="&[下限]&"&filters["&[検索対象]&"][lte]="&[上限]&"&_offset="&([何ページ目]-1)*100+1
・[採取データ]=WEBSERVICE([API_URL])
『スナップショット検索API v2』採取情報から必要な項目を抜粋
スナップショット検索APIで採取した情報から必要な項目を抜粋します。データはJSON形式となる為、上記条件を例にした場合、採取した動画情報データは下記の通りとなります
{"contentId":"sm26515642","viewCounter":9854502,"title":"【血界戦線ED】シュガーソングとビターステップを歌ってみた まるぐり","startTime":"2015-06-18T20:00:49+09:00"}
EXCELで個別にデータ採取する場合
例えば動画ID("contentId")を採取したい場合、「"contentId":"」から次の「"」までの間の値を抜粋する必要があるので、EXCEL上ではMID関数をSEARCH関数を用いて下記の通り行います。かなり複雑な為、計算式は一文で行わず複数のセルに分けて行うと良い。
・[contentIdがあった最初の桁数]=SEARCH("contentId"":""",[採取データ])
・[動画IDの次の桁数目]=SEARCH(””””,[採取データ],[contentIdがあった最初の桁数]
+LEN("contentId"":""")))
・[動画ID]=MID([採取データ],[contentIdがあった桁数目]+LEN("contentId"":"""),[動画IDの次の桁数目]-[contentIdがあった桁数目]-LEN("contentId"":"""))
なお投稿日時を"yyyy/mm/dd hh:mm:ss"形式に変換したい場合は下記の通りにします。・[投稿日時]=DATE(INT(MID([startTime値],1,4)),INT(MID([startTime値],6,2)),INT(MID([startTime値],9,2)))+TIME(INT(MID([startTime値],12,2)),INT(MID([startTime値],15,2)),INT(MID([startTime値],18,2)))
『getthumbinfo』でリアル情報を採取
ここまで採取した情報(再生数・コメント数等)はリアルな数値ではありませんので、先程採取した動画IDから今度は『getthumbinfo』という非公開APIを使用します。
・ニコニコAPIリストwiki 『getthumbinfo 』
パラメータは下記の通りです。
・[getthumbinfo_URL]="https://ext.nicovideo.jp/api/getthumbinfo/"&[動画ID]
[リアル情報]=WEBSERVICE([getthumbinfo_URL])
リアル情報から必要な項目を採取する場合はFILTERXML関数を使います。
・再生数の場合
FILTERXML([リアル情報],"//view_counter")
・コメント数の場合
FILTERXML([リアル情報],"//comment_num")
・ユーザーIDの場合
FILTERXML([リアル情報],"//user_id")
・ユーザー名の場合
FILTERXML([リアル情報],"//user_nickname")
・タグ名(1件目)の場合
FILTERXML([リアル情報],"//tag[1]
採取した情報からハイパーリンクで直接リンク(EXCEL限定)
ここではEXCEL上からWEBへ直接リンクしたい場合を記載しています。
・ニコニコ動画のページの場合
HYPERLINK("https://www.nicovideo.jp/watch/"&[動画ID],"動画ページへ"))
・ユーザーページの場合(ニコレポ)
HYPERLINK("https://www.nicovideo.jp/user/"&[ユーザーID],[ユーザ名])
関連項目
- 2
- 0pt