yt-fts
ist ein Befehlszeilenprogramm, das yt-dlp verwendet, um alle Untertitel eines YouTube-Kanals zu extrahieren und sie in eine SQLite-Datenbank zu laden, die über die Befehlszeile durchsucht werden kann. Sie können einen Kanal nach einem bestimmten Schlüsselwort oder einer bestimmten Phrase abfragen und zeitgestempelte YouTube-URLs zu dem Video generieren, das das Schlüsselwort enthält.
Es unterstützt auch die semantische Suche über die OpenAI-Einbettungs-API mit Chromadb.
Pip
pip install yt-fts
download
Laden Sie Untertitel für einen Kanal herunter.
Akzeptiert eine Kanal-URL als Argument. Geben Sie die Anzahl der Jobs an, um den Download mit dem Flag --jobs
zu parallelisieren. Verwenden Sie --cookies-from-browser
um Cookies von Ihrem Browser in den Anfragen zu verwenden. Dies hilft, wenn Sie Fehlermeldungen erhalten, die Sie zur Anmeldung auffordern. Sie können den update
-Befehl auch mehrmals ausführen, um nach und nach mehr Videos in das zu laden Datenbank.
yt-fts download --jobs 5 " https://www.youtube.com/@3blue1brown "
yt-fts download --cookies-from-browser firefox " https://www.youtube.com/@3blue1brown "
list
Gespeicherte Kanäle auflisten.
Das (ss) neben dem Kanalnamen zeigt an, dass für den Kanal die semantische Suche aktiviert ist.
yt-fts list
┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ID ┃ Name ┃ Count ┃ Channel ID ┃
┡━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1 │ ChessPage1 (ss) │ 19 │ UCO2QPmnJFjdvJ6ch-pe27dQ │
│ 2 │ 3Blue1Brown │ 127 │ UCYO_jab_esuFRV4b17AJtAw │
│ 3 │ george hotz archive │ 410 │ UCwgKmJM4ZJQRJ-U5NjvR2dg │
│ 4 │ The Tim Dillon Show │ 288 │ UC4woSp8ITBoYDmjkukhEhxg │
│ 5 │ Academy of Ideas (ss) │ 190 │ UCiRiQGCHGjDLT9FQXFW0I3A │
└────┴───────────────────────┴───────┴──────────────────────────┘
search
(Volltextsuche)Volltextsuche nach einer Zeichenfolge in gespeicherten Kanälen.
# search in all channels
yt-fts search " [search query] "
# search in channel
yt-fts search " [search query] " --channel " [channel name or id] "
# search in specific video
yt-fts search " [search query] " --video-id " [video id] "
# limit results
yt-fts search " [search query] " --limit " [number of results] " --channel " [channel name or id] "
# export results to csv
yt-fts search " [search query] " --export --channel " [channel name or id] "
Erweiterte Suchsyntax:
Die Suchzeichenfolge unterstützt die erweiterte SQLite-Abfragesyntax. Dazu gehören Dinge wie Präfixabfragen, mit denen Sie Teile eines Wortes abgleichen können.
# AND search
yt-fts search " knife AND Malibu " --channel " The Tim Dillon Show "
# OR SEARCH
yt-fts search " knife OR Malibu " --channel " The Tim Dillon Show "
# wild cards
yt-fts search " rea* kni* Mali* " --channel " The Tim Dillon Show "
Sie können die semantische Suche für einen Kanal aktivieren, indem Sie den Befehl mbeddings
verwenden. Dazu ist ein OpenAI-API-Schlüssel erforderlich, der in der Umgebungsvariablen OPENAI_API_KEY
festgelegt ist, oder Sie können den Schlüssel mit dem Flag --openai-api-key
übergeben.
embeddings
Ruft OpenAI-Einbettungen für den angegebenen Kanal ab
# make sure openAI key is set
# export OPENAI_API_KEY="[yourOpenAIKey]"
yt-fts embeddings --channel " 3Blue1Brown "
# specify time interval in seconds to split text by default is 30
# the larger the interval the more accurate the llm response
# but semantic search will have more text for you to read.
yt-fts embeddings --interval 60 --channel " 3Blue1Brown "
Nachdem die Einbettungen gespeichert wurden, wird neben dem Kanalnamen ein (ss)
angezeigt, wenn Sie Kanäle auflisten, und Sie können den Befehl vsearch
für diesen Kanal verwenden.
llm
(Chat Bot) Startet eine interaktive Chat-Sitzung mit gpt-4o
OpenAI-Modell und verwendet die semantischen Suchergebnisse Ihrer ersten Eingabeaufforderung als Kontext für die Beantwortung von Fragen. Wenn Ihre Frage nicht beantwortet werden kann, verfügt es über einen Mechanismus zum Aktualisieren des Kontexts, indem eine gezielte Abfrage basierend auf der Konversation ausgeführt wird. Für den Kanal muss die semantische Suche aktiviert sein.
yt-fts llm --channel " 3Blue1Brown " " How does back propagation work? "
summarize
Fasst ein YouTube-Videotranskript zusammen und stellt URLs mit Zeitstempel bereit. Erfordert eine gültige YouTube-Video-URL oder Video-ID als Argument. Wenn das Transkript nicht in der Datenbank vorhanden ist, wird versucht, es zu entfernen.
yt-fts summarize " https://www.youtube.com/watch?v=9-Jl0dxWQs8 "
# or
yt-fts summarize " 9-Jl0dxWQs8 "
Ausgabe:
In this video, 3Blue1Brown explores how large language models (LLMs) like GPT-3
might store facts within their vast...
1 Introduction to Fact Storage in LLMs:
• The video starts by questioning how LLMs store specific facts and
introduces the idea that these facts might be stored in a particular part of the
network known as multi-layer perceptrons (MLPs).
• 0:00
2 Overview of Transformers and MLPs:
• Provides a refresher on transformers and explains that the video will focus
vsearch
(Semantische Suche) vsearch
steht für „Vektorsuche“. Dies erfordert, dass Sie die semantische Suche für einen Kanal mit embeddings
aktivieren. Es verfügt über dieselben Optionen wie search
, die Ausgabe wird jedoch nach Ähnlichkeit mit der Suchzeichenfolge sortiert und das Standard-Rückgabelimit beträgt 10.
# search by channel name
yt-fts vsearch " [search query] " --channel " [channel name or id] "
# search in specific video
yt-fts vsearch " [search query] " --video-id " [video id] "
# limit results
yt-fts vsearch " [search query] " --limit " [number of results] " --channel " [channel name or id] "
# export results to csv
yt-fts vsearch " [search query] " --export --channel " [channel name or id] "
Suchergebnisse exportieren:
Sowohl für die Befehle search
als auch vsearch
können Sie die Ergebnisse mit dem Flag --export
in eine CSV-Datei exportieren. und die Ergebnisse werden in einer CSV-Datei im aktuellen Verzeichnis gespeichert.
yt-fts search " life in the big city " --export
yt-fts vsearch " existing in large metropolaten center " --export
Einen Kanal löschen: Sie können einen Kanal mit dem delete
löschen.
yt-fts delete --channel " 3Blue1Brown "
Einen Kanal aktualisieren: Der Aktualisierungsbefehl funktioniert derzeit nur für die Volltextsuche und aktualisiert die Einbettungen der semantischen Suche nicht.
yt-fts update --channel " 3Blue1Brown "
Exportieren Sie das gesamte Transkript eines Kanals:
Dieser Befehl erstellt im aktuellen Arbeitsverzeichnis ein Verzeichnis mit der YouTube-Kanal-ID des angegebenen Kanals.
# Export to vtt
yt-fts export --channel " [id/name] " --format " [vtt/txt] "