yt-fts
est un programme en ligne de commande qui utilise yt-dlp pour récupérer tous les sous-titres d'une chaîne YouTube et les charger dans une base de données SQLite consultable à partir de la ligne de commande. Il vous permet d'interroger une chaîne pour un mot ou une expression clé spécifique et générera des URL YouTube horodatées vers la vidéo contenant le mot-clé.
Il prend également en charge la recherche sémantique via l'API d'intégration OpenAI à l'aide de chromadb.
pépin
pip install yt-fts
download
Téléchargez les sous-titres d'une chaîne.
Prend l'URL d'une chaîne comme argument. Spécifiez le nombre de tâches pour paralléliser le téléchargement avec l'indicateur --jobs
. Utilisez l'option --cookies-from-browser
pour utiliser les cookies de votre navigateur dans les requêtes, ce qui vous aidera si vous obtenez des erreurs vous demandant de vous connecter. Vous pouvez également exécuter la commande update
plusieurs fois pour insérer progressivement plus de vidéos dans le navigateur. base de données.
yt-fts download --jobs 5 " https://www.youtube.com/@3blue1brown "
yt-fts download --cookies-from-browser firefox " https://www.youtube.com/@3blue1brown "
list
Répertoriez les chaînes enregistrées.
Le (ss) à côté du nom du canal indique que la recherche sémantique est activée pour le canal.
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
(Recherche en texte intégral)Recherche en texte intégral d'une chaîne dans les chaînes enregistrées.
# 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] "
Syntaxe de recherche avancée :
La chaîne de recherche prend en charge la syntaxe de requête améliorée SQLite. qui inclut des éléments tels que des requêtes de préfixe que vous pouvez utiliser pour faire correspondre des parties d'un mot.
# 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 "
Vous pouvez activer la recherche sémantique d'un canal à l'aide de la commande mbeddings
. Cela nécessite une clé API OpenAI définie dans la variable d'environnement OPENAI_API_KEY
, ou vous pouvez transmettre la clé avec l'indicateur --openai-api-key
.
embeddings
Récupère les intégrations OpenAI pour le canal spécifié
# 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 "
Une fois les intégrations enregistrées, vous verrez un (ss)
à côté du nom de la chaîne lorsque vous répertorierez les chaînes, et vous pourrez utiliser la commande vsearch
pour cette chaîne.
llm
(Chat Bot) Démarre une session de discussion interactive avec le modèle gpt-4o
OpenAI en utilisant les résultats de recherche sémantique de votre invite initiale comme contexte pour répondre aux questions. S'il ne peut pas répondre à votre question, il dispose d'un mécanisme pour mettre à jour le contexte en exécutant une requête ciblée basée sur la conversation. Le canal doit avoir la recherche sémantique activée.
yt-fts llm --channel " 3Blue1Brown " " How does back propagation work? "
summarize
Résume une transcription vidéo YouTube, en fournissant des URL horodatées. Nécessite une URL de vidéo YouTube ou un identifiant vidéo valide comme argument. Si la transcription n'est pas dans la base de données, il essaiera de la récupérer.
yt-fts summarize " https://www.youtube.com/watch?v=9-Jl0dxWQs8 "
# or
yt-fts summarize " 9-Jl0dxWQs8 "
sortir:
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
(Recherche sémantique) vsearch
est pour "Recherche de vecteur". Cela nécessite que vous activiez la recherche sémantique d'un canal avec embeddings
. Il a les mêmes options que search
mais la sortie sera triée par similitude avec la chaîne de recherche et la limite de retour par défaut est de 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] "
Exporter les résultats de la recherche :
Pour les commandes search
et vsearch
vous pouvez exporter les résultats vers un fichier csv avec l'indicateur --export
. et il enregistrera les résultats dans un fichier csv dans le répertoire actuel.
yt-fts search " life in the big city " --export
yt-fts vsearch " existing in large metropolaten center " --export
Supprimer une chaîne : Vous pouvez supprimer une chaîne avec la commande delete
.
yt-fts delete --channel " 3Blue1Brown "
Mettre à jour un canal : la commande update ne fonctionne actuellement que pour la recherche en texte intégral et ne mettra pas à jour les intégrations de recherche sémantique.
yt-fts update --channel " 3Blue1Brown "
Exporter l'intégralité de la transcription d'une chaîne :
Cette commande créera un répertoire dans le répertoire de travail actuel avec l'identifiant de chaîne YouTube de la chaîne spécifiée.
# Export to vtt
yt-fts export --channel " [id/name] " --format " [vtt/txt] "