yt-fts
是一個命令列程序,它使用 yt-dlp 抓取所有 YouTube 頻道字幕並將其加載到可從命令列搜尋的 sqlite 資料庫中。它允許您查詢特定關鍵字或短語的頻道,並將產生包含該關鍵字的影片的帶有時間戳記的 YouTube 網址。
它還支援使用 chromadb 透過 OpenAI 嵌入 API 進行語義搜尋。
點
pip install yt-fts
download
下載頻道的字幕。
將頻道 url 作為參數。使用--jobs
標誌指定並行下載的作業數。 Use the --cookies-from-browser
to use cookies from your browser in the requests, will help if you're getting errors that request you to sign in. You can also run the update
command several times to gradually get more videos into the資料庫.
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_KEY
中設定 OpenAI API 金鑰,或者您可以使用--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。需要有效的 YouTube 影片 URL 或影片 ID 作為參數。如果成績單不在資料庫中,它將嘗試抓取它。
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
指令,您可以使用--export
標誌將結果匯出到 csv 檔案。並將結果儲存到目前目錄中的 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 頻道 ID。
# Export to vtt
yt-fts export --channel " [id/name] " --format " [vtt/txt] "