yt-fts
هو برنامج سطر أوامر يستخدم yt-dlp لاستخراج جميع ترجمات قنوات YouTube وتحميلها إلى قاعدة بيانات sqlite التي يمكن البحث فيها من سطر الأوامر. يسمح لك بالاستعلام عن قناة لكلمة أو عبارة رئيسية محددة وسيقوم بإنشاء عناوين URL على YouTube مختومة بالوقت للفيديو الذي يحتوي على الكلمة الرئيسية.
كما أنه يدعم البحث الدلالي عبر OpenAI embeddings API باستخدام 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. والذي يتضمن أشياء مثل الاستعلامات البادئة التي يمكنك استخدامها لمطابقة أجزاء من الكلمة.
# 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] "