レビュー

YouTubeチャンネルの字幕データを検索可能で「あの発言はどのムービーだったっけ?」が一気に解消するツール「Youtube Full Text Search」を使ってみた


YouTubeでは視聴後に自動で別のムービーが再生されたり、関連動画欄の面白そうなムービーをクリックしてしまったりするため、時間を忘れてたくさんのムービーを視聴してしまうことがよくあります。たくさん見過ぎて、後から振り返ったときに「面白いシーンを見つけたはずだったのにどれだったか思い出せない」なんてことも。そんなときに便利なのが字幕を使って文字でシーンを検索してくれるツール「Youtube Full Text Search」です。

NotJoeMartinez/yt-fts: Youtube Full Text Search - Search all of a YouTube channel's subtitles from the command line
https://github.com/NotJoeMartinez/yt-fts


Youtube Full Text Searchを利用する前に、さまざまな環境設定を行っていきます。まずは「Gitのインストーラー」をダウンロードします。ダウンロードできたらインストーラーをダブルクリックで起動し、設定を一切変更せずインストールを進めていけばOK。わからない場合は別記事の「Gitのインストール」の項目を参考にしてください。


続いてPythonのダウンロードページへアクセスし、「Download Python 3.○○.○」と書かれた黄色いボタンをクリック。


「Add python.exe to PATH」にチェックを入れて「Install Now」をクリック。それ以外の設定は初期状態のままでインストールを進めていけばOKです。


Gitのインストール時に「Git Bash」が同時にインストールされているので、スタートメニューから起動します。


そして下記のコードを1行ずつ順番に実行します。後でまたGit Bashを利用するので、実行が終わっても起動したままにしておいてください。

git clone https://github.com/NotJoeMartinez/yt-fts

cd yt-fts

python3 -m venv .env

explorer .


エクスプローラーが立ち上がったらアドレス欄をコピー。


コマンドプロンプトを管理者権限で起動します。


下記のコードをコマンドプロンプトで順番に実行します。

cd "[コピーしたアドレスをペースト]\.env"

mklink /d bin Scripts


「bin <<==>> Scripts のシンボリック リンクが作成されました」という表示が出ればOK。ここでコマンドプロンプトの出番は終了です。


Git Bashに戻り、下記のコードを順番に実行します。これ以降のすべてのコマンドはGit Bashに入力すればOKです。

source .env/bin/activate

pip install -r requirements.txt


これでYoutube Full Text Searchの準備が完了しました。字幕を検索したいチャンネルのURLをコピー。


下記のコードを入力するとそのチャンネルの全ムービーの字幕データがダウンロードされます。

python yt_fts.py download "[URLを貼り付け]"


GIGAZINEチャンネルには全部で8955個のムービーがアップロードされている模様。1時間に約3000個のペースで字幕データをダウンロードでき、約3時間で処理が完了しました。


ところが、ダウンロードした字幕データをDBに保存する際にエラーが出て止まってしまいました。


「UnicodeDecodeError」とのこと。


軽くデバッグしてみると「yt_fts.py」の157行目にエンコード情報を渡せば解決できるようでした。


データの上書きができないため、一度DBを別名に書き換えて退避させておきます。「subtitles.db」を「subtitles.db.bak」という名前に変更しました。


もう一度3時間かけてデータをダウンロードすると今度は全部の字幕をDBに保存することができました。


「python yt_fts.py list」と入力すると取り込み済みのチャンネルのID・名前・URLが表示されます。


「python yt_fts.py search [チャンネルID] "[検索ワード]"」というコマンドで検索を行うことが可能。試しに「movie」という文字で検索してみました。ヒットしたムービーの「タイトル」「単語を含む一節」「タイムスタンプ」「その字幕の位置から再生できるリンク」が表示されます。


GIGAZINEチャンネルの言語設定は日本語なので自動生成される字幕は日本語のはずで、さらに手動で日本語字幕を入れているムービーもあるため、日本語でも検索できるかを試してみたのですが、残念ながら記事作成時点では対応していない模様で、どんな単語で検索してもムービーがヒットしませんでした。

この記事のタイトルとURLをコピーする

・関連記事
YouTube動画を保存して検索可能な個人的アーカイブをセルフホストで構築できる「Tube Archivist」 - GIGAZINE

GoogleやYouTubeで表示される広告を自分好みに変更できる「マイアドセンター」の使い方まとめ - GIGAZINE

YouTubeで「視聴を後悔した動画」のほとんどがYouTubeによるおすすめ動画であったことが判明 - GIGAZINE

YouTubeをアルゴリズムが支配する前はどのようにおすすめ動画が紹介されていたのか? - GIGAZINE

YouTubeのアップデートで「古い順に並べ替え」が不可能になったことが確認される - GIGAZINE

in レビュー,   ソフトウェア,   動画, Posted by log1d_ts

You can read the machine translated English article here.