راهنمای استفاده

راهنمای yt-dlp

دانلود از یوتیوب و سایت‌های ویدیویی با /ytdl و /ytdlleech؛ انتخاب کیفیت با دکمه، گزینه‌های yt-dlp، کوکی، پلی‌لیست و آپلود در یوتیوب.

دو دستور ویدیو و صدا را با کتابخانهٔ yt-dlp از یوتیوب، لینک‌های m3u8، شبکه‌های اجتماعی و هر سایتی که yt-dlp پشتیبانی می‌کند دانلود می‌کنند:

دستورخروجی
/ytdl یا /yمیرور (Mirror): دانلود و آپلود در فضای ابری، مثل /mirror
/ytdlleech یا /ylلیچ (Leech): دانلود و ارسال فایل در خود تلگرام، مثل /leech

این دستورها فقط لینک می‌پذیرند، نه فایل تلگرام. لینک را کنار دستور بنویسید یا روی پیام حاوی لینک ریپلای کنید؛ مثل بقیهٔ دستورها لینک باید قبل از آرگومان‌ها بیاید. اگر مالک DISABLE_YTDLP را فعال کرده باشد، ربات پاسخ می‌دهد که دانلودهای yt-dlp غیرفعال است.

شروع سریع

/ytdl https://example.com/watch?v=abc123
/ytdlleech https://example.com/watch?v=abc123 -med

ربات اول اطلاعات لینک را می‌گیرد و بعد دکمه‌های انتخاب کیفیت را نشان می‌دهد. تا ۱۲۰ ثانیه فرصت انتخاب دارید؛ بعد از آن پیام Timed Out. Task has been cancelled! می‌آید و تسک لغو می‌شود. فقط کسی که دستور را فرستاده می‌تواند دکمه‌ها را بزند.

انتخاب کیفیت

یک ویدیو

برای هر فرمتی که سایت ارائه می‌دهد یک دکمه ساخته می‌شود:

  • فرمت‌های ویدیویی با نامی مثل 720p30-mp4 یا 1080p-webm (ارتفاع، نرخ فریم و پسوند). ویدیوی انتخابی با بهترین صدای موجود ترکیب می‌شود.
  • فرمت‌های فقط صدا با نامی مثل opus-webm (کدک و پسوند).
  • اگر یک نام فقط یک گزینه داشته باشد، حجم تقریبی کنار نام نوشته می‌شود؛ اگر چند بیت‌ریت داشته باشد، با زدن آن زیرمنوی Choose Bit rate باز می‌شود.

دکمه‌های ثابت:

دکمهکار
MP3استخراج صدا به mp3 با یکی از بیت‌ریت‌های 64K-mp3، 128K-mp3 یا 320K-mp3
Audio Formatsاستخراج صدا با فرمت aac، alac، flac، m4a، opus، vorbis یا wav و بعد انتخاب کیفیت از 0 (بهترین) تا 10 (بدترین)
Best Videoبهترین ویدیو با بهترین صدا (bv*+ba/b)
Best Audioبهترین صدا (ba/b)
Cancelلغو تسک

پلی‌لیست

اگر لینک یک پلی‌لیست باشد، دکمه‌ها کلی‌ترند و روی همهٔ ویدیوها اعمال می‌شوند: 144-mp4، 144-webm و به همین ترتیب تا 2160-mp4 و 2160-webm (ارتفاع حداکثر و پسوند)، به‌علاوهٔ MP3، Audio Formats، Best Videos، Best Audios و Cancel.

همهٔ ویدیوهای پلی‌لیست در یک پوشه دانلود می‌شوند و نام هر فایل از عنوان ویدیو (و شمارهٔ فصل و قسمت، ارتفاع و نرخ فریم اگر باشد) ساخته می‌شود. ویدیوهایی که دانلودشان خطا بدهد رد می‌شوند و بقیه ادامه پیدا می‌کنند. اگر مالک PLAYLIST_LIMIT را تنظیم کرده باشد، پلی‌لیست‌هایی که تعداد ویدیوهایشان به این عدد برسد برای کاربرانی که سودو نیستند رد می‌شوند. توجه کنید که ربات فقط اولین سقفِ تنظیم‌شدهٔ مربوط به تسک را بررسی می‌کند؛ اگر YTDLP_LIMIT هم مقدار داشته باشد، PLAYLIST_LIMIT بررسی نمی‌شود.

رد شدن از دکمه‌ها

اگر در گزینه‌های yt-dlp (از -opt، تنظیمات شما یا مالک) کلید format تعیین شده باشد، دکمه‌ها نمایش داده نمی‌شوند و همان فرمت دانلود می‌شود. برای اینکه با وجود format باز هم دکمه‌ها را ببینید، -s بدهید.

مقدار format می‌تواند یک رشتهٔ فرمت معمولی yt-dlp باشد (مثل bv*[height<=720]+ba/b)، یا شکل ویژهٔ ba/b-<codec>-<quality> که همان کار دکمه‌های صوتی را می‌کند؛ مثلاً ba/b-mp3-320 صدا را با بیت‌ریت ۳۲۰ به mp3 تبدیل می‌کند.

گزینه‌های yt-dlp

گزینه‌ها یک دیکشنری پایتون از گزینه‌های API yt-dlp هستند، نه فلگ‌های خط فرمان؛ نام همهٔ گزینه‌ها در فایل YoutubeDL.py آمده است.

{"format": "bv*+mergeall[vcodec=none]", "nocheckcertificate": True, "playliststart": 10, "writesubtitles": True, "postprocessor_args": {"ffmpeg": ["-threads", "4"]}, "download_ranges": [{"start_time": 0, "end_time": 10}]}

سه جا می‌توانید گزینه بدهید و فقط یکی از آن‌ها استفاده می‌شود، به این ترتیب:

  1. -opt همین تسک.
  2. YT-DLP Options در /usetting بخش YT-DLP Settings.
  3. متغیر YT_DLP_OPTIONS مالک.

چند نکته:

  • postprocessors به پس‌پردازنده‌های خود ربات (افزودن متادیتا و فصل‌ها، تبدیل و جاسازی تامبنیل) اضافه می‌شود و جایشان را نمی‌گیرد.
  • با download_ranges فقط بخش‌های مشخص‌شدهٔ ویدیو دانلود می‌شوند و هر بخش فایل جدا می‌شود.
  • اگر گزینه‌هایی مثل writesubtitles یا writeinfojson بدهید که فایل‌های جانبی می‌سازند، خروجی در یک پوشه کنار هم قرار می‌گیرد.
  • خط اول راهنمای /ytdl در خود ربات هنوز قالب قدیمی -opt x:y|x1:y1 را نشان می‌دهد؛ کد فعلی فقط دیکشنری می‌پذیرد.

کوکی‌ها و ورود به سایت

برای ویدیوهای محدودشده یا سایت‌هایی که ورود می‌خواهند، yt-dlp از فایل کوکی استفاده می‌کند:

  • کوکی شخصی: در YT-DLP Settings با دکمهٔ Cookie File یک فایل کوکی (مثل cookies.txt) بفرستید.
  • کوکی مالک: فایل cookies.txt که مالک از بخش Private Files در /bsetting بارگذاری کرده است.

اگر کوکی شخصی داشته باشید، از آن استفاده می‌شود و در غیر این صورت از کوکی مالک. با دکمهٔ Use OWNER Cookie می‌توانید حتی با داشتن کوکی شخصی، کوکی مالک را انتخاب کنید (و با Use YOUR Cookie برگردید). ربات فایل .netrc را هم برای ورود به سایت‌ها به yt-dlp می‌دهد؛ این فایل هم در Private Files مالک قرار دارد.

نام فایل و آرگومان‌های دیگر

  • -n name نام خروجی را تعیین می‌کند. پسوند را ننویسید؛ ربات پسوند فایل دانلودشده را خودش اضافه می‌کند. برای پلی‌لیست، این نام پوشه است.
  • -z و -z password خروجی را zip می‌کند. -e و -j در این دستورها وجود ندارند.
  • -i، -b و -m مثل میرور برای چند لینک کار می‌کنند.
  • پردازش‌های رسانه‌ای (-ss، -sv، -ca، -cv، -ff، -meta) و تغییر نام با -ns هم پذیرفته می‌شوند.
  • در /ytdl مقصد با -up و -gc تعیین می‌شود؛ در /ytdlleech همهٔ آرگومان‌های لیچ (-ud، -sp، -doc، -med، -t، -tl، -bt، -ut و -hl) کار می‌کنند. جزئیات در راهنمای میرور و راهنمای لیچ.

در /ytdlleech، اگر تامبنیل شخصی، -t یا چیدمان تامبنیل (-tl یا THUMBNAIL_LAYOUT) نداشته باشید، تامبنیلی که yt-dlp از سایت دانلود می‌کند روی ویدیو گذاشته می‌شود. سقف حجم دانلود‌های yt-dlp با متغیر YTDLP_LIMIT تعیین می‌شود و برای سودوها اعمال نمی‌شود.

آپلود در یوتیوب

/ytdl و /ytdlleech آرگومانی برای آپلود در یوتیوب ندارند. در کد، این قابلیت فقط از طریق آرگومان -yt در دستورهای خانوادهٔ /mirror در دسترس است (که در راهنمای ربات نیامده): فایل تکی به‌صورت یک ویدیو و پوشه به‌صورت یک پلی‌لیست تازه آپلود می‌شود.

برای این کار باید token.pickle شخصی خود را با دسترسی‌های یوتیوب در /usetting بارگذاری کرده باشید؛ اسکریپت gen_scripts/gen_token_pickle مخزن این دسترسی‌ها را هم درخواست می‌کند. توضیحات، برچسب‌ها، دسته و وضعیت انتشار از دکمه‌های YT Description، YT Tags، YT Category ID و YT Privacy Status در YT-DLP Settings می‌آیند (پیش‌فرض‌ها: YT_DESP، YT_TAGS، YT_CATEGORY_ID برابر 22 و YT_PRIVACY_STATUS برابر unlisted).

/mirror https://example.com/clip.mp4 -yt

مثال‌ها

هدفدستور
انتخاب کیفیت با دکمه و آپلود در مقصد پیش‌فرض/ytdl https://example.com/watch?v=abc123
فقط صدا با mp3 ۳۲۰، بدون دکمه/ytdl https://example.com/watch?v=abc123 -opt {'format': 'ba/b-mp3-320'}
حداکثر 720p، ارسال در تلگرام به‌صورت رسانه/yl https://example.com/watch?v=abc123 -opt {'format': 'bv*[height<=720]+ba/b'} -med
دکمه‌ها با وجود format ذخیره‌شده/ytdl https://example.com/watch?v=abc123 -s
فقط ویدیوهای ۳ تا ۸ پلی‌لیست/ytdlleech https://example.com/playlist?list=xyz -opt {'playliststart': 3, 'playlistend': 8}
پلی‌لیست در یک zip رمزدار در گوگل درایو/ytdl https://example.com/playlist?list=xyz -z secret -up gd
ده ثانیهٔ اول ویدیو/ytdl https://example.com/watch?v=abc123 -opt {'download_ranges': [{'start_time': 0, 'end_time': 10}]}

همچنین ببینید

مثلاً LEECH_SPLIT_SIZE، /mirror، -up یا «تامبنیل»