yt-fts
— это программа командной строки, которая использует yt-dlp для очистки всех субтитров каналов YouTube и загрузки их в базу данных sqlite, доступную для поиска из командной строки. Он позволяет вам запрашивать канал по определенному ключевому слову или фразе и генерировать URL-адреса YouTube с отметкой времени для видео, содержащего это ключевое слово.
Он также поддерживает семантический поиск через API встраивания OpenAI с использованием chromadb.
пункт
pip install yt-fts
download
Скачать субтитры для канала.
Принимает URL-адрес канала в качестве аргумента. Укажите количество заданий для распараллеливания загрузки с помощью флага --jobs
. Используйте --cookies-from-browser
, чтобы использовать файлы cookie из вашего браузера в запросах. Это поможет, если вы получаете ошибки, требующие входа в систему. Вы также можете запустить команду update
несколько раз, чтобы постепенно добавлять больше видео в база данных.
yt-fts download --jobs 5 " https://www.youtube.com/@3blue1brown "
yt-fts download --cookies-from-browser firefox " https://www.youtube.com/@3blue1brown "
list
Список сохраненных каналов.
Символ (ss) рядом с названием канала указывает на то, что на канале включен семантический поиск.
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
(полнотекстовый поиск)Полнотекстовый поиск строки в сохраненных каналах.
# 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] "
Синтаксис расширенного поиска:
Строка поиска поддерживает расширенный синтаксис запроса sqlite. который включает в себя такие вещи, как префиксные запросы, которые можно использовать для сопоставления частей слова.
# 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 "
Вы можете включить семантический поиск канала с помощью команды mbeddings
. Для этого требуется ключ OpenAI API, установленный в переменной среды OPENAI_API_KEY
, или вы можете передать ключ с флагом --openai-api-key
.
embeddings
Извлекает внедрения OpenAI для указанного канала.
# 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 "
После сохранения вложений вы увидите значок (ss)
рядом с именем канала при перечислении каналов и сможете использовать команду vsearch
для этого канала.
llm
(Чат-бот) Запускает сеанс интерактивного чата с моделью gpt-4o
OpenAI, используя результаты семантического поиска вашего первоначального приглашения в качестве контекста для ответов на вопросы. Если он не может ответить на ваш вопрос, у него есть механизм обновления контекста, выполнив целевой запрос на основе разговора. На канале должен быть включен семантический поиск.
yt-fts llm --channel " 3Blue1Brown " " How does back propagation work? "
summarize
Обобщает расшифровку видео YouTube с указанием URL-адресов с отметкой времени. В качестве аргумента требуется действительный URL-адрес видео YouTube или идентификатор видео. Если расшифровки нет в базе данных, она попытается очистить ее.
yt-fts summarize " https://www.youtube.com/watch?v=9-Jl0dxWQs8 "
# or
yt-fts summarize " 9-Jl0dxWQs8 "
выход:
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
(семантический поиск) vsearch
означает «Векторный поиск». Для этого необходимо включить семантический поиск канала с embeddings
. Он имеет те же параметры, что и search
, но выходные данные будут отсортированы по сходству со строкой поиска, а предел возврата по умолчанию равен 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] "
Экспортировать результаты поиска:
Как для команд search
, так и для vsearch
вы можете экспортировать результаты в файл csv с флагом --export
. и он сохранит результаты в файл csv в текущем каталоге.
yt-fts search " life in the big city " --export
yt-fts vsearch " existing in large metropolaten center " --export
Удалить канал: Вы можете удалить канал с помощью команды delete
.
yt-fts delete --channel " 3Blue1Brown "
Обновить канал. В настоящее время команда обновления работает только для полнотекстового поиска и не обновляет встроенные элементы семантического поиска.
yt-fts update --channel " 3Blue1Brown "
Экспортируйте всю расшифровку канала:
Эта команда создаст каталог в текущем рабочем каталоге с идентификатором канала YouTube указанного канала.
# Export to vtt
yt-fts export --channel " [id/name] " --format " [vtt/txt] "