yt-fts
เป็นโปรแกรมบรรทัดคำสั่งที่ใช้ yt-dlp เพื่อคัดลอกคำบรรยายช่อง YouTube ทั้งหมด และโหลดลงในฐานข้อมูล sqlite ที่สามารถค้นหาได้จากบรรทัดคำสั่ง ช่วยให้คุณสามารถค้นหาช่องสำหรับคำหรือวลีสำคัญเฉพาะและจะสร้าง URL YouTube ที่ประทับเวลาไปยังวิดีโอที่มีคำหลักนั้น
นอกจากนี้ยังรองรับการค้นหาความหมายผ่าน API การฝัง OpenAI โดยใช้ chromadb
ปิ๊ป
pip install yt-fts
download
ดาวน์โหลดคำบรรยายสำหรับช่อง
ใช้ URL ของช่องเป็นอาร์กิวเมนต์ ระบุจำนวนงานเพื่อทำการดาวน์โหลดแบบขนานด้วยแฟล็ก --jobs
ใช้ --cookies-from-browser
เพื่อใช้คุกกี้จากเบราว์เซอร์ของคุณในคำขอ ซึ่งจะช่วยได้หากคุณได้รับข้อผิดพลาดที่ขอให้คุณลงชื่อเข้าใช้ คุณยังสามารถเรียกใช้คำสั่ง 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 Enhanced Query Syntax ซึ่งรวมถึงสิ่งต่างๆ เช่น คำค้นหาคำนำหน้า ซึ่งคุณสามารถใช้จับคู่ส่วนต่างๆ ของคำได้
# 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] "