yt-fts
es un programa de línea de comandos que utiliza yt-dlp para extraer todos los subtítulos de los canales de YouTube y cargarlos en una base de datos sqlite que se puede buscar desde la línea de comandos. Le permite consultar un canal para una palabra o frase clave específica y generará URL de YouTube con marca de tiempo para el video que contiene la palabra clave.
También admite la búsqueda semántica a través de la API de incrustaciones de OpenAI utilizando chromadb.
pepita
pip install yt-fts
download
Descargar subtítulos para un canal.
Toma la URL de un canal como argumento. Especifique la cantidad de trabajos para paralelizar la descarga con el indicador --jobs
. Usar --cookies-from-browser
para usar cookies de tu navegador en las solicitudes te ayudará si recibes errores que te solicitan que inicies sesión. También puedes ejecutar el comando update
varias veces para incluir gradualmente más videos en el base de datos.
yt-fts download --jobs 5 " https://www.youtube.com/@3blue1brown "
yt-fts download --cookies-from-browser firefox " https://www.youtube.com/@3blue1brown "
list
Lista de canales guardados.
El (ss) junto al nombre del canal indica que el canal tiene habilitada la búsqueda semántica.
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
(búsqueda de texto completo)Búsqueda de texto completo de una cadena en canales guardados.
# 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] "
Sintaxis de búsqueda avanzada:
La cadena de búsqueda admite la sintaxis de consulta mejorada de sqlite. que incluye cosas como consultas de prefijos que puedes usar para hacer coincidir partes de una palabra.
# 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 "
Puede habilitar la búsqueda semántica de un canal utilizando el comando mbeddings
. Esto requiere una clave API de OpenAI configurada en la variable de entorno OPENAI_API_KEY
, o puede pasar la clave con el indicador --openai-api-key
.
embeddings
Recupera incrustaciones de OpenAI para un canal específico
# 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 "
Después de guardar las incrustaciones, verá un (ss)
junto al nombre del canal cuando enumere los canales y podrá usar el comando vsearch
para ese canal.
llm
(bot de chat) Inicia una sesión de chat interactiva con el modelo gpt-4o
OpenAI utilizando los resultados de búsqueda semántica de su mensaje inicial como contexto para responder preguntas. Si no puede responder a su pregunta, tiene un mecanismo para actualizar el contexto ejecutando una consulta específica basada en la conversación. El canal debe tener habilitada la búsqueda semántica.
yt-fts llm --channel " 3Blue1Brown " " How does back propagation work? "
summarize
Resume la transcripción de un vídeo de YouTube y proporciona URL con marca de tiempo. Requiere una URL de video de YouTube válida o una ID de video como argumento. Si la transcripción no está en la base de datos, intentará eliminarla.
yt-fts summarize " https://www.youtube.com/watch?v=9-Jl0dxWQs8 "
# or
yt-fts summarize " 9-Jl0dxWQs8 "
producción:
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
(búsqueda semántica) vsearch
es para "búsqueda vectorial". Esto requiere que habilites la búsqueda semántica de un canal con embeddings
. Tiene las mismas opciones que search
, pero la salida se ordenará por similitud con la cadena de búsqueda y el límite de devolución predeterminado es 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] "
Exportar resultados de búsqueda:
Tanto para los comandos search
como vsearch
puede exportar los resultados a un archivo csv con el indicador --export
. y guardará los resultados en un archivo csv en el directorio actual.
yt-fts search " life in the big city " --export
yt-fts vsearch " existing in large metropolaten center " --export
Eliminar un canal: puede eliminar un canal con el comando delete
.
yt-fts delete --channel " 3Blue1Brown "
Actualizar un canal: el comando de actualización actualmente solo funciona para la búsqueda de texto completo y no actualizará las incrustaciones de búsqueda semántica.
yt-fts update --channel " 3Blue1Brown "
Exportar toda la transcripción de un canal:
Este comando creará un directorio en el directorio de trabajo actual con la identificación del canal de YouTube del canal especificado.
# Export to vtt
yt-fts export --channel " [id/name] " --format " [vtt/txt] "