「ニコニコ動画の コメント検索 → 動画逆引き (2024/08/14)」


何かと騒がしかった最近のネット界隈。

さて。ニコニコ動画って
 実は「コメント検索 → 動画逆引き」
の機能があるのはご存知でしょうか。

まあ見てもらったほうが早いでしょう。


↑の画像は
  "あら^~"
と言うワードでコメントを検索。

→ ヒットしたコメントの動画IDを取得
→ 動画の再生
→ コメントの位置に移動し、スクリーンをキャプチャーした物です


実際。全部「あら^~」って感じでしょう。
(ユーザーコメントを元に取得してるのですから当たり前ですが)



個人的に、
2020年ぐらいから、クローラーを自作して
稼働 / 取得 / 構築。



数十万件のアニメ動画 / コメントによるデータベースを作成して
私のローカルサーバーに構築しています。

(もちろんこれはあくまで。
私個人が、自分の趣味のために構築している物。
外部公開はしません)




で。さて。
これ、どーやってるかと言うと。^^;

ニコニコ動画の公開API
(Application Programming Interface。
簡単に言えば、
   〇〇をしたい? → じゃあこのコマンド打って
公式のコマンド表と思ってください。)
を使います。



APIの仕様自体は、公開されているので
Webブラウザ & URLを打ち込む事で取得できますが。

それよりも簡単なのは
C#で作られた Niconico Toolkit
ライブラリを使うことでしょう。


だいたい、↓のようなコードを使って。


//※あくまで概念図。実際のコードとは違う。

//APIを作成
var api = new NiconicoToolkit.NiconicoContext();

//"アニメ"とか一般ワードで検索すると数百万ヒットしてしまう。
//それでは多すぎるから、作品別で検索する方がベター。
var titles = ["タイトル1","タイトル2",...]

//全てのタイトルに対して
foreach (var title in titles)
{
  //タイトルの検索 & 結果の取得
  var items = api.VideoSnapshotSearch.GetVideoSnapshotSearchAsync(title);

  //全てのアイテムに対して
  foreach (var item in items)
  {
    //コメントを取得
    var comments = api.Video.VideoWatch.GetInitialWatchDataAsync(item.id);

    //全てのコメントに対して
    foreach (comment in comments)
    {
      //コメントが目的のワードを含んでいたら、
      if (comment.contains("あら^~"))
      {
        //該当箇所のスクリーンを取得&保存
        retrieve(item);
      }
    }
  }
}

/*
あとは好きに。

コメントテキストさえ取得しちゃえば、
テキスト検索でなんとでもできます。
*/



次回にもっと詳しく解説するかも。