yt-fts
adalah program baris perintah yang menggunakan yt-dlp untuk mengikis semua subtitle saluran YouTube dan memuatnya ke dalam database sqlite yang dapat dicari dari baris perintah. Ini memungkinkan Anda menanyakan saluran untuk kata kunci atau frasa tertentu dan akan menghasilkan url YouTube yang diberi cap waktu ke video yang berisi kata kunci tersebut.
Ini juga mendukung pencarian semantik melalui OpenAI embeddings API menggunakan chromedb.
pip
pip install yt-fts
download
Unduh subtitle untuk suatu saluran.
Mengambil url saluran sebagai argumen. Tentukan jumlah pekerjaan untuk memparalelkan pengunduhan dengan tanda --jobs
. Gunakan --cookies-from-browser
untuk menggunakan cookie dari browser Anda dalam permintaan, ini akan membantu jika Anda mendapatkan kesalahan yang meminta Anda untuk masuk. Anda juga dapat menjalankan perintah update
beberapa kali untuk secara bertahap memasukkan lebih banyak video ke dalam basis data.
yt-fts download --jobs 5 " https://www.youtube.com/@3blue1brown "
yt-fts download --cookies-from-browser firefox " https://www.youtube.com/@3blue1brown "
list
Daftar saluran yang disimpan.
Tanda (ss) di sebelah nama saluran menunjukkan bahwa saluran tersebut mengaktifkan pencarian semantik.
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
(Pencarian Teks Lengkap)Pencarian teks lengkap untuk string di saluran yang disimpan.
# 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] "
Sintaks Pencarian Lanjutan:
String pencarian mendukung Sintaks Kueri yang Ditingkatkan sqlite. yang mencakup hal-hal seperti kueri awalan yang dapat Anda gunakan untuk mencocokkan bagian kata.
# 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 "
Anda dapat mengaktifkan pencarian semantik untuk suatu saluran dengan menggunakan perintah mbeddings
. Hal ini memerlukan kumpulan kunci API OpenAI dalam variabel lingkungan OPENAI_API_KEY
, atau Anda dapat meneruskan kunci dengan tanda --openai-api-key
.
embeddings
Mengambil penyematan OpenAI untuk saluran tertentu
# 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 "
Setelah penyematan disimpan, Anda akan melihat (ss)
di sebelah nama saluran saat Anda membuat daftar saluran, dan Anda akan dapat menggunakan perintah vsearch
untuk saluran tersebut.
llm
(Bot Obrolan) Memulai sesi obrolan interaktif dengan model gpt-4o
OpenAI menggunakan hasil pencarian semantik dari perintah awal Anda sebagai konteks untuk menjawab pertanyaan. Jika tidak dapat menjawab pertanyaan Anda, ia memiliki mekanisme untuk memperbarui konteks dengan menjalankan kueri yang ditargetkan berdasarkan percakapan. Saluran tersebut harus mengaktifkan pencarian semantik.
yt-fts llm --channel " 3Blue1Brown " " How does back propagation work? "
summarize
Meringkas transkrip video YouTube, memberikan URL yang diberi cap waktu. Membutuhkan URL video YouTube atau ID video yang valid sebagai argumen. Jika transkrip tidak ada dalam database, ia akan mencoba mengikisnya.
yt-fts summarize " https://www.youtube.com/watch?v=9-Jl0dxWQs8 "
# or
yt-fts summarize " 9-Jl0dxWQs8 "
keluaran:
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
(Pencarian Semantik) vsearch
adalah untuk "Pencarian vektor". Ini mengharuskan Anda mengaktifkan pencarian semantik untuk saluran dengan embeddings
. Ini memiliki opsi yang sama dengan search
tetapi output akan diurutkan berdasarkan kesamaan dengan string pencarian dan batas pengembalian default adalah 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] "
Ekspor hasil pencarian:
Untuk perintah search
dan vsearch
Anda dapat mengekspor hasilnya ke file csv dengan tanda --export
. dan itu akan menyimpan hasilnya ke file csv di direktori saat ini.
yt-fts search " life in the big city " --export
yt-fts vsearch " existing in large metropolaten center " --export
Hapus saluran: Anda dapat menghapus saluran dengan perintah delete
.
yt-fts delete --channel " 3Blue1Brown "
Perbarui saluran: Perintah perbarui saat ini hanya berfungsi untuk pencarian teks lengkap dan tidak akan memperbarui penyematan pencarian semantik.
yt-fts update --channel " 3Blue1Brown "
Ekspor semua transkrip saluran:
Perintah ini akan membuat direktori di direktori kerja saat ini dengan id saluran YouTube dari saluran yang ditentukan.
# Export to vtt
yt-fts export --channel " [id/name] " --format " [vtt/txt] "