yt-fts
é um programa de linha de comando que usa yt-dlp para extrair todas as legendas de canais do YouTube e carregá-las em um banco de dados sqlite que pode ser pesquisado na linha de comando. Ele permite que você consulte um canal em busca de uma palavra-chave ou frase específica e gerará URLs do YouTube com carimbo de data e hora para o vídeo que contém a palavra-chave.
Ele também suporta pesquisa semântica por meio da API de embeddings OpenAI usando chromadb.
pip
pip install yt-fts
download
Baixe legendas para um canal.
Usa o URL do canal como argumento. Especifique o número de trabalhos para paralelizar o download com o sinalizador --jobs
. Use o --cookies-from-browser
para usar cookies do seu navegador nas solicitações, isso ajudará se você estiver recebendo erros que solicitam que você faça login. Você também pode executar o comando update
várias vezes para obter gradualmente mais vídeos no banco de dados.
yt-fts download --jobs 5 " https://www.youtube.com/@3blue1brown "
yt-fts download --cookies-from-browser firefox " https://www.youtube.com/@3blue1brown "
list
Lista canais salvos.
O (ss) próximo ao nome do canal indica que o canal tem a pesquisa semântica habilitada.
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
(pesquisa de texto completo)Pesquisa de texto completo para uma string em canais salvos.
# 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] "
Sintaxe de pesquisa avançada:
A string de pesquisa suporta sintaxe de consulta aprimorada sqlite. que inclui coisas como consultas de prefixo que você pode usar para combinar partes de uma palavra.
# 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 "
Você pode ativar a pesquisa semântica para um canal usando o comando mbeddings
. Isso requer uma chave de API OpenAI definida na variável de ambiente OPENAI_API_KEY
ou você pode passar a chave com o sinalizador --openai-api-key
.
embeddings
Busca embeddings OpenAI para canal especificado
# 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 "
Depois que os embeddings forem salvos, você verá um (ss)
próximo ao nome do canal ao listar os canais e poderá usar o comando vsearch
para esse canal.
llm
(bot de bate-papo) Inicia uma sessão de bate-papo interativa com o modelo OpenAI gpt-4o
usando os resultados da pesquisa semântica do seu prompt inicial como contexto para responder perguntas. Se não puder responder à sua pergunta, ele possui um mecanismo para atualizar o contexto executando uma consulta direcionada com base na conversa. O canal deve ter a pesquisa semântica habilitada.
yt-fts llm --channel " 3Blue1Brown " " How does back propagation work? "
summarize
Resume uma transcrição de vídeo do YouTube, fornecendo URLS com carimbo de data/hora. Requer um URL de vídeo válido do YouTube ou um ID de vídeo como argumento. Se a transcrição não estiver no banco de dados, ele tentará extraí-la.
yt-fts summarize " https://www.youtube.com/watch?v=9-Jl0dxWQs8 "
# or
yt-fts summarize " 9-Jl0dxWQs8 "
saída:
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
(pesquisa semântica) vsearch
é para "Pesquisa vetorial". Isso requer que você habilite a pesquisa semântica para um canal com embeddings
. Possui as mesmas opções da search
, mas a saída será classificada por semelhança com a string de pesquisa e o limite de retorno padrão é 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 da pesquisa:
Para os comandos search
e vsearch
você pode exportar os resultados para um arquivo csv com o sinalizador --export
. e salvará os resultados em um arquivo csv no diretório atual.
yt-fts search " life in the big city " --export
yt-fts vsearch " existing in large metropolaten center " --export
Excluir um canal: Você pode excluir um canal com o comando delete
.
yt-fts delete --channel " 3Blue1Brown "
Atualizar um canal: O comando update atualmente funciona apenas para pesquisa de texto completo e não atualizará os embeddings de pesquisa semântica.
yt-fts update --channel " 3Blue1Brown "
Exporte toda a transcrição de um canal:
Este comando criará um diretório no diretório de trabalho atual com o ID do canal do YouTube do canal especificado.
# Export to vtt
yt-fts export --channel " [id/name] " --format " [vtt/txt] "