ニコニコAPIを用いた動画集計について
今まではニコニコ動画公式さん、またはニコニコ超検索さんの検索機能を用いて集計を行ってきましたが
今回新たにデータ集計にニコニコ動画のAPI情報を取得し利用できるようになりました
ニコニコAPIを利用する際の情報取得条件についてまとめていきます
①概要
▼ニコニコ大百科の記事
APIとはアプリケーション・プログラミング・インターフェイスの頭文字をとったもので
webサイトが公開しているサイト内部情報とのことです
現在私が用いている方法として、
特定の動画情報URLをExcelのWEBSERVICE関数にて指定して取得しています
取得した情報の文字列を抽出するMID関数(SEARCH関数、LEN関数併用)にて取得したい情報を各セルに分解し
マクロを実行し指定した回数分行のコピーペーストを実施します
関数軽量化のため指定回数ごとにコピーペースト→値貼り付けとし関数を値化して、再計算件数を減らしています
例:100行ずつ、500回繰り返して50,000動画のデータを抽出
だいたい50,000動画のデータ取得・展開に1時間30かかっています
追記:上記手法に関して複数行を一回の処理で展開した場合に本来取得できるはずですが取得できない動画情報が10%程度発生したため
1行ずつデータ取得を行う形式に変更しました
この場合、上記理由で取得できない動画情報はほぼ0%となり、処理時間は50,000動画で2時間程度となりました
②動画情報取得の注意点
・取得できない動画情報について
削除済み動画、コミュニティ動画、非表示設定されている動画
・動画IDの付与について
動画IDはおそらくニコニコ動画サーバー上に動画アップロードがされた(動画IDがリクエストされた?)段階で割り振られると予想しております
そのため動画ID順=動画公開順とはなりません
予約投稿があると特に公開日が大きく異なる動画がID続きになります
例 動画ID → 取得した公開日
sm40000000→2022/5/1 0:00
sm40000001→2022/6/1 18:00(予約投稿されたものと予想される)
sm40000002→2022/5/1 0:03
※動画IDと情報は実際のものとは異なります
・公開予約をしている動画情報も取得される
たとえば、2022年5月1日に、2022年6月1日に公開予約設定をした動画がアップロードされ、2022年5月15日にこの動画IDを指定して情報を取得すると、公開予定2022年6月1日、再生数0 として取得されます
③ボイチェビ動画の判定
タグ情報よりボイチェビ動画の判別を行っております
ニコニコ動画さん、ニコニコ超検索さんでは指定できる検索タグ数に上限がありましたが、Excelのセルに関数を設定することでそれが実質なくなった状態となっております
また、用語を含む検索もできるようになりました
例:今までは「結月ゆかり」「結月ゆかり実況プレイ」「結月ゆかり解説」・・・とタグ完全一致で指定→「*結月ゆかり*」でこれらをまとめて扱えます
以下、使用している検索項目です
・各ソフトウェアを識別するタグ
例「*VOICEROID*」「*CeVIO*」「*voicevox*」
・「ソフトウェアトーク」タグ
慣習的に合成音声トークソフトにつけられることが多いため、採用しています
タグのついている直近動画について確認したところ「ゆっくり動画」にこのタグが用いられることはごくまれと考えております
・各キャラクターを識別するタグ
例:琴葉葵の場合、「*琴葉葵*」、「*琴葉姉妹*」、「*琴葉茜・葵*」など
なお、特定の動画シリーズ・投稿者にのみ用いられると考えられる独特のタグはその使用動画が多くてもあえて対象とはせず、一般的に使用されるであろうタグを採用しています
・音楽ジャンルの取り扱いについて
音楽ジャンルには多くのボーカロイドなど合成音声ソングソフト動画があり、合成音声トークソフトと同様のキャラクターが出演し同一タグがつくことが多く、ボーカロイド等側の割合も多いことから
音楽ジャンルに関しては他と検索方法を変え「歌うボイスロイド」など「歌う+トークソフト」または「ボイパロイド」タグがついた動画のみを検索対象としています
④今後の課題
ニコニコAPIをエクセルの関数で取得できるようになり調査できる範囲がかなり拡大しましたが、課題もまだまだ山積しています
・期間指定ができない
前述した通り動画IDを指定しての動画情報取得となるため、決まった期間に含まれるすべての動画を抽出することが容易ではありません
やるのであれば、かなり広い範囲のデータを取得して、その中から期間を絞り込む必要がありますが
かなりの時間がかかります
・取得に時間がかかる
こちらも前述した通り、50,000行のデータを取得するのに2時間程度かかります
うち20%程度は削除済み、コミュ限、非公開など取得できないため実質40,000動画のデータで2時間となります
1ヶ月当たりニコニコ動画全体で100,000動画を超える動画公開があるため、これらを取得するのに5時間程度かかります
取得のためのパソコンの操作自体は最初の数分で、その後はExcelのマクロが自動でデータ取得するのですが、マクロが動作している間は絶えずコピー&ペーストが実行され、その間はパソコンを操作することができないため、マクロを実行するタイミングを見極める必要があります
・関数展開に時間がかかる
取り扱うデータが100,000行などになると、取り扱うExcelを集計する関数を一列追加して100,000のセルにペーストすると、エクセルの再計算処理でかなりの時間待たされます
・文字の欠落が見られる
40,000動画のうち2〜3のジャンル情報について、謎の文字の欠落が見られています
例:「音楽・サウンド」 が 「音楽・サンド」 になっている など
法則性も見つからず、ジャンル以外の情報も欠けている可能性があります
以上課題を書いてみました
もともと、JAVAなどのプログラミング言語を利用した情報取得の検討・調査をしている中で
使い馴染みのあるエクセルで情報取得できるという記事を目にし、試したところ情報取得ができたため
不完全ではありますが、現在の情報取得方法は暫定的な対応となっています
今後Javaなどで情報を取得する方が良い場合(おそらくそうなのだと予想しています)、そちらに切り替えていくのと同時に
必要に応じてACCESSなどのデータベースソフトを利用し、大量のデータを容易に取り扱えるようにしていこうと考えております
もし有識者の方、何かご助言などございましたらご連絡いただけると幸いです
ブログのコメント欄もしくはTwitterのDM、質問箱などあけております
おしまい