| yt-dlp(1) | yt-dlp(1) |
نام (NAME)
yt-dlp - یک دانلودکننده صوتی/تصویری خط فرمان با امکانات فراوان
خلاصه دستور (SYNOPSIS)
yt-dlp [OPTIONS] URL [URL...]
توضیحات (DESCRIPTION)
دستور yt-dlp یک دانلودکننده صوتی/تصویری خط فرمان با امکانات فراوان است که از هزاران وبگاه پشتیبانی میکند. این پروژه یک انشعاب از youtube-dl (https://github.com/ytdl-org/youtube-dl) بر پایه پروژه اکنون غیرفعال youtube-dlc (https://github.com/blackjack4494/yt-dlc) است.
گزینهها (OPTIONS)
گزینههای عمومی (General Options):
- -h, --help
- چاپ این متن راهنما و خروج
- --version
- چاپ نسخه برنامه و خروج
- -U, --update
- بروزرسانی این برنامه به آخرین نسخه
- --no-update
- بررسی نکردن برای بروزرسانیها (پیشفرض)
- --update-to [CHANNEL]@[TAG]
- ارتقا یا تنزل نسخه به یک نگارش مشخص. CHANNEL میتواند یک مخزن نیز باشد. در صورت عدم تعیین، CHANNEL و TAG بهترتیب پیشفرض "stable" و "latest" خواهند بود؛ برای جزئیات به "UPDATE" مراجعه کنید. کانالهای پشتیبانیشده: stable، nightly، master
- -i, --ignore-errors
- نادیدهگرفتن خطاهای دانلود و پسپردازش. دانلود حتی در صورت شکست در پسپردازش نیز موفقیتآمیز در نظر گرفته خواهد شد
- --no-abort-on-error
- ادامه با ویدئوی بعدی در صورت بروز خطای دانلود؛ برای مثال جهت پرش از ویدئوهای ناموجود در یک فهرست پخش (پیشفرض)
- --abort-on-error
- متوقف کردن دانلود ویدئوهای بعدی در صورت بروز خطا (نام مستعار: --no-ignore-errors)
- --list-extractors
- فهرست کردن تمام استخراجکنندههای پشتیبانیشده و خروج
- --extractor-descriptions
- نمایش توضیحات تمام استخراجکنندههای پشتیبانیشده و خروج
- --use-extractors NAMES
- نامهای استخراجکننده مورد استفاده که با کاما از هم جدا شدهاند. همچنین میتوانید از عبارات باقاعده (regexes)، "all"، "default" و "end" (پایان تطبیق نشانی وب) استفاده کنید؛ برای مثال: --ies "holodex.*,end,youtube". برای استثنا کردن یک نام، پیشوند "-" را به آن بیفزایید، مانند: --ies default,-generic. از --list-extractors برای مشاهده فهرست نامهای استخراجکننده استفاده کنید. (نام مستعار: --ies)
- --default-search PREFIX
- استفاده از این پیشوند برای نشانیهای وب فاقد پیشوند (unqualified). برای مثال: "gvsearch2:python" دو ویدئو را از google videos برای عبارت جستجوی "python" دانلود میکند. از مقدار "auto" برای حدس زدن توسط yt-dlp استفاده کنید ("auto_warning" برای نمایش هشدار هنگام حدس زدن). مقدار "error" صرفاً یک خطا برمیگرداند. مقدار پیشفرض "fixup_error" نشانیهای وب خراب را اصلاح میکند، اما اگر این کار ممکن نباشد بهجای جستجو خطا صادر میکند
- --ignore-config
- عدم بارگذاری هیچ فایل پیکربندی دیگری به جز فایلهای دادهشده به --config-locations. برای سازگاری رو به عقب، اگر این گزینه درون فایل پیکربندی سیستم یافت شود، پیکربندی کاربر بارگذاری نخواهد شد. (نام مستعار: --no-config)
- --no-config-locations
- عدم بارگذاری هیچگونه فایل پیکربندی سفارشی (پیشفرض). هنگامی که درون یک فایل پیکربندی داده شود، تمام مقادیر قبلی --config-locations تعریفشده در فایل فعلی نادیده گرفته میشوند
- --config-locations PATH
- مکان فایل پیکربندی اصلی؛ یا مسیر فایل پیکربندی یا دایرکتوری دربرگیرنده آن ("-" برای stdin). میتواند چندین بار و درون سایر فایلهای پیکربندی استفاده شود
- --plugin-dirs DIR
- مسیر یک دایرکتوری اضافی برای جستجوی افزونهها. این گزینه میتواند چندین بار برای افزودن چندین دایرکتوری استفاده شود. از "default" برای جستجوی دایرکتوریهای پیشفرض افزونهها استفاده کنید (پیشفرض)
- --no-plugin-dirs
- پاک کردن دایرکتوریهای جستجوی افزونه، شامل دایرکتوریهای پیشفرض و مواردی که با گزینههای قبلی --plugin-dirs مشخص شدهاند
- --js-runtimes RUNTIME[:PATH]
- محیط اجرای جاوااسکریپت اضافی جهت فعالسازی، همراه با مکان اختیاری برای آن محیط اجرا (مسیر فایل اجرایی یا دایرکتوری دربرگیرنده آن). این گزینه میتواند چندین بار برای فعالسازی چندین محیط اجرا استفاده شود. محیطهای اجرای پشتیبانیشده عبارتند از (به ترتیب اولویت، از بالاترین به پایینترین): deno، node، quickjs، bun. تنها "deno" بهطور پیشفرض فعال است. محیط اجرایی با بالاترین اولویت که هم فعال و هم در دسترس باشد استفاده خواهد شد. برای استفاده از یک محیط اجرای با اولویت پایینتر در زمان در دسترس بودن "deno"، باید قبل از فعالسازی سایر محیطهای اجرا، --no-js-runtimes ارسال شود
- --no-js-runtimes
- پاک کردن محیطهای اجرای جاوااسکریپت جهت فعالسازی، شامل موارد پیشفرض و موارد ارائهشده با گزینههای قبلی --js-runtimes
- --remote-components COMPONENT
- مؤلفههای راه دور مجاز برای واکشی توسط yt-dlp در صورت نیاز. اگر از یک فایل اجرایی رسمی استفاده میکنید یا نسخه مورد نیاز بسته yt-dlp-ejs را نصب کردهاید، در حال حاضر نیازی به این گزینه نیست. میتوانید از این گزینه چندین بار برای مجاز کردن چندین مؤلفه استفاده کنید. مقادیر پشتیبانیشده: ejs:npm (مؤلفههای جاوااسکریپت خارجی از npm)، ejs:github (مؤلفههای جاوااسکریپت خارجی از گیتهاب yt-dlp-ejs). بهطور پیشفرض، هیچ مؤلفه راه دوری مجاز نیست
- --no-remote-components
- غیرمجاز کردن واکشی همه مؤلفههای راه دور، از جمله مواردی که قبلاً با --remote-components یا مقادیر پیشفرض مجاز شدهاند.
- --flat-playlist
- استخراج نکردن ورودیهای نتیجه نشانی وب فهرست پخش؛ ممکن است برخی از فرادادههای ورودی موجود نباشند و دانلود نادیده گرفته شود
- --no-flat-playlist
- استخراج کامل ویدئوهای یک فهرست پخش (پیشفرض)
- --live-from-start
- دانلود پخشهای زنده از ابتدا. در حال حاضر آزمایشی است و تنها برای YouTube، Twitch، TVer و mellow-fan پشتیبانی میشود
- --no-live-from-start
- دانلود پخشهای زنده از زمان فعلی (پیشفرض)
- --wait-for-video MIN[-MAX]
- انتظار برای در دسترس قرار گرفتن پخشهای برنامهریزیشده. حداقل تعداد ثانیهها (یا بازهای) را برای انتظار میان تلاشهای مجدد ارسال کنید
- --no-wait-for-video
- عدم انتظار برای پخشهای برنامهریزیشده (پیشفرض)
- --mark-watched
- علامتگذاری ویدئوها به عنوان دیدهشده (حتی همراه با --simulate)
- --no-mark-watched
- علامت نزدن ویدئوها به عنوان دیدهشده (پیشفرض)
- --color [STREAM:]POLICY
- انتشار یا عدم انتشار کدهای رنگ در خروجی، همراه با پیشوند اختیاری STREAM (به صورت stdout یا stderr) جهت اعمال تنظیم روی آن. میتواند یکی از مقادیر "always"، "auto" (پیشفرض)، "never" یا "no_color" (استفاده از توالیهای ترمینال غیررنگی) باشد. از "auto-tty" یا "no_color-tty" برای تصمیمگیری صرفاً بر اساس پشتیبانی ترمینال استفاده کنید. میتواند چندین بار استفاده شود.TP --compat-options OPTS گزینههایی که میتوانند با بازگرداندن برخی از تغییرات اعمالشده در yt-dlp، به حفظ سازگاری با پیکربندیهای youtube-dl یا youtube-dlc کمک کنند. برای جزئیات بیشتر به بخش "Differences in default behavior" مراجعه کنید.
- --alias ALIASES OPTIONS
- ایجاد نامهای مستعار (alias) برای یک رشته گزینه. مگر در حالتی که نام مستعار با خط تیره "-" آغاز شود، در غیر این صورت پیشوند "--" به آن اضافه میشود. آرگومانها بر اساس ریززبان قالببندی رشته پایتون (Python string formatting mini-language) تجزیه میشوند. برای مثال: --alias get-audio,-X "-S aext:{0},abr -x --audio-format {0}" گزینههای "--get-audio" و "-X" را ایجاد میکند که یک آرگومان (ARG0) میگیرند و به "-S aext:ARG0,abr -x --audio-format ARG0" بسط مییابند. تمام نامهای مستعار تعریفشده در خروجی --help فهرست میشوند. گزینههای نام مستعار میتوانند نامهای مستعار دیگری را فراخوانی کنند؛ بنابراین مراقب باشید از تعریف گزینههای بازگشتی خودداری کنید. به عنوان یک تدبیر ایمنی، هر نام مستعار حداکثر ۱۰۰ بار میتواند فراخوانی شود. این گزینه میتواند چندین بار استفاده شود.
- -t, --preset-alias PRESET
- مجموعهای از پیشتعریفشده از گزینهها را اعمال میکند. برای مثال: --preset-alias mp3. پیشتنظیمهای زیر در دسترس هستند: mp3، aac، mp4، mkv، sleep. برای اطلاعات بیشتر بخش "Preset Aliases" را در انتها ببینید. این گزینه میتواند چندین بار استفاده شود.
گزینههای شبکه (Network Options):
- --proxy URL
- استفاده از پیشکار (پروکسی) مشخصشده HTTP/HTTPS/SOCKS. برای فعالسازی پیشکار SOCKS، یک طرحواره (scheme) مناسب تعیین کنید، برای مثال: socks5://user:pass@127.0.0.1:1080/. برای اتصال مستقیم، یک رشته خالی (--proxy "") ارسال کنید.
- --socket-timeout SECONDS
- مدت زمان انتظار پیش از صرفنظر کردن، بر حسب ثانیه.
- --source-address IP
- نشانی IP سمت کلاینت برای اتصال به آن (bind).
- --impersonate CLIENT[:OS]
- کلاینتی که برای درخواستها باید جعل هویت شود (impersonate). برای مثال: chrome، chrome-110، chrome:windows-10. برای جعل هر کلاینتی، مقدار --impersonate="" را ارسال کنید. توجه داشته باشید که اجبار جعل هویت برای تمام درخواستها ممکن است تأثیر مخربی بر سرعت بارگیری و پایداری داشته باشد.
- --list-impersonate-targets
- فهرست کردن کلاینتهای موجود برای جعل هویت.
- -4, --force-ipv4
- برقراری تمام اتصالات از طریق IPv4.
- -6, --force-ipv6
- برقراری تمام اتصالات از طریق IPv6.
- --enable-file-urls
- فعالسازی نشانیهای وب file://. این مورد به دلایل امنیتی بهطور پیشفرض غیرفعال است.
محدودیت جغرافیایی (Geo-restriction):
- --geo-verification-proxy URL
- استفاده از این پیشکار (پروکسی) برای تأیید نشانی IP در برخی از سایتهای دارای محدودیت جغرافیایی. پیشکار پیشفرض مشخصشده توسط --proxy (یا در صورت عدم وجود این گزینه، هیچکدام) برای بارگیری واقعی استفاده میشود.
- --xff VALUE
- نحوه جعل سرایند HTTP با عنوان X-Forwarded-For به منظور تلاش برای دور زدن محدودیتهای جغرافیایی. یکی از مقادیر "default" (تنها زمانی که مفید بودن آن مشخص باشد)، "never"، یک بلوک IP با نمادگذاری CIDR، یا یک کد کشور دو حرفی بر اساس استاندارد ISO 3166-2.
انتخاب ویدیو (Video Selection):
- -I, --playlist-items ITEM_SPEC
- شناسههای playlist_index جداشده با کاما از مواردی که باید بارگیری شوند. میتوانید یک محدوده را با استفاده از "[START]:[STOP][:STEP]" تعیین کنید. برای سازگاری با نسخههای پیشین، START-STOP نیز پشتیبانی میشود. از نمایههای منفی برای شمارش از راست و از STEP منفی برای بارگیری به ترتیب معکوس استفاده کنید. برای مثال: دستور "-I 1:3,7,-5::2" روی یک لیست پخش با اندازه ۱۵، موارد موجود در نمایههای 1,2,3,7,11,13,15 را بارگیری خواهد کرد.
- --min-filesize SIZE
- لغو بارگیری در صورتی که اندازه فایل کوچکتر از SIZE باشد، برای مثال: 50k یا 44.6M.
- --max-filesize SIZE
- لغو بارگیری در صورتی که اندازه فایل بزرگتر از SIZE باشد، برای مثال: 50k یا 44.6M.
- --date DATE
- تنها بارگیری ویدیوهایی که در این تاریخ بارگذاری شدهاند. تاریخ میتواند "YYYYMMDD" یا در قالب [now|today|yesterday][-N[day|week|month|year]] باشد. برای مثال: "--date today-2weeks" تنها ویدیوهایی را بارگیری میکند که دقیقاً در همان روزِ دو هفته پیش بارگذاری شدهاند.
- --datebefore DATE
- تنها بارگیری ویدیوهایی که در این تاریخ یا پیش از آن بارگذاری شدهاند. قالبهای تاریخ پذیرفتهشده مشابه --date هستند.
- --dateafter DATE
- تنها بارگیری ویدیوهایی که در این تاریخ یا پس از آن بارگذاری شدهاند. قالبهای تاریخ پذیرفتهشده مشابه --date هستند.
- --match-filters FILTER
- فیلتر عمومی ویدیو. هر فیلد "OUTPUT TEMPLATE" میتواند با استفاده از عملگرهای تعریفشده در "Filtering Formats" با یک عدد یا یک رشته مقایسه شود. همچنین میتوانید به سادگی یک فیلد را مشخص کنید تا در صورت وجود فیلد مطابقت داده شود، از "!field" برای بررسی عدم وجود فیلد و از "&" برای بررسی چندین شرط استفاده کنید. در صورت نیاز، از "" برای گریز دادن (escape) "&" یا علامتهای نقلقول استفاده کنید. در صورت استفاده چندباره، فیلتر در صورتی مطابقت داده میشود که حداقل یکی از شرایط برآورده شود. برای مثال: --match-filters !is_live --match-filters "like_count>?100 & description~='(?i)& dogs" تنها با ویدیوهایی مطابقت دارد که پخش زنده نیستند یا ویدیوهایی که تعداد پسندهای (like) آنها بیش از ۱۰۰ است (یا فیلد like در دسترس نیست) و همچنین دارای توضیحاتی هستند که عبارت "cats & dogs" را در بر دارد (بدون حساسیت به بزرگی و کوچکی حروف). از "--match-filters -" برای پرسش تعاملی در مورد بارگیری هر ویدیو استفاده کنید.
- --no-match-filters
- عدم استفاده از هیچگونه --match-filters (پیشفرض).
- --break-match-filters FILTER
- مشابه "--match-filters"، اما با رد شدن یک ویدیو فرآیند بارگیری را متوقف میکند.
- --no-break-match-filters
- عدم استفاده از هیچگونه --break-match-filters (پیشفرض).
- --no-playlist
- در صورتی که نشانی وب هم به یک ویدیو و هم به یک لیست پخش اشاره کند، تنها ویدیو را بارگیری میکند.
- --yes-playlist
- در صورتی که نشانی وب هم به یک ویدیو و هم به یک لیست پخش اشاره کند، لیست پخش را بارگیری میکند.
- --age-limit YEARS
- تنها بارگیری ویدیوهای مناسب برای رده سنی مشخصشده.
- --download-archive FILE
- تنها بارگیری ویدیوهایی که در فایل بایگانی (archive) فهرست نشدهاند. شناسههای (ID) تمام ویدیوهای بارگیریشده در آن ثبت میشوند.
- --no-download-archive
- عدم استفاده از فایل بایگانی (پیشفرض).
- --max-downloads NUMBER
- توقف عملیات پس از بارگیری NUMBER فایل.
- --break-on-existing
- متوقف کردن فرآیند بارگیری هنگام مواجهه با فایلی که در بایگانی مشخصشده با گزینه --download-archive موجود باشد.
- --no-break-on-existing
- عدم توقف فرآیند بارگیری هنگام مواجهه با فایلی که در بایگانی موجود است (پیشفرض).
- --break-per-input
- گزینههای --max-downloads، --break-on-existing، --break-match-filters و autonumber را به گونهای تغییر میدهد که به ازای هر نشانی وب ورودی بازنشانی شوند.
- --no-break-per-input
- گزینه --break-on-existing و گزینههای مشابه کل صف بارگیری را پایان میدهند.
- --skip-playlist-after-errors N
- تعداد خطاهای مجاز تا زمانی که از باقیمانده لیست پخش صرفنظر شود..SS گزینههای بارگیری (Download Options):
- -N, --concurrent-fragments N
- تعداد قطعات یک ویدیوی dash/hlsnative که باید بهطور همزمان بارگیری شوند (پیشفرض 1 است)
- -r, --limit-rate RATE
- حداکثر نرخ بارگیری به بایت بر ثانیه، به عنوان مثال 50K یا 4.2M
- --throttled-rate RATE
- حداقل نرخ بارگیری به بایت بر ثانیه که اگر سرعت از آن کمتر شود، محدودسازی سرعت (throttling) فرض شده و دادههای ویدیو مجدداً استخراج میشوند؛ به عنوان مثال 100K
- -R, --retries RETRIES
- تعداد دفعات تلاش مجدد (پیشفرض 10 است)، یا "infinite" (نامحدود)
- --file-access-retries RETRIES
- تعداد دفعات تلاش مجدد در صورت بروز خطای دسترسی به فایل (پیشفرض 3 است)، یا "infinite"
- --fragment-retries RETRIES
- تعداد دفعات تلاش مجدد برای یک قطعه (پیشفرض 10 است)، یا "infinite" (برای DASH، hlsnative و ISM)
- --retry-sleep [TYPE:]EXPR
- زمان توقف بین تلاشهای مجدد به ثانیه که بهطور اختیاری نوع تلاش مجدد (شامل http (پیشفرض)، fragment، file_access، extractor) برای اعمال توقف، به عنوان پیشوند به آن افزوده میشود. مقدار EXPR میتواند یک عدد، linear=START[:END[:STEP=1]] یا exp=START[:END[:BASE=2]] باشد. این گزینه میتواند چندین بار برای تنظیم زمان توقفِ انواع مختلف تلاش مجدد استفاده شود؛ به عنوان مثال: --retry-sleep linear=1::2 --retry-sleep fragment:exp=1:20
- نادیده گرفتن قطعات غیرقابل دسترس برای بارگیریهای DASH، hlsnative و ISM (پیشفرض) (نام مستعار: --no-abort-on-unavailable-fragments)
- توقف بارگیری در صورت در دسترس نبودن یک قطعه (نام مستعار: --no-skip-unavailable-fragments)
- --keep-fragments
- نگهداشتن قطعات بارگیریشده روی دیسک پس از اتمام بارگیری
- --no-keep-fragments
- حذف قطعات بارگیریشده پس از اتمام بارگیری (پیشفرض)
- --buffer-size SIZE
- اندازه بافر بارگیری، به عنوان مثال 1024 یا 16K (پیشفرض 1024 است)
- --resize-buffer
- تغییر خودکار اندازه بافر بر پایه مقدار اولیه --buffer-size (پیشفرض)
- --no-resize-buffer
- عدم تنظیم خودکار اندازه بافر
- --http-chunk-size SIZE
- اندازه هر تکه برای بارگیری تکهای از طریق HTTP، به عنوان مثال 10485760 یا 10M (پیشفرض غیرفعال است). ممکن است برای دور زدن محدودیت پهنای باند اعمالشده از سوی وبسرور مفید باشد (آزمایشی)
- --playlist-random
- بارگیری ویدیوهای لیست پخش با ترتیب تصادفی
- --lazy-playlist
- پردازش ورودیهای لیست پخش به محض دریافت آنها. این گزینه n_entries، --playlist-random و --playlist-reverse را غیرفعال میکند
- --no-lazy-playlist
- پردازش ویدیوهای لیست پخش تنها پس از تحلیل کامل کل لیست پخش (پیشفرض)
- --hls-use-mpegts
- استفاده از کانتینر mpegts برای ویدیوهای HLS؛ به برخی پخشکنندهها امکان میدهد ویدیو را در حین بارگیری پخش کنند و همچنین در صورت قطع بارگیری، احتمال خرابی فایل را کاهش میدهد. این گزینه بهطور پیشفرض برای پخشهای زنده فعال است
- --no-hls-use-mpegts
- عدم استفاده از کانتینر mpegts برای ویدیوهای HLS. این حالت هنگام بارگیری ویدیوهای غیرزنده پیشفرض است
- --download-sections REGEX
- بارگیری تنها بخشهایی (chapters) که با عبارت باقاعده مطابقت دارند. پیشوند "*" به جای فصل، نمایانگر محدوده زمانی است. ممهرهای زمانی منفی از انتها محاسبه میشوند. از "*from-url" میتوان برای بارگیری بین مقادیر "start_time" و "end_time" استخراجشده از URL استفاده کرد. به ffmpeg نیاز دارد. این گزینه میتواند چندین بار برای بارگیری چند بخش مجزا استفاده شود؛ به عنوان مثال: --download-sections "*10:15-inf" --download-sections "intro"
- --downloader [PROTO:]NAME
- نام یا مسیر بارگیرنده خارجی مورد استفاده، که بهطور اختیاری پروتکلهای هدف (http، ftp، m3u8، dash، rtmp) به عنوان پیشوند به آن اضافه میشوند. در حال حاضر از native، aria2c، axel، curl، ffmpeg، httpie و wget پشتیبانی میکند. میتوانید از این گزینه چندین بار برای تعیین بارگیرندههای مختلف برای پروتکلهای گوناگون استفاده کنید. به عنوان مثال: --downloader aria2c --downloader "dash,m3u8:native" از aria2c برای بارگیریهای http/ftp و از بارگیرنده داخلی (native) برای بارگیریهای dash/m3u8 استفاده خواهد کرد (نام مستعار: --external-downloader)
- --downloader-args NAME:ARGS
- ارسال این آرگومانها به بارگیرنده خارجی. نام بارگیرنده و آرگومانها با دونقطه ":" از یکدیگر جدا میشوند. برای ffmpeg، آرگومانها را میتوان با همان ساختار نوشتاری --postprocessor-args به موقعیتهای مختلف ارسال کرد. میتوانید از این گزینه چندین بار برای ارسال آرگومانهای گوناگون به بارگیرندههای مختلف استفاده کنید (نام مستعار: --external-downloader-args).SS گزینههای سیستمفایل:
- -a, --batch-file FILE
- فایلی شامل نشانیهای وب (URL) برای بارگیری ("-" برای stdin)، یک URL در هر سطر. سطرهایی که با "#"، ";" یا "]" آغاز شوند، یادداشت (کامنت) در نظر گرفته شده و نادیده گرفته میشوند.
- --no-batch-file
- عدم خواندن نشانیهای وب از فایل دستهای (پیشفرض)
- -P, --paths [TYPES:]PATH
- مسیرهایی که فایلها باید در آنجا بارگیری شوند. نوع فایل و مسیر را با استفاده از دونقطه (":") مشخص و جدا کنید. تمام انواعی که در TYPES برای --output مشخص شدهاند پشتیبانی میشوند. علاوه بر این، میتوانید مسیرهای "home" (پیشفرض) و "temp" را نیز مشخص کنید. همه فایلهای موقت ابتدا در مسیر temp بارگیری شده و پس از پایان بارگیری، فایلهای نهایی به مسیر home منتقل میشوند. اگر --output یک مسیر مطلق باشد، این گزینه نادیده گرفته میشود.
- -o, --output [TYPES:]TEMPLATE
- قالب نام فایل خروجی؛ برای جزئیات به بخش "OUTPUT TEMPLATE" مراجعه کنید
- --output-na-placeholder TEXT
- جانگهدار برای فیلدهای غیرقابل دسترس در --output (پیشفرض: "NA")
- --restrict-filenames
- محدود کردن نام فایلها تنها به نویسههای ASCII و اجتناب از "&" و فاصلهها در نام فایل
- --no-restrict-filenames
- مجاز بودن نویسههای یونیکد، "&" و فاصلهها در نام فایلها (پیشفرض)
- --windows-filenames
- اجبار نام فایلها به سازگاری با Windows
- --no-windows-filenames
- پالایش حداقلی نام فایلها
- --trim-filenames LENGTH
- محدود کردن طول نام فایل (بدون احتساب پسوند) به تعداد نویسههای مشخصشده
- -w, --no-overwrites
- هیچ فایلی بازنویسی نشود
- --force-overwrites
- بازنویسی همه فایلهای ویدیو و فراداده (متادیتا). این گزینه شامل --no-continue نیز میشود
- --no-force-overwrites
- ویدیو بازنویسی نشود، اما فایلهای مرتبط بازنویسی شوند (پیشفرض)
- -c, --continue
- ادامه بارگیری فایلها/بخشهای ناقص بارگیریشده (پیشفرض)
- --no-continue
- عدم ادامه بارگیری قطعات ناقص. اگر فایل قطعهبندی نشده باشد، بارگیری کل فایل از ابتدا آغاز میشود
- --part
- استفاده از فایلهای .part به جای نوشتن مستقیم روی فایل خروجی (پیشفرض)
- --no-part
- عدم استفاده از فایلهای .part - نوشتن مستقیم در فایل خروجی
- --mtime
- استفاده از سرآیند Last-modified برای تنظیم زمان تغییر فایل
- --no-mtime
- عدم استفاده از سرآیند Last-modified برای تنظیم زمان تغییر فایل (پیشفرض)
- --write-description
- نوشتن توضیحات ویدیو در یک فایل .description
- --no-write-description
- عدم نوشتن توضیحات ویدیو (پیشفرض)
- --write-info-json
- نوشتن فرادادههای ویدیو در یک فایل .info.json (این فایل ممکن است حاوی اطلاعات شخصی باشد)
- --no-write-info-json
- عدم نوشتن فرادادههای ویدیو (پیشفرض)
- --write-playlist-metafiles
- نوشتن فرادادههای فهرستپخش علاوهبر فرادادههای ویدیو هنگام استفاده از --write-info-json، --write-description و غیره (پیشفرض)
- --no-write-playlist-metafiles
- عدم نوشتن فرادادههای فهرستپخش هنگام استفاده از --write-info-json، --write-description و غیره
- --clean-info-json
- حذف برخی فرادادههای داخلی مانند نام فایلها از infojson (پیشفرض)
- --no-clean-info-json
- نوشتن همه فیلدها در infojson
- --write-comments
- دریافت دیدگاههای ویدیو برای قرارگیری در infojson. اگر استخراج سریع باشد، دیدگاهها حتی بدون این گزینه نیز دریافت میشوند (نام مستعار: --get-comments)
- --no-write-comments
- عدم دریافت دیدگاههای ویدیو مگر اینکه استخراج آنها سریع باشد (نام مستعار: --no-get-comments)
- --load-info-json FILE
- فایل JSON حاوی اطلاعات ویدیو (ایجاد شده با گزینه "--write-info-json")
- فایلی با قالب Netscape برای خواندن کوکیها و ذخیره کوکیها در آن
- عدم خواندن/ذخیره کوکیها از/به فایل (پیشفرض)
- نام مرورگری که کوکیها از آن بارگیری میشوند. مرورگرهای پشتیبانیشده در حال حاضر: brave، chrome، chromium، edge، firefox، opera، safari، vivaldi، whale. به صورت اختیاری، KEYRING مورد استفاده برای رمزگشایی کوکیهای Chromium در Linux، نام/مسیر PROFILE برای بارگیری کوکیها، و نام CONTAINER (در صورت استفاده از Firefox) (مقدار "none" برای عدم استفاده از کانتینر) میتوانند همراه با جداکنندههای مربوطه مشخص شوند. بهطور پیشفرض، تمام کانتینرهای نمایهای که اخیراً به آن دسترسی پیدا شده است استفاده میشوند. دستهکلیدهای (keyrings) پشتیبانیشده در حال حاضر: basictext، gnomekeyring، kwallet، kwallet5، kwallet6
- عدم بارگیری کوکیها از مرورگر (پیشفرض)
- --cache-dir DIR
- مکانی در سیستمفایل که yt-dlp میتواند برخی اطلاعات بارگیریشده (مانند شناسههای کلاینت و امضاها) را بهطور دائم در آن ذخیره کند. بهطور پیشفرض ${XDG_CACHE_HOME}/yt-dlp
- --no-cache-dir
- غیرفعال کردن حافظه پنهان (کش) سیستمفایل
- --rm-cache-dir
- حذف تمام فایلهای حافظه پنهان سیستمفایل.SS گزینههای تصویر بندانگشتی (Thumbnail Options):
- --write-thumbnail
- نوشتن تصویر بندانگشتی روی دیسک
- --no-write-thumbnail
- تصویر بندانگشتی روی دیسک نوشته نشود (پیشفرض)
- --write-all-thumbnails
- نوشتن تمام قالبهای تصویر بندانگشتی روی دیسک
- --list-thumbnails
- فهرست کردن تصاویر بندانگشتی موجود برای هر ویدیو. شبیهسازی میشود، مگر اینکه از --no-simulate استفاده شود
گزینههای میانبر اینترنتی (Internet Shortcut Options):
- --write-link
- نوشتن یک فایل میانبر اینترنتی، بسته به سیستمعامل فعلی (.url، .webloc یا .desktop). ممکن است نشانی اینترنتی (URL) توسط سیستمعامل ذخیره موقت (کَش) شود
- --write-url-link
- نوشتن یک میانبر اینترنتی ویندوز .url. سیستمعامل نشانی اینترنتی (URL) را بر اساس مسیر فایل ذخیره موقت (کَش) میکند
- --write-webloc-link
- نوشتن یک میانبر اینترنتی مکاواس .webloc
- --write-desktop-link
- نوشتن یک میانبر اینترنتی لینوکس .desktop
گزینههای پرگویی و شبیهسازی (Verbosity and Simulation Options):
- -q, --quiet
- فعالسازی حالت بیصدا. در صورت استفاده به همراه --verbose، گزارشها در stderr چاپ میشوند
- --no-quiet
- غیرفعالسازی حالت بیصدا. (پیشفرض)
- --no-warnings
- نادیده گرفتن هشدارها
- -s, --simulate
- ویدیو دانلود نشود و چیزی روی دیسک نوشته نشود
- --no-simulate
- دانلود ویدیو حتی در صورت استفاده از گزینههای چاپ/فهرستکردن
- --ignore-no-formats-error
- نادیده گرفتن خطای "No video formats". برای استخراج فراداده حتی در صورتی که ویدیوها عملاً برای دانلود در دسترس نباشند مفید است (آزمایشی)
- --no-ignore-no-formats-error
- ایجاد خطا در صورت پیدا نشدن قالبهای ویدیویی قابل دانلود (پیشفرض)
- --skip-download
- ویدیو دانلود نشود، اما تمام فایلهای مرتبط نوشته شوند (نام مستعار: --no-download)
- -O, --print [WHEN:]TEMPLATE
- نام فیلد یا الگوی خروجی برای چاپ روی صفحه نمایش، همراه با امکان اختیاری افزودن زمان چاپ به عنوان پیشوند که با یک ":" جدا میشود. مقادیر پشتیبانیشده برای "WHEN" مشابه مقادیر --use-postprocessor هستند (پیشفرض: video). گزینه --quiet را فعال میکند. گزینه --simulate را فعال میکند، مگر اینکه از --no-simulate یا مراحل بعدی WHEN استفاده شود. از این گزینه میتوان چندین بار استفاده کرد
- --print-to-file [WHEN:]TEMPLATE FILE
- الحاق الگوی ارائهشده به فایل. مقادیر WHEN و TEMPLATE همانند مقادیر آنها در --print هستند. آرگومان FILE از ساختاری مشابه الگوی خروجی استفاده میکند. از این گزینه میتوان چندین بار استفاده کرد
- -j, --dump-json
- بیصدا، اما اطلاعات JSON برای هر ویدیو چاپ میشود. شبیهسازی میشود، مگر اینکه از --no-simulate استفاده شود. برای مشاهده توضیحات کلیدهای در دسترس، "OUTPUT TEMPLATE" را ببینید
- -J, --dump-single-json
- بیصدا، اما اطلاعات JSON را برای هر URL یا infojson ارائهشده چاپ میکند. شبیهسازی میشود، مگر اینکه از --no-simulate استفاده شود. اگر URL به یک فهرستپخش اشاره کند، کل اطلاعات فهرستپخش در یک خط چاپ میشود
- --force-write-archive
- اجبار به نوشتن مدخلهای بایگانی دانلود تا زمانی که خطایی رخ ندهد، حتی اگر از -s یا گزینه شبیهسازی دیگری استفاده شده باشد (نام مستعار: --force-download-archive)
- --newline
- نمایش نوار پیشرفت در خطوط جدید
- --no-progress
- نوار پیشرفت چاپ نشود
- --progress
- نمایش نوار پیشرفت، حتی در حالت بیصدا
- --console-title
- نمایش پیشرفت در نوار عنوان کنسول
- --progress-template [TYPES:]TEMPLATE
- الگو برای خروجیهای پیشرفت، همراه با امکان اختیاری درج یکی از پیشوندهای "download:" (پیشفرض)، "download-title:" (عنوان کنسول)، "postprocess:" یا "postprocess-title:". فیلدهای ویدیو تحت کلید "info" و مشخصههای پیشرفت تحت کلید "progress" در دسترس هستند. برای مثال: --console-title --progress-template "download-title:%(info.id)s-%(progress.eta)s"
- --progress-delta SECONDS
- فاصله زمانی بین بهروزرسانیهای خروجی پیشرفت (پیشفرض: 0)
- -v, --verbose
- چاپ اطلاعات مختلف اشکالزدایی
- --dump-pages
- چاپ صفحات بارگیریشده با کدگذاری base64 برای اشکالزدایی مشکلات (بسیار پرگو)
- --write-pages
- نوشتن صفحات واسط بارگیریشده در فایلهایی در دایرکتوری جاری برای اشکالزدایی مشکلات
- --print-traffic
- نمایش ترافیک ارسالی و دریافتی HTTP.SS راهکارها (Workarounds):
- --encoding ENCODING
- اجبار به استفاده از کدگذاری مشخصشده (آزمایشی)
- --legacy-server-connect
- اجازه صریح به برقراری اتصال HTTPS به سرورهایی که از RFC 5746 secure renegotiation پشتیبانی نمیکنند
- --no-check-certificates
- نادیدهگرفتن اعتبارسنجی گواهیهای HTTPS
- --prefer-insecure
- استفاده از اتصالی رمزنگارینشده برای دریافت اطلاعات ویدیو
- --add-headers FIELD:VALUE
- مشخصکردن یک هدر سفارشی HTTP و مقدار آن، با جداکننده دونقطه ":". میتوانید از این گزینه چندین بار استفاده کنید
- --bidi-workaround
- راهکاری برای ترمینالهایی که فاقد پشتیبانی از متنهای دوجهته هستند. نیازمند فایل اجرایی bidiv یا fribidi در PATH است
- --sleep-requests SECONDS
- تعداد ثانیههای درنگ بین درخواستها هنگام استخراج دادهها
- --sleep-interval SECONDS
- تعداد ثانیههای درنگ پیش از هر بارگیری. در صورت استفاده همراه با --max-sleep-interval این مقدار حداقل زمان درنگ خواهد بود (نام مستعار: --min-sleep-interval)
- --max-sleep-interval SECONDS
- حداکثر تعداد ثانیههای درنگ. تنها همراه با --min-sleep-interval قابل استفاده است
- --sleep-subtitles SECONDS
- تعداد ثانیههای درنگ پیش از بارگیری هر زیرنویس
گزینههای قالب ویدیو (Video Format Options):
- -f, --format FORMAT
- کد قالب ویدیو، برای جزئیات بیشتر به "FORMAT SELECTION" مراجعه کنید
- -S, --format-sort SORTORDER
- مرتبسازی قالبها بر اساس فیلدهای ارائهشده، برای جزئیات بیشتر به "Sorting Formats" مراجعه کنید
- --format-sort-reset
- نادیدهگرفتن ترتیب مرتبسازی قبلیِ تعیینشده توسط کاربر و بازنشانی به حالت پیشفرض
- --format-sort-force
- اجبار ترتیب مرتبسازی تعیینشده توسط کاربر برای داشتن اولویت بر تمامی فیلدها، برای جزئیات بیشتر به "Sorting Formats" مراجعه کنید (نام مستعار: --S-force)
- --no-format-sort-force
- برخی فیلدها بر ترتیب مرتبسازی تعیینشده توسط کاربر اولویت دارند (پیشفرض)
- --video-multistreams
- اجازه ادغام چندین جریان ویدیویی در یک فایل واحد
- --no-video-multistreams
- تنها یک جریان ویدیویی برای هر فایل خروجی بارگیری میشود (پیشفرض)
- --audio-multistreams
- اجازه ادغام چندین جریان صوتی در یک فایل واحد
- --no-audio-multistreams
- تنها یک جریان صوتی برای هر فایل خروجی بارگیری میشود (پیشفرض)
- --prefer-free-formats
- ترجیح قالبهای ویدیویی با کانتینرهای آزاد نسبت به نمونههای غیرآزاد با همان کیفیت. همراه با "-S ext" استفاده شود تا کانتینرهای آزاد صرفنظر از کیفیت، اکیداً ترجیح داده شوند
- --no-prefer-free-formats
- عدم اعمال هرگونه اولویت خاص برای کانتینرهای آزاد (پیشفرض)
- --check-formats
- اطمینان از اینکه قالبها تنها از میان مواردی که واقعاً قابل بارگیری هستند انتخاب شوند
- --check-all-formats
- بررسی تمامی قالبها برای اینکه مشخص شود آیا واقعاً قابل بارگیری هستند یا خیر
- --no-check-formats
- عدم بررسی اینکه آیا قالبها واقعاً قابل بارگیری هستند یا خیر
- -F, --list-formats
- فهرستکردن قالبهای موجود برای هر ویدیو. عملیات شبیهسازی میشود مگر اینکه از --no-simulate استفاده شود
- --merge-output-format FORMAT
- کانتینرهایی که ممکن است هنگام ادغام قالبها استفاده شوند، جداشده با "/"، مانند "mp4/mkv". در صورت عدم نیاز به ادغام نادیده گرفته میشود. (در حال حاضر پشتیبانی میشود: avi, flv, mkv, mov, mp4, webm).SS گزینههای زیرنویس (Subtitle Options):
- --write-subs
- نوشتن فایل زیرنویس
- --no-write-subs
- فایل زیرنویس نوشته نشود (پیشفرض)
- --write-auto-subs
- نوشتن فایل زیرنویس تولیدشده بهصورت خودکار (نام مستعار: --write-automatic-subs)
- --no-write-auto-subs
- زیرنویسهای تولیدشده بهصورت خودکار نوشته نشوند (پیشفرض) (نام مستعار: --no-write-automatic-subs)
- --list-subs
- فهرست کردن زیرنویسهای موجود برای هر ویدیو. عملیات شبیهسازی میشود مگر اینکه از --no-simulate استفاده شود
- --sub-format FORMAT
- قالب زیرنویس؛ اولویت قالبها را با جداکنندهٔ "/" میپذیرد، برای مثال "srt" یا "ass/srt/best"
- --sub-langs LANGS
- زبانهای زیرنویسها برای بارگیری (میتواند عبارت منظم باشد) یا "all" که با کاما جدا شدهاند، برای مثال --sub-langs "en.*,ja" (که در آن "en.*" یک الگوی عبارت منظم است که "en" و بهدنبال آن ۰ یا چند نویسه از هر نوع را مطابقت میدهد). میتوانید پیشوند "-" را به کد زبان اضافه کنید تا از زبانهای درخواستی مستثنی شود، برای مثال --sub-langs all,-live_chat. برای مشاهدهٔ فهرستی از برچسبهای زبان موجود از --list-subs استفاده کنید
گزینههای احراز هویت (Authentication Options):
- -u, --username USERNAME
- ورود با این شناسهٔ حساب کاربری
- -p, --password PASSWORD
- گذرواژهٔ حساب کاربری. اگر این گزینه مشخص نشود، yt-dlp آن را بهصورت تعاملی خواهد پرسید
- -2, --twofactor TWOFACTOR
- کد احراز هویت دو مرحلهای
- -n, --netrc
- استفاده از دادههای احراز هویت .netrc
- --netrc-location PATH
- محل دادههای احراز هویت .netrc؛ مسیر مستقیم فایل یا پوشهٔ حاوی آن. پیشفرض ~/.netrc است
- --netrc-cmd NETRC_CMD
- دستوری که برای دریافت اعتبارنامههای یک استخراجکننده (extractor) اجرا میشود.
- --video-password PASSWORD
- گذرواژهٔ مخصوص ویدیو
- --ap-mso MSO
- شناسهٔ اپراتور چندسیستمی (تأمینکنندهٔ تلویزیونی) Adobe Pass؛ برای مشاهدهٔ فهرستی از MSOهای موجود از --ap-list-mso استفاده کنید
- --ap-username USERNAME
- شناسهٔ ورود به حساب اپراتور چندسیستمی
- --ap-password PASSWORD
- گذرواژهٔ حساب اپراتور چندسیستمی. اگر این گزینه مشخص نشود، yt-dlp آن را بهصورت تعاملی خواهد پرسید
- --ap-list-mso
- فهرست کردن تمام اپراتورهای چندسیستمی پشتیبانیشده
- --client-certificate CERTFILE
- مسیر فایل گواهی کلاینت با قالب PEM. میتواند شامل کلید خصوصی نیز باشد
- --client-certificate-key KEYFILE
- مسیر فایل کلید خصوصی برای گواهی کلاینت
- --client-certificate-password PASSWORD
- گذرواژه برای کلید خصوصی گواهی کلاینت، در صورت رمزگذاری شدن. اگر ارائه نشود و کلید رمزگذاری شده باشد، yt-dlp آن را بهصورت تعاملی خواهد پرسید.SS "گزینههای پسپردازش (Post-Processing Options):"
- -x, --extract-audio
- تبدیل فایلهای ویدیویی به فایلهای فقط صوتی (نیازمند ffmpeg و ffprobe).
- --audio-format FORMAT
- قالب برای تبدیل صدا هنگام استفاده از -x. (در حال حاضر پشتیبانی میشود: best (پیشفرض)، aac، alac، flac، m4a، mp3، opus، vorbis، wav). میتوانید با نحوی مشابه --remux-video چندین قانون را مشخص کنید.
- --audio-quality QUALITY
- کیفیت صدای ffmpeg را جهت استفاده هنگام تبدیل صدا با -x مشخص کنید. مقداری بین 0 (بهترین) و 10 (بدترین) برای VBR یا یک نرخ بیت معین مانند 128K وارد کنید (پیشفرض 5).
- --remux-video FORMAT
- بازترکیب (remux) ویدیو به یک ظرف دیگر در صورت لزوم (در حال حاضر پشتیبانی میشود: avi، flv، gif، mkv، mov، mp4، webm، aac، aiff، alac، flac، m4a، mka، mp3، ogg، opus، vorbis، wav). اگر ظرف مقصد از کدک ویدیویی/صوتی پشتیبانی نکند، بازترکیب ناموفق خواهد بود. میتوانید چندین قانون مشخص کنید؛ برای مثال "aac>m4a/mov>mp4/mkv" مقدار aac را به m4a، مقدار mov را به mp4 و هر چیز دیگری را به mkv بازترکیب میکند.
- --recode-video FORMAT
- کدگذاری مجدد (re-encode) ویدیو به قالبی دیگر در صورت لزوم. نحو و قالبهای پشتیبانیشده مشابه --remux-video هستند.
- --postprocessor-args NAME:ARGS
- ارسال این آرگومانها به پسپردازندهها. نام پسپردازنده/فایل اجرایی و آرگومانها را با دونقطه ":" جدا کنید تا آرگومان به پسپردازنده/فایل اجرایی مشخصشده اختصاص یابد. پسپردازندههای (PP) پشتیبانیشده عبارتند از: Merger، ModifyChapters، SplitChapters، ExtractAudio، VideoRemuxer، VideoConvertor، Metadata، EmbedSubtitle، EmbedThumbnail، SubtitlesConvertor، ThumbnailsConvertor، FixupStretched، FixupM4a، FixupM3u8، FixupTimestamp و FixupDuration. فایلهای اجرایی پشتیبانیشده عبارتند از: AtomicParsley، FFmpeg و FFprobe. همچنین میتوانید "PP+EXE:ARGS" را تعیین کنید تا آرگومانها تنها هنگامی که توسط پسپردازندهٔ مشخصشده استفاده میشوند، به فایل اجرایی موردنظر ارسال شوند. علاوه بر این، برای ffmpeg/ffprobe میتوان "_i"/"_o" را به پیشوند افزود که اختیاری با یک عدد دنبال میشود تا آرگومان قبل از فایل ورودی/خروجی مشخصشده اعمال شود؛ برای مثال: --ppa "Merger+ffmpeg_i1:-v quiet". میتوانید از این گزینه چندین بار برای دادن آرگومانهای متفاوت به پسپردازندههای مختلف استفاده کنید. (نام مستعار: --ppa)
- -k, --keep-video
- نگهداشتن فایل ویدیویی میانی روی دیسک پس از پسپردازش.
- --no-keep-video
- حذف فایل ویدیویی میانی پس از پسپردازش (پیشفرض).
- --post-overwrites
- بازنویسی روی فایلهای پسپردازششده (پیشفرض).
- --no-post-overwrites
- عدم بازنویسی روی فایلهای پسپردازششده.
- --embed-subs
- جاسازی زیرنویس در ویدیو (صرفاً برای ویدیوهای mp4، webm و mkv).
- --no-embed-subs
- عدم جاسازی زیرنویس (پیشفرض).
- --embed-thumbnail
- جاسازی تصویر بندانگشتی در ویدیو به عنوان تصویر جلد.
- --no-embed-thumbnail
- عدم جاسازی تصویر بندانگشتی (پیشفرض).
- --embed-metadata
- جاسازی متاداده در فایل ویدیویی. همچنین در صورت وجود، فصلها/infojson را نیز جاسازی میکند، مگر اینکه از --no-embed-chapters/--no-embed-info-json استفاده شده باشد (نام مستعار: --add-metadata).
- --no-embed-metadata
- عدم افزودن متاداده به فایل (پیشفرض) (نام مستعار: --no-add-metadata).
- --embed-chapters
- افزودن نشانگرهای فصل به فایل ویدیویی (نام مستعار: --add-chapters).
- --no-embed-chapters
- عدم افزودن نشانگرهای فصل (پیشفرض) (نام مستعار: --no-add-chapters).
- --embed-info-json
- جاسازی infojson به عنوان یک پیوست در فایلهای ویدیویی mkv/mka.
- --no-embed-info-json
- عدم جاسازی infojson به عنوان پیوست در فایل ویدیویی.
- --parse-metadata [WHEN:]FROM:TO
- تجزیه متادادههای تکمیلی مانند عنوان/هنرمند از فیلدهای دیگر؛ برای جزئیات به "MODIFYING METADATA" مراجعه کنید. مقادیر پشتیبانیشده برای "WHEN" همانند موارد --use-postprocessor است (پیشفرض: pre_process).
- --replace-in-metadata [WHEN:]FIELDS REGEX REPLACE
- جایگزینی متن در یک فیلد متاداده با استفاده از عبارت باقاعده دادهشده. این گزینه میتواند چندین بار استفاده شود. مقادیر پشتیبانیشده برای "WHEN" همانند موارد --use-postprocessor است (پیشفرض: pre_process).
- --xattrs
- نوشتن متاداده در صفتهای گسترده (xattrs) فایل ویدیویی (با استفاده از استانداردهای Dublin Core و XDG).
- --concat-playlist POLICY
- الحاق (پیوست کردن) ویدیوهای یک فهرست پخش. یکی از مقادیر "never"، "always"، یا "multi_video" (پیشفرض؛ تنها زمانی که ویدیوها یک نمایش واحد را تشکیل دهند). همه فایلهای ویدیویی باید کدکها و تعداد جریانهای یکسانی داشته باشند تا قابل الحاق باشند. پیشوند "pl_video:" را میتوان همراه با "--paths" و "--output" برای تعیین نام فایل خروجی برای فایلهای الحاقشده استفاده کرد. برای جزئیات به "OUTPUT TEMPLATE" مراجعه کنید.
- --fixup POLICY
- اصلاح خودکار اشکالات شناختهشدهٔ فایل. یکی از مقادیر never (کاری نکن)، warn (صرفاً ارسال هشدار)، detect_or_warn (پیشفرض؛ اصلاح فایل در صورت امکان، در غیر این صورت هشدار)، force (تلاش برای اصلاح حتی در صورت وجود فایل از قبل).
- --ffmpeg-location PATH
- محل فایل اجرایی ffmpeg؛ مسیر کامل فایل اجرایی یا پوشهٔ دربرگیرندهٔ آن.
- --exec [WHEN:]CMD
- اجرای یک دستور، با پیشوند اختیاری برای زمان اجرای آن، که با یک ":" جدا میشود. مقادیر پشتیبانیشده برای "WHEN" همانند موارد --use-postprocessor است (پیشفرض: after_move). از همان نحو الگوی خروجی میتوان برای ارسال هر فیلدی به عنوان آرگومان به دستور استفاده کرد؛ با این حال، به دلایل امنیتی تنها تبدیلات مجاز عبارتند از: "i"/"d" (عدد صحیح علامتدار دهدهی)، "f" (ممیز شناور دهدهی) و "q" (نقلقولشده در شل). اگر فیلدی ارسال نشود، %(filepath,_filename|)q به انتهای دستور اضافه میشود. این گزینه میتواند چندین بار استفاده شود.
- --no-exec
- حذف هر دستور --exec تعریفشدهٔ قبلی.
- --convert-subs FORMAT
- تبدیل زیرنویسها به قالبی دیگر (در حال حاضر پشتیبانی میشود: ass، lrc، srt، vtt). از "--convert-subs none" برای غیرفعال کردن تبدیل استفاده کنید (پیشفرض) (نام مستعار: --convert-subtitles).
- --convert-thumbnails FORMAT
- تبدیل تصاویر بندانگشتی به قالبی دیگر (در حال حاضر پشتیبانی میشود: jpg، png، webp). میتوانید با استفاده از نحوی مشابه "--remux-video"، چندین قانون را مشخص کنید. از "--convert-thumbnails none" برای غیرفعال کردن تبدیل استفاده کنید (پیشفرض).
- --split-chapters
- تقسیم ویدیو به چندین فایل بر اساس فصلهای داخلی. پیشوند "chapter:" میتواند همراه با "--paths" و "--output" برای تعیین نام فایل خروجی فایلهای تقسیمشده استفاده شود. برای جزئیات به "OUTPUT TEMPLATE" مراجعه کنید.
- --no-split-chapters
- عدم تقسیم ویدیو بر اساس فصلها (پیشفرض).
- --remove-chapters REGEX
- حذف فصلهایی که عنوان آنها با عبارت باقاعده دادهشده مطابقت دارد. نحو مشابه --download-sections است. این گزینه میتواند چندین بار استفاده شود.
- --no-remove-chapters
- عدم حذف هیچ فصلی از فایل (پیشفرض).
- --force-keyframes-at-cuts
- اجبار فریمهای کلیدی (keyframes) در نقاط برش هنگام دانلود/تقسیم/حذف بخشها. این کار به دلیل نیاز به کدگذاری مجدد کُند است، اما ویدیوی حاصل ممکن است مصنوعات تصویری کمتری در اطراف نقاط برش داشته باشد..TP --no-force-keyframes-at-cuts هنگام برش/تقسیم ویدیو، فریمهای کلیدی (keyframes) در اطراف فصلها اجباری نمیشوند (پیشفرض)
- --use-postprocessor NAME[:ARGS]
- نام (حساس به بزرگی و کوچکی حروف) پسپردازشگرهای افزونه جهت فعالسازی، و (اختیاری) آرگومانهایی که با دونقطه ":" از آن جدا شده و به آن ارسال میشوند. آرگومانهای ARGS فهرستی از NAME=VALUE هستند که با نقطهویرگول ";" جدا شدهاند. آرگومان "when" مشخص میکند که پسپردازشگر چه زمانی فراخوانی شود. این مقدار میتواند یکی از موارد "pre_process" (پس از استخراج ویدیو)، "after_filter" (پس از عبور ویدیو از فیلتر)، "video" (پس از --format؛ پیش از --print/--output)، "before_dl" (پیش از بارگیری هر ویدیو)، "post_process" (پس از بارگیری هر ویدیو؛ پیشفرض)، "after_move" (پس از انتقال فایل ویدیو به مکان نهاییاش)، "after_video" (پس از بارگیری و پردازش تمامی فرمتهای یک ویدیو)، یا "playlist" (در پایان لیست پخش) باشد. از این گزینه میتوان چندین بار برای افزودن پسپردازشگرهای مختلف استفاده کرد
گزینههای SponsorBlock (SponsorBlock Options):
ایجاد مدخلهای فصلبندی یا حذف بخشهای گوناگون (حامی مالی، مقدمهها و غیره) از ویدیوهای بارگیریشدهٔ YouTube با استفاده از API سرویس SponsorBlock (https://sponsor.ajay.app)
- --sponsorblock-mark CATS
- دستهبندیهای SponsorBlock برای ایجاد فصل که با کاما از هم جدا شدهاند. دستهبندیهای در دسترس عبارتند از sponsor، intro، outro، selfpromo، preview، filler، interaction، music_offtopic، hook، poi_highlight، chapter، all و default (=all). میتوانید با افزودن یک پیشوند "-" قبل از دستهبندی، آن را مستثنی کنید. برای توضیحات مربوط به دستهبندیها به [1] مراجعه کنید. بهعنوان مثال: --sponsorblock-mark all,-preview [1] https://wiki.sponsor.ajay.app/w/Segment_Categories
- --sponsorblock-remove CATS
- دستهبندیهای SponsorBlock که باید از فایل ویدیو حذف شوند، جدا شده با کاما. اگر یک دستهبندی هم در mark و هم در remove وجود داشته باشد، remove اولویت دارد. ساختار دستوری و دستهبندیهای موجود مانند --sponsorblock-mark است، به جز اینکه "default" به "all,-filler" اشاره دارد و poi_highlight و chapter در دسترس نیستند
- --sponsorblock-chapter-title TEMPLATE
- یک الگوی خروجی برای عنوان فصلهای SponsorBlock که توسط --sponsorblock-mark ایجاد شدهاند. تنها فیلدهای در دسترس عبارتند از start_time، end_time، category، categories، name و category_names. پیشفرض: "[SponsorBlock]: %(category_names)l"
- --no-sponsorblock
- غیرفعالسازی هر دو گزینهٔ --sponsorblock-mark و --sponsorblock-remove
- --sponsorblock-api URL
- نشانی API مربوط به SponsorBlock، پیشفرض https://sponsor.ajay.app است
گزینههای استخراجکننده (Extractor Options):
- --extractor-retries RETRIES
- تعداد تلاشهای مجدد برای خطاهای شناختهشدهٔ استخراجکننده (پیشفرض ۳ است)، یا "infinite"
- --allow-dynamic-mpd
- پردازش مانیفستهای پویای DASH (پیشفرض) (نام مستعار: --no-ignore-dynamic-mpd)
- --ignore-dynamic-mpd
- عدم پردازش مانیفستهای پویای DASH (نام مستعار: --no-allow-dynamic-mpd)
- --hls-split-discontinuity
- تقسیم لیستهای پخش HLS به فرمتهای مختلف در نقاط ناپیوستگی مانند وقفههای تبلیغاتی
- --no-hls-split-discontinuity
- عدم تقسیم لیستهای پخش HLS به فرمتهای مختلف در نقاط ناپیوستگی مانند وقفههای تبلیغاتی (پیشفرض)
- --extractor-args IE_KEY:ARGS
- ارسال آرگومانهای ARGS به استخراجکنندهٔ IE_KEY. برای جزئیات به بخش "EXTRACTOR ARGUMENTS" مراجعه کنید. میتوانید از این گزینه چندین بار برای ارائه آرگومان به استخراجکنندههای مختلف استفاده کنید.SS "نامهای مستعار پیشتنظیم (Preset Aliases):"
نامهای مستعار از پیش تعریفشده برای راحتی و سهولت استفاده. توجه داشته باشید که نسخههای آیندهٔ yt-dlp ممکن است پیشتنظیمهایی را اضافه یا تنظیم کنند، اما نامهای پیشتنظیم موجود تغییر نخواهند کرد یا حذف نخواهند شد
- -t mp3
- -f 'ba[acodec^=mp3]/ba/b' -x --audio-format mp3
- -t aac
- -f 'ba[acodec^=aac]/ba[acodec^=mp4a.40.]/ba/b' -x --audio-format aac
- -t mp4
- --merge-output-format mp4 --remux-video mp4 -S vcodec:h264,lang,quality,res,fps,hdr:12,a codec:aac
- -t mkv
- --merge-output-format mkv --remux-video mkv
- -t sleep
- --sleep-subtitles 5 --sleep-requests 0.75 --sleep-interval 10 --max-sleep-interval 20
پیکربندی (CONFIGURATION)
شما میتوانید yt-dlp را با قرار دادن هر یک از گزینههای پشتیبانیشدهٔ خط فرمان در یک فایل پیکربندی، پیکربندی کنید. پیکربندی از مکانهای زیر بارگذاری میشود:
- 1.
- پیکربندی اصلی (Main Configuration):
- •
- فایل دادهشده به --config-locations
- 2.
- پیکربندی قابلحمل (Portable Configuration): (توصیهشده برای نصبهای قابلحمل)
- •
- در صورت استفاده از باینری، yt-dlp.conf در همان دایرکتوری باینری
- •
- در صورت اجرا از سورسکد، yt-dlp.conf در دایرکتوری والد yt_dlp
- 3.
- پیکربندی خانه (Home Configuration):
- •
- yt-dlp.conf در مسیر خانگی دادهشده به -P
- •
- اگر -P داده نشود، دایرکتوری جاری جستجو میشود
- 4.
- پیکربندی کاربر (User Configuration):
- •
- ${XDG_CONFIG_HOME}/yt-dlp.conf
- •
- ${XDG_CONFIG_HOME}/yt-dlp/config (توصیهشده در Linux/macOS)
- •
- ${XDG_CONFIG_HOME}/yt-dlp/config.txt
- •
- ${APPDATA}/yt-dlp.conf
- •
- ${APPDATA}/yt-dlp/config (توصیهشده در Windows)
- •
- ${APPDATA}/yt-dlp/config.txt
- •
- ~/yt-dlp.conf
- •
- ~/yt-dlp.conf.txt
- •
- ~/.yt-dlp/config
- •
- ~/.yt-dlp/config.txt همچنین ببینید: نکات مربوط به متغیرهای محیطی
- 5.
- پیکربندی سیستم (System Configuration):
- •
- /etc/yt-dlp.conf
- •
- /etc/yt-dlp/config
- •
- /etc/yt-dlp/config.txt
برای نمونه، با فایل پیکربندی زیر، yt-dlp همواره صدا را استخراج میکند، mtime را کپی میکند، از یک پروکسی استفاده مینماید و تمام ویدیوها را درون دایرکتوری YouTube در دایرکتوری خانگی شما ذخیره میکند:
-
# Lines starting with # are comments # Always extract audio -x # Copy the mtime --mtime # Use this proxy --proxy 127.0.0.1:3128 # Save all videos under YouTube directory in your home directory -o ~/YouTube/%(title)s.%(ext)s
نکته: گزینهها در یک فایل پیکربندی دقیقاً همان گزینهها یا سوییچهای مورد استفاده در فراخوانیهای عادی خط فرمان هستند؛ بنابراین پس از - یا -- نباید هیچ فاصلهای وجود داشته باشد، به عنوان مثال -o یا --proxy اما نه - o یا -- proxy. همچنین در صورت نیاز باید همانند شل یونیکس نقلقول شوند.
اگر میخواهید تمام فایلهای پیکربندی را برای یک اجرای خاص yt-dlp غیرفعال کنید، میتوانید از --ignore-config استفاده نمایید. اگر --ignore-config درون هر فایل پیکربندی یافت شود، هیچ پیکربندی دیگری بارگذاری نخواهد شد. برای مثال، وجود این گزینه در فایل پیکربندی قابلحمل، از بارگذاری پیکربندیهای خانه، کاربر و سیستم جلوگیری میکند. علاوه بر این، (برای سازگاری رو به عقب) اگر --ignore-config درون فایل پیکربندی سیستم یافت شود، پیکربندی کاربر بارگذاری نخواهد شد..SS کدگذاری فایل پیکربندی
فایلهای پیکربندی در صورت وجود UTF BOM بر اساس آن، و در غیر این صورت با کدگذاری برگرفته از لوکال (locale) سیستم رمزگشایی میشوند.
اگر میخواهید فایل شما به شیوهٔ دیگری رمزگشایی شود، عبارت # coding: ENCODING را به ابتدای فایل اضافه کنید (برای نمونه: # coding: shift-jis). نباید هیچ نویسهای پیش از آن قرار گیرد، حتی فاصله یا BOM.
احراز هویت با netrc
همچنین ممکن است بخواهید برای استخراجکنندگانی که از احراز هویت پشتیبانی میکنند (از طریق ارائهٔ نام کاربری و گذرواژه با --username و --password)، ذخیرهسازی خودکار اعتبارنامهها را پیکربندی کنید تا نیازی نباشد در هر بار اجرای yt-dlp اعتبارنامهها را به عنوان آرگومانهای خط فرمان ارسال کنید و از ثبت گذرواژههای متنی ساده در تاریخچهٔ دستورات پوسته جلوگیری شود. میتوانید این کار را با استفاده از یک فایل .netrc (https://stackoverflow.com/tags/.netrc/info) به ازای هر استخراجکننده انجام دهید. برای این منظور، باید یک فایل .netrc در --netrc-location ایجاد کرده و مجوزهای دسترسی آن را تنها به خواندن/نوشتن توسط خودتان محدود کنید:
-
touch ${HOME}/.netrc chmod a-rwx,u+rw ${HOME}/.netrc
پس از آن، میتوانید اعتبارنامهها را برای یک استخراجکننده در قالب زیر اضافه کنید، که در آن extractor نام استخراجکننده با حروف کوچک است:
-
machine <extractor> login <username> password <password>
برای نمونه:
-
machine youtube login myaccount@gmail.com password my_youtube_password machine twitch login my_twitch_account_name password my_twitch_password
برای فعالسازی احراز هویت با فایل .netrc، باید گزینهٔ --netrc را به yt-dlp بدهید یا آن را در فایل پیکربندی قرار دهید.
مکان پیشفرض فایل .netrc مسیر ~ است (پایین را ببینید).
بهعنوان جایگزینی برای استفاده از فایل .netrc (که نقطهضعف نگهداری گذرواژههای شما در یک فایل متنی ساده را دارد)، میتوانید یک دستور سفارشی پوسته را برای تأمین اعتبارنامههای یک استخراجکننده پیکربندی کنید. این کار با ارائهٔ پارامتر --netrc-cmd انجام میشود؛ این دستور باید اعتبارنامهها را در قالب netrc در خروجی چاپ کند و در صورت موفقیت مقدار 0 را بازگرداند، سایر مقادیر به عنوان خطا در نظر گرفته خواهند شد. {} در دستور با نام استخراجکننده جایگزین خواهد شد تا امکان انتخاب اعتبارنامهها برای استخراجکنندهٔ مورد نظر فراهم شود.
برای نمونه: جهت استفاده از یک فایل رمزگذاریشدهٔ .netrc ذخیرهشده به عنوان .authinfo.gpg
-
yt-dlp --netrc-cmd 'gpg --decrypt ~/.authinfo.gpg' 'https://www.youtube.com/watch?v=YE7VzlLtp-4'
نکاتی درباره متغیرهای محیطی
- •
- متغیرهای محیطی معمولاً در UNIX به صورت ${VARIABLE}/$VARIABLE و در Windows به صورت %VARIABLE% مشخص میشوند؛ اما در این مستندات همواره به صورت ${VARIABLE} نشان داده شدهاند
- •
- همچنین yt-dlp امکان استفاده از متغیرها به سبک UNIX در Windows را برای گزینههای مسیرمانند فراهم میکند؛ مانند --output، --config-locations
- •
- در صورت تنظیم نشدن، مقدار پیشفرض ${XDG_CONFIG_HOME} برابر با ~/.config و مقدار پیشفرض ${XDG_CACHE_HOME} برابر با ~/.cache خواهد بود
- •
- در Windows، مسیر ~ در صورت وجود به ${HOME} اشاره میکند؛ و در غیر این صورت، به ${USERPROFILE} یا ${HOMEDRIVE}${HOMEPATH}
- •
- در Windows، مقدار ${USERPROFILE} عموماً به C:\Users\<user name> و ${APPDATA} به ${USERPROFILE}\AppData\Roaming اشاره دارد.SH "الگوی خروجی (OUTPUT TEMPLATE)"
گزینهٔ -o برای تعیین یک الگو برای نامهای فایل خروجی به کار میرود، در حالی که گزینهٔ -P برای مشخص کردن مسیری که هر نوع فایل باید در آن ذخیره شود استفاده میشود.
سادهترین کاربرد -o هنگام دانلود یک فایل تکی این است که هیچ آرگومان الگویی تعیین نشود، مانند yt-dlp -o funny_video.flv "https://some/video" (کدنویسی ثابت پسوند فایل به این صورت توصیه نمیشود و ممکن است برخی پسپردازشها را با شکست مواجه کند).
با این حال، الگو ممکن است شامل دنبالههای خاصی نیز باشد که هنگام دانلود هر ویدیو جایگزین میشوند. این دنبالههای خاص ممکن است بر اساس عملیات قالببندی رشته در پایتون (https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting) قالببندی شوند، مانند %(NAME)s یا %(NAME)05d. برای وضوح بیشتر، این الگو شامل یک علامت درصد است که در پی آن نامی درون پرانتز و سپس عملیات قالببندی میآید.
خود نامهای فیلد (بخش داخل پرانتز) نیز میتوانند قالببندیهای خاصی داشته باشند:
- 1.
- پیمایش اشیاء (Object traversal): دیکشنریها و لیستهای موجود در متادیتا را میتوان با استفاده از جداکنندهٔ نقطه . پیمایش کرد؛ مانند %(tags.0)s، %(subtitles.en.-1.ext)s. میتوانید با استفاده از دونقطه : برشزنی (slicing) پایتون را انجام دهید؛ مانند %(id.3:7)s، %(id.6:2:-1)s، %(formats.:.format_id)s. از آکوالاد {} میتوان برای ساخت دیکشنریهایی فقط با کلیدهای مشخص استفاده کرد؛ مانند %(formats.:.{format_id,height})#j. نام فیلد خالی %()s به کل infodict اشاره دارد؛ مانند %(.{id,title})s. توجه داشته باشید که تمام فیلدهایی که با این روش در دسترس قرار میگیرند در زیر فهرست نشدهاند. برای مشاهدهٔ چنین فیلدهایی از -j استفاده کنید.
- 2.
- محاسبات حسابی (Arithmetic): محاسبات حسابی ساده را میتوان روی فیلدهای عددی با استفاده از +، - و * انجام داد. مانند %(playlist_index+10)03d، %(n_entries+1-playlist_index)d
- 3.
- قالببندی تاریخ/زمان (Date/time Formatting): فیلدهای تاریخ/زمان را میتوان بر اساس قالببندی strftime (https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes) با تعیین آن به صورت جدا شده از نام فیلد با یک > قالببندی کرد. مانند %(duration>%H-%M-%S)s، %(upload_date>%Y-%m-%d)s، %(epoch-3600>%H-%M-%S)s
- 4.
- گزینههای جایگزین (Alternatives): فیلدهای جایگزین را میتوان با جداکنندهٔ , مشخص کرد. مانند %(release_date>%Y,upload_date>%Y|Unknown)s
- 5.
- جایگزینی (Replacement): یک مقدار جایگزین را میتوان با استفاده از جداکنندهٔ & و مطابق با ریززبان str.format (https://docs.python.org/3/library/string.html#format-specification-mini-language) مشخص کرد. اگر فیلد خالی نباشد، این مقدار جایگزین به جای محتوای واقعی فیلد استفاده خواهد شد. این کار پس از بررسی فیلدهای جایگزین انجام میشود؛ بنابراین در صورتی که هر کدام از فیلدهای جایگزین خالی نباشد، جایگزینی اعمال میشود. مانند %(chapters&has chapters|no chapters)s، %(title&TITLE={:>20}|NO TITLE)s
- 6.
- پیشفرض (Default): میتوان با استفاده از جداکنندهٔ | یک مقدار پیشفرض لفظی را برای مواقعی که فیلد خالی است تعیین کرد. این مقدار بر --output-na-placeholder اولویت دارد. مانند %(uploader|Unknown)s
- 7.
- تبدیلهای بیشتر (More Conversions): علاوه بر انواع قالبهای معمول diouxXeEfFgGcrs، برنامهٔ yt-dlp افزون بر این تبدیل به موارد زیر را پشتیبانی میکند: B = بایتها (Bytes)، j = خروجی json (پرچم # برای چاپ زیبا، + برای Unicode)، h = گریزدهی به HTML، l = یک لیست (list) جدا شده با کاما (پرچم # برای جداسازی با خط جدید \n)، q = رشتهٔ نقلقول شده (quoted) برای ترمینال (پرچم # برای تقسیم یک لیست به آرگومانهای مختلف)، D = افزودن پسوندهای دهدهی (Decimal) (مانند 10M) (پرچم # برای استفاده از ۱۰۲۴ به عنوان فاکتور)، و S = پاکسازی (Sanitize) به عنوان نام فایل (پرچم # برای حالت محدود).
- 8.
- عادیسازی یونیکد (Unicode normalization): نوع قالب U میتواند برای عادیسازی NFC یونیکد (https://docs.python.org/3/library/unicodedata.html#unicodedata.normalize) استفاده شود. پرچم فرم متناوب (#) عادیسازی را به NFD تغییر میدهد و پرچم تبدیل + را میتوان برای عادیسازی برابری سازگاری NFKC/NFKD به کار برد. مانند %(title)+.100U که NFKC است.
به طور خلاصه، نحو کلی برای یک فیلد به این صورت است:
-
%(name[.keys][addition][>strf][,alternate][&replacement][|default])[flags][width][.precision][length]type
علاوه بر این، میتوانید الگوهای خروجی متفاوتی را برای فایلهای گوناگون متادیتا جدا از الگوی خروجی عمومی تنظیم کنید؛ این کار با مشخص کردن نوع فایل و در پی آن الگو با جداکنندهٔ دونقطه : انجام میشود. انواع مختلف فایلهای پشتیبانیشده عبارتند از subtitle، thumbnail، description، annotation (منسوخشده)، infojson، link، pl_thumbnail، pl_description، pl_infojson، chapter، pl_video. مانند -o "%(title)s.%(ext)s" -o "thumbnail:%(title)s/%(title)s.%(ext)s" که تصویر بندانگشتی را در پوشهای همنام با ویدیو قرار میدهد. اگر هر یک از الگوها خالی باشد، آن نوع فایل نوشته نخواهد شد. مانند --write-thumbnail -o "thumbnail:" که تصاویر بندانگشتی را فقط برای فهرستهای پخش مینویسد و نه برای ویدیو.
نکته: به دلیل پسپردازش (مانند ادغام کردن و غیره)، نام فایل خروجی واقعی ممکن است متفاوت باشد. از --print after_move:filepath برای دریافت نام فایل پس از اتمام کامل پسپردازش استفاده کنید.
فیلدهای موجود عبارتند از:
- •
- id (string): شناسهٔ ویدیو
- •
- title (string): عنوان ویدیو
- •
- fulltitle (string): عنوان ویدیو بدون در نظر گرفتن برچسب زمانی زنده و عنوان عمومی
- •
- ext (string): پسوند نام فایل ویدیو
- •
- alt_title (string): عنوان ثانویهٔ ویدیو
- •
- description (string): توضیحات ویدیو
- •
- display_id (string): شناسهٔ جایگزین برای ویدیو
- •
- uploader (string): نام کامل بارگذاریکنندهٔ ویدیو
- •
- uploader_id (string): نام مستعار یا شناسهٔ بارگذاریکنندهٔ ویدیو
- •
- uploader_url (string): نشانی (URL) پروفایل بارگذاریکنندهٔ ویدیو
- •
- license (string): نام مجوزی که ویدیو تحت آن منتشر شده است
- •
- creators (list): سازندگان ویدیو
- •
- creator (string): سازندگان ویدیو؛ جدا شده با کاما
- •
- timestamp (numeric): برچسب زمانی یونیکس (UNIX timestamp) لحظهای که ویدیو در دسترس قرار گرفت
- •
- upload_date (string): تاریخ بارگذاری ویدیو در ساعت هماهنگ جهانی (UTC) به صورت YYYYMMDD
- •
- release_timestamp (numeric): برچسب زمانی یونیکس لحظهای که ویدیو منتشر شد
- •
- release_date (string): تاریخ (YYYYMMDD) انتشار ویدیو در ساعت هماهنگ جهانی (UTC)
- •
- release_year (numeric): سال (YYYY) انتشار ویدیو یا آلبوم
- •
- modified_timestamp (numeric): برچسب زمانی یونیکس لحظهای که ویدیو آخرین بار تغییر یافت
- •
- modified_date (string): تاریخ (YYYYMMDD) آخرین تغییر ویدیو در ساعت هماهنگ جهانی (UTC)
- •
- channel (string): نام کامل کانالی که ویدیو در آن بارگذاری شده است.IP • 2 channel_id (string): شناسه کانال
- •
- channel_url (string): نشانی اینترنتی (URL) کانال
- •
- channel_follower_count (numeric): تعداد دنبالکنندگان کانال
- •
- channel_is_verified (boolean): اینکه آیا کانال در پلتفرم تأیید شده (verified) است یا خیر
- •
- location (string): مکان فیزیکی که ویدیو در آن فیلمبرداری شده است
- •
- duration (numeric): مدتزمان ویدیو به ثانیه
- •
- duration_string (string): مدتزمان ویدیو (HH:mm:ss)
- •
- view_count (numeric): تعداد کاربرانی که ویدیو را در پلتفرم تماشا کردهاند
- •
- concurrent_view_count (numeric): تعداد کاربرانی که در حال حاضر ویدیو را در پلتفرم تماشا میکنند
- •
- like_count (numeric): تعداد امتیازهای مثبت (لایکهای) ویدیو
- •
- dislike_count (numeric): تعداد امتیازهای منفی (دیسلایکهای) ویدیو
- •
- repost_count (numeric): تعداد بازنشرهای ویدیو
- •
- average_rating (numeric): میانگین امتیاز دادهشده توسط کاربران؛ مقیاس مورد استفاده به صفحه وب بستگی دارد
- •
- comment_count (numeric): تعداد دیدگاههای ویدیو (برای برخی استخراجکنندهها، دیدگاهها فقط در پایان بارگیری میشوند و در نتیجه این فیلد قابل استفاده نیست)
- •
- save_count (numeric): تعداد دفعاتی که ویدیو ذخیره یا نشانهگذاری شده است
- •
- age_limit (numeric): محدودیت سنی برای ویدیو (به سال)
- •
- live_status (string): یکی از موارد "not_live"، "is_live"، "is_upcoming"، "was_live"، "post_live" (پخش زنده بوده، اما VOD هنوز پردازش نشده است)
- •
- is_live (boolean): اینکه آیا این ویدیو یک پخش زنده است یا یک ویدیوی با طول ثابت
- •
- was_live (boolean): اینکه آیا این ویدیو در اصل یک پخش زنده بوده است یا خیر
- •
- playable_in_embed (string): اینکه آیا پخش این ویدیو در پخشکنندههای جاسازیشده (embedded) در دیگر سایتها مجاز است یا خیر
- •
- availability (string): وضعیت دسترسی به ویدیو که یکی از مقادیر "private"، "premium_only"، "subscriber_only"، "needs_auth"، "unlisted" یا "public" است
- •
- media_type (string): نوع رسانه طبق دستهبندی سایت، مانند "episode"، "clip"، "trailer"
- •
- start_time (numeric): زمان به ثانیه که پخش باید از آنجا آغاز شود، همانطور که در URL مشخص شده است
- •
- end_time (numeric): زمان به ثانیه که پخش باید در آن پایان یابد، همانطور که در URL مشخص شده است
- •
- extractor (string): نام استخراجکننده
- •
- extractor_key (string): نام کلید استخراجکننده
- •
- epoch (numeric): زمان بر مبنای مبدأ یونیکس (Unix epoch) هنگام تکمیل استخراج اطلاعات
- •
- autonumber (numeric): عددی که با هر بارگیری افزایش مییابد، با شروع از --autonumber-start، تکمیلشده با صفرهای پیشین تا ۵ رقم
- •
- video_autonumber (numeric): عددی که با هر ویدیو افزایش مییابد
- •
- n_entries (numeric): تعداد کل موارد استخراجشده در فهرست پخش
- •
- playlist_id (string): شناسه فهرست پخشی که شامل ویدیو است
- •
- playlist_title (string): نام فهرست پخشی که شامل ویدیو است
- •
- playlist (string): مقدار playlist_title در صورت وجود، وگرنه playlist_id
- •
- playlist_count (numeric): تعداد کل موارد موجود در فهرست پخش. اگر کل فهرست پخش استخراج نشده باشد، ممکن است ناشناخته باشد
- •
- playlist_index (numeric): نمایه (شاخص) ویدیو در فهرست پخش، تکمیلشده با صفرهای پیشین بر اساس نمایه نهایی
- •
- playlist_autonumber (numeric): موقعیت ویدیو در صف بارگیری فهرست پخش، تکمیلشده با صفرهای پیشین بر اساس طول کل فهرست پخش
- •
- playlist_uploader (string): نام کامل بارگذاریکننده فهرست پخش
- •
- playlist_uploader_id (string): نام مستعار یا شناسه بارگذاریکننده فهرست پخش
- •
- playlist_channel (string): نام نمایشی کانالی که فهرست پخش را بارگذاری کرده است
- •
- playlist_channel_id (string): شناسه کانالی که فهرست پخش را بارگذاری کرده است
- •
- playlist_webpage_url (string): نشانی اینترنتی (URL) صفحه وب فهرست پخش
- •
- webpage_url (string): نشانی اینترنتی (URL) صفحه وب ویدیو که اگر به yt-dlp داده شود، باید همان نتیجه را دوباره حاصل کند
- •
- webpage_url_basename (string): نام پایه (basename) نشانی اینترنتی صفحه وب
- •
- webpage_url_domain (string): دامنه (domain) نشانی اینترنتی صفحه وب
- •
- original_url (string): نشانی اینترنتی (URL) ارائهشده توسط کاربر (یا همان webpage_url برای موارد فهرست پخش)
- •
- categories (list): فهرستی از دستههایی که ویدیو به آنها تعلق دارد
- •
- tags (list): فهرستی از برچسبهای اختصاصیافته به ویدیو
- •
- cast (list): فهرستی از اعضای گروه بازیگران یا عوامل
تمام فیلدهای بخش Filtering Formats نیز قابل استفاده هستند
در دسترس برای ویدیویی که به یک فصل یا بخش منطقی تعلق دارد:
- •
- chapter (string): نام یا عنوان فصلی که ویدیو به آن تعلق دارد
- •
- chapter_number (numeric): شماره فصلی که ویدیو به آن تعلق دارد
- •
- chapter_id (string): شناسه فصلی که ویدیو به آن تعلق دارد
در دسترس برای ویدیویی که یک قسمت از یک سریال یا برنامه است:
- •
- series (string): عنوان سریال یا برنامهای که قسمت ویدیو به آن تعلق دارد
- •
- series_id (string): شناسه سریال یا برنامهای که قسمت ویدیو به آن تعلق دارد
- •
- season (string): عنوان فصلی که قسمت ویدیو به آن تعلق دارد
- •
- season_number (numeric): شماره فصلی که قسمت ویدیو به آن تعلق دارد
- •
- season_id (string): شناسه فصلی که قسمت ویدیو به آن تعلق دارد
- •
- episode (string): عنوان قسمت ویدیو
- •
- episode_number (numeric): شماره قسمت ویدیو در یک فصل
- •
- episode_id (string): شناسه قسمت ویدیو
در دسترس برای رسانهای که یک قطعه یا بخشی از یک آلبوم موسیقی است:
- •
- track (string): عنوان قطعه
- •
- track_number (numeric): شماره قطعه در یک آلبوم یا دیسک
- •
- track_id (string): شناسه قطعه.IP • 2 artists (فهرست): هنرمند(های) قطعه
- •
- artist (رشته): هنرمند(های) قطعه؛ جداشده با ویرگول
- •
- genres (فهرست): سبک(های) قطعه
- •
- genre (رشته): سبک(های) قطعه؛ جداشده با ویرگول
- •
- composers (فهرست): آهنگساز(های) اثر
- •
- composer (رشته): آهنگساز(های) اثر؛ جداشده با ویرگول
- •
- album (رشته): عنوان آلبومی که قطعه به آن تعلق دارد
- •
- album_type (رشته): نوع آلبوم
- •
- album_artists (فهرست): تمامی هنرمندانی که در آلبوم حضور دارند
- •
- album_artist (رشته): تمامی هنرمندانی که در آلبوم حضور دارند؛ جداشده با ویرگول
- •
- disc_number (عددی): شماره دیسک یا سایر رسانههای فیزیکی که قطعه به آن تعلق دارد
تنها هنگام استفاده از --download-sections و برای پیشوند chapter: هنگام استفاده از --split-chapters برای ویدیوهای دارای فصلهای داخلی در دسترس است:
- •
- section_title (رشته): عنوان فصل
- •
- section_number (عددی): شماره فصل درون فایل
- •
- section_start (عددی): زمان آغاز فصل به ثانیه
- •
- section_end (عددی): زمان پایان فصل به ثانیه
تنها هنگام استفاده در --print در دسترس است:
- •
- urls (رشته): نشانیهای وب (URL) همه فرمتهای درخواستشده، هر کدام در یک خط
- •
- filename (رشته): نام فایل ویدیو. توجه داشته باشید که نام واقعی فایل ممکن است متفاوت باشد
- •
- formats_table (جدول): جدول فرمتهای ویدیو همانگونه که توسط --list-formats چاپ میشود
- •
- thumbnails_table (جدول): جدول فرمتهای بندانگشتی همانگونه که توسط --list-thumbnails چاپ میشود
- •
- subtitles_table (جدول): جدول فرمتهای زیرنویس همانگونه که توسط --list-subs چاپ میشود
- •
- automatic_captions_table (جدول): جدول فرمتهای زیرنویس خودکار همانگونه که توسط --list-subs چاپ میشود
تنها پس از دانلود ویدیو (post_process/after_move) در دسترس است:
- •
- filepath: مسیر واقعی فایل ویدیوی دانلودشده
تنها در --sponsorblock-chapter-title در دسترس است:
- •
- start_time (عددی): زمان آغاز فصل به ثانیه
- •
- end_time (عددی): زمان پایان فصل به ثانیه
- •
- categories (فهرست): دستههای SponsorBlock (https://wiki.sponsor.ajay.app/w/Types#Category) که فصل به آنها تعلق دارد
- •
- category (رشته): کوچکترین دسته SponsorBlock که فصل به آن تعلق دارد
- •
- category_names (فهرست): نامهای کاربرپسند دستهها
- •
- name (رشته): نام کاربرپسند کوچکترین دسته
- •
- type (رشته): نوع اقدام SponsorBlock (https://wiki.sponsor.ajay.app/w/Types#Action_Type) برای فصل
هر یک از توالیهای یادشده هنگام استفاده در یک الگوی خروجی، با مقدار واقعی متناظر با نام توالی جایگزین خواهند شد. برای نمونه، برای -o %(title)s-%(id)s.%(ext)s و یک ویدیوی mp4 با عنوان yt-dlp test video و شناسه YE7VzlLtp-4، این مورد منجر به ایجاد فایل yt-dlp test video-YE7VzlLtp-4.mp4 در دایرکتوری جاری خواهد شد.
نکته: وجود برخی از توالیها تضمینشده نیست، زیرا به فرادادههای بهدستآمده توسط یک استخراجکننده خاص وابسته هستند. چنین توالیهایی با مقدار جاینگهدار مشخصشده با --output-na-placeholder (بهطور پیشفرض NA) جایگزین خواهند شد.
راهنمایی: خروجی -j را بررسی کنید تا مشخص شود کدام فیلدها برای آن URL خاص در دسترس هستند
برای توالیهای عددی، میتوانید از قالببندیهای مرتبط با اعداد (https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting) استفاده کنید؛ برای نمونه، %(view_count)05d منجر به رشتهای با تعداد بازدید پرشده با صفر تا ۵ نویسه میشود، مانند 00042.
الگوهای خروجی همچنین میتوانند شامل مسیر سلسلهمراتبی دلخواه باشند، مانند -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" که منجر به دانلود هر ویدیو در دایرکتوری متناظر با این الگوی مسیر خواهد شد. هرگونه دایرکتوری ناموجود بهطور خودکار برای شما ایجاد خواهد شد.
برای استفاده از نویسه درصد لفظی در یک الگوی خروجی، از %% استفاده کنید. برای ارسال خروجی به stdout از -o - استفاده کنید.
الگوی پیشفرض فعلی %(title)s [%(id)s].%(ext)s است.
در برخی موارد، ممکن است نویسههای خاصی مانند 中، فاصلهها، یا & را نخواهید، مانند زمانی که نام فایل دانلودشده را به یک سیستم Windows یا نام فایل را از طریق کانالی ناامن برای دادههای ۸ بیتی منتقل میکنید. در این موارد، پرچم --restrict-filenames را اضافه کنید تا عنوان کوتاهتری دریافت کنید..SS "مثالهای الگوی خروجی (Output template examples)"
-
$ yt-dlp --print filename -o "test video.%(ext)s" ptd1NN40vMw test video.webm # نام صریح با پسوند صحیح $ yt-dlp --print filename -o "%(title)s.%(ext)s" ptd1NN40vMw To'y!🤯😂🤦🏻♂️.webm # انواع نویسههای نامتعارف $ yt-dlp --print filename -o "%(title)s.%(ext)s" ptd1NN40vMw --restrict-filenames To_y.webm # نام فایل محدودشده # بارگیری ویدیوهای فهرستپخش یوتیوب در پوشهای جداگانه بر پایه ترتیب ویدیو در فهرستپخش $ yt-dlp -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re" # بارگیری ویدیوهای فهرستپخش یوتیوب در پوشههای جداگانه بر اساس سال بارگذاری آنها $ yt-dlp -o "%(upload_date>%Y)s/%(title)s.%(ext)s" "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re" # افزودن نمایه فهرستپخش با جداکننده " - " به عنوان پیشوند، تنها در صورت موجود بودن $ yt-dlp -o "%(playlist_index&{} - |)s%(title)s.%(ext)s" YE7VzlLtp-4 "https://www.youtube.com/user/TheLinuxFoundation/playlists" # بارگیری تمام فهرستهای پخش کانال/کاربر یوتیوب با نگهداری هر فهرستپخش در پوشهای جداگانه: $ yt-dlp -o "%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" "https://www.youtube.com/user/TheLinuxFoundation/playlists" # بارگیری دوره Udemy با نگهداری هر فصل در پوشهای جداگانه زیر پوشه MyVideos در دایرکتوری خانگی شما $ yt-dlp -u user -p password -P "~/MyVideos" -o "%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s" "https://www.udemy.com/java-tutorial" # بارگیری کل فصل یک سریال با نگهداری هر سریال و هر فصل در پوشهای جداگانه زیر C:/MyVideos $ yt-dlp -P "C:/MyVideos" -o "%(series)s/%(season_number)s - %(season)s/%(episode_number)s - %(episode)s.%(ext)s" "https://videomore.ru/kino_v_detalayah/5_sezon/367617" # بارگیری ویدیو به صورت "C:\MyVideos\uploader\title.ext"، زیرنویسها به صورت "C:\MyVideos\subs\uploader\title.ext" # و قرار دادن تمام فایلهای موقت در "C:\MyVideos\tmp" $ yt-dlp -P "C:/MyVideos" -P "temp:tmp" -P "subtitle:subs" -o "%(uploader)s/%(title)s.%(ext)s" YE7VzlLtp-4 --write-subs # بارگیری ویدیو به صورت "C:\MyVideos\uploader\title.ext" و زیرنویسها به صورت "C:\MyVideos\uploader\subs\title.ext" $ yt-dlp -P "C:/MyVideos" -o "%(uploader)s/%(title)s.%(ext)s" -o "subtitle:%(uploader)s/subs/%(title)s.%(ext)s" YE7VzlLtp-4 --write-subs # ارسال جریانی ویدیوی در حال بارگیری به خروجی استاندارد (stdout) $ yt-dlp -o - YE7VzlLtp-4
انتخاب قالب (FORMAT SELECTION)
بهطور پیشفرض، اگر هیچ گزینهای را تعیین نکنید، yt-dlp تلاش میکند بهترین کیفیت موجود را بارگیری کند. این رفتار معمولاً معادل استفاده از -f bestvideo*+bestaudio/best است. با این حال، اگر چند جریانی صوتی فعال شده باشد (--audio-multistreams)، قالب پیشفرض به -f bestvideo+bestaudio/best تغییر مییابد. به همین ترتیب، اگر ffmpeg در دسترس نباشد، یا اگر از yt-dlp برای ارسال جریان به stdout (-o -) استفاده کنید، مقدار پیشفرض به -f best/bestvideo+bestaudio تغییر میکند.
هشدار منسوخشدن: نگارشهای اخیر yt-dlp میتوانند با استفاده از ffmpeg چندین قالب را همزمان به stdout پخش جریانی کنند. بنابراین، در نگارشهای آینده، مقدار پیشفرض برای این حالت همانند بارگیریهای معمولی روی -f bv*+ba/b تنظیم خواهد شد. اگر میخواهید تنظیم -f b/bv+ba را حفظ کنید، پیشنهاد میشود آن را به صراحت در گزینههای پیکربندی مشخص نمایید.
نحو کلی برای انتخاب قالب، -f FORMAT (یا --format FORMAT) است که در آن FORMAT یک عبارت انتخابگر است؛ یعنی عبارتی که قالب یا قالبهایی را که مایل به بارگیری آنها هستید توصیف میکند.
سادهترین حالت، درخواست یک قالب خاص است؛ برای نمونه با -f 22 میتوانید قالبی را بارگیری کنید که کد قالب آن برابر با ۲۲ است. میتوانید با استفاده از --list-formats یا -F فهرست کدهای قالب موجود برای یک ویدیوی مشخص را دریافت کنید. توجه داشته باشید که این کدهای قالب وابسته به استخراجکننده هستند.
همچنین میتوانید از یک پسوند فایل استفاده کنید (در حال حاضر از 3gp، aac، flv، m4a، mp3، mp4، ogg، wav و webm پشتیبانی میشود) تا بهترین کیفیت قالبی را بارگیری کنید که با پسوند مشخصشده به صورت یک تکفایل ارائه میشود؛ برای نمونه، -f webm بهترین کیفیت قالبی را که با پسوند webm به صورت یک فایل منفرد ارائه شده است، بارگیری خواهد کرد.
میتوانید از -f - برای ارائه تعاملی انتخابگر قالب برای هر ویدیو استفاده کنید.
همچنین میتوانید از نامهای ویژه برای انتخاب قالبهای خاص در شرایط مرزی استفاده کنید:
- •
- all: انتخاب تمام قالبها به صورت جداگانه
- •
- mergeall: انتخاب و ادغام تمام قالبها (باید با --audio-multistreams، --video-multistreams یا هر دو استفاده شود)
- •
- b*، best*: انتخاب قالبی با بهترین کیفیت که حاوی ویدیو یا صوت یا هر دو باشد (یعنی vcodec!=none or acodec!=none)
- •
- b، best: انتخاب قالبی با بهترین کیفیت که شامل هر دو جریان ویدیویی و صوتی باشد. معادل best*[vcodec!=none][acodec!=none]
- •
- bv، bestvideo: انتخاب قالبی با بهترین کیفیت به صورت فقط ویدیو. معادل best*[acodec=none]
- •
- bv*، bestvideo*: انتخاب قالبی با بهترین کیفیت که شامل ویدیو باشد. ممکن است شامل صوت نیز باشد. معادل best*[vcodec!=none]
- •
- ba، bestaudio: انتخاب قالبی با بهترین کیفیت به صورت فقط صوت. معادل best*[vcodec=none]
- •
- ba*، bestaudio*: انتخاب قالبی با بهترین کیفیت که شامل صوت باشد. ممکن است شامل ویدیو نیز باشد. معادل best*[acodec!=none] (استفاده نکنید! (https://github.com/yt-dlp/yt-dlp/issues/979#issuecomment-919629354))
- •
- w*، worst*: انتخاب کمکیفیتترین قالبی که شامل ویدیو یا صوت باشد
- •
- w، worst: انتخاب کمکیفیتترین قالبی که هم شامل ویدیو و هم صوت باشد. معادل worst*[vcodec!=none][acodec!=none]
- •
- wv، worstvideo: انتخاب کمکیفیتترین قالبِ فقط ویدیو. معادل worst*[acodec=none]
- •
- wv*، worstvideo*: انتخاب کمکیفیتترین قالبی که شامل ویدیو باشد. ممکن است شامل صوت نیز باشد. معادل worst*[vcodec!=none]
- •
- wa، worstaudio: انتخاب کمکیفیتترین قالبِ فقط صوت. معادل worst*[vcodec=none]
- •
- wa*، worstaudio*: انتخاب کمکیفیتترین قالبی که شامل صوت باشد. ممکن است شامل ویدیو نیز باشد. معادل worst*[acodec!=none]
برای نمونه، برای بارگیری کمکیفیتترین قالبی که فقط ویدیو باشد میتوانید از -f worstvideo استفاده کنید. با این وجود، توصیه میشود از worst و گزینههای مرتبط با آن استفاده نکنید. وقتی انتخابگر قالب شما worst باشد، قالبی انتخاب میشود که از هر جهت بدترین کیفیت را دارد. در بیشتر مواقع، چیزی که در واقع به دنبال آن هستید ویدیویی با کمترین حجم فایل است. بنابراین عموماً بهتر است به جای -f worst، از -S +size یا با دقت بیشتر، از -S +size,+br,+res,+fps استفاده کنید. برای جزئیات بیشتر بخش «مرتبسازی قالبها» (Sorting Formats) را ببینید.
میتوانید n-اُمین قالب برتر از یک نوع را با استفاده از best<type>.<n> انتخاب کنید. برای نمونه، best.2 دومین قالب برتر ترکیبی را انتخاب خواهد کرد. به همین ترتیب، bv*.3 سومین قالب برتری را که شامل یک جریان ویدیویی باشد انتخاب میکند.
اگر میخواهید چندین ویدیو بارگیری کنید و قالبهای موجود آنها یکسان نیستند، میتوانید اولویت مورد نظر را با استفاده از ممیز (اسلش) مشخص کنید. توجه داشته باشید که اولویت با قالبهای سمت چپ است؛ برای نمونه -f 22/17/18 در صورت موجود بودن قالب ۲۲، آن را بارگیری میکند؛ در غیر این صورت اگر قالب ۱۷ موجود باشد آن را بارگیری میکند؛ در غیر این صورت اگر قالب ۱۸ موجود باشد آن را بارگیری خواهد کرد؛ و در غیر این صورت اعلام میکند که هیچ قالب مناسبی برای بارگیری در دسترس نیست.
اگر میخواهید چندین قالب از یک ویدیو را بارگیری کنید، از کاما به عنوان جداکننده استفاده نمایید؛ برای نمونه -f 22,17,18 هر سه قالب را (البته در صورت موجود بودن) بارگیری خواهد کرد. یا نمونهای پیچیدهتر که با قابلیت اولویتبندی ترکیب شده است: -f 136/137/mp4/bestvideo,140/m4a/bestaudio.
میتوانید با استفاده از -f <format1>+<format2>+... جریانهای ویدیویی و صوتی چندین قالب را در یک فایل ادغام کنید (نیازمند نصب بودن ffmpeg است)؛ برای نمونه، -f bestvideo+bestaudio باکیفیتترین قالبِ فقط ویدیو و باکیفیتترین قالبِ فقط صوت را بارگیری کرده و آنها را با استفاده از ffmpeg با یکدیگر ادغام (mux) میکند..PP هشدار منسوخشدگی: از آنجا که رفتار شرحدادهشده در ادامه پیچیده و خلاف شهود است، این رفتار حذف خواهد شد و در آینده قابلیت multistreams بهطور پیشفرض فعال میشود. در عوض، یک عملگر جدید برای محدود کردن قالبها به یک صوت/تصویر تکی اضافه خواهد شد.
مگر اینکه از --video-multistreams استفاده شود، همهٔ قالبهای دارای جریان ویدیویی بهجز اولین مورد نادیده گرفته میشوند. مشابهاً، مگر اینکه از --audio-multistreams استفاده شود، همهٔ قالبهای دارای جریان صوتی بهجز مورد اول نادیده گرفته میشوند. برای نمونه: -f bestvideo+best+bestaudio --video-multistreams --audio-multistreams هر ۳ قالب ارائهشده را بارگیری و ادغام خواهد کرد. فایل خروجی دارای ۲ جریان ویدیویی و ۲ جریان صوتی خواهد بود. اما -f bestvideo+best+bestaudio --no-video-multistreams فقط bestvideo و bestaudio را بارگیری و ادغام میکند. قالب best نادیده گرفته میشود زیرا قالب دیگری که حاوی جریان ویدیویی است (bestvideo) از پیش انتخاب شده است. بنابراین ترتیب قالبها حائز اهمیت است. دستور -f best+bestaudio --no-audio-multistreams تنها best را بارگیری میکند، در حالی که -f bestaudio+best --no-audio-multistreams از best چشمپوشی کرده و فقط bestaudio را بارگیری خواهد کرد.
فیلتر کردن قالبها (Filtering Formats)
شما همچنین میتوانید قالبهای ویدیو را با قرار دادن یک شرط درون کروشهها فیلتر کنید، مانند -f "best[height=720]" (یا -f "[filesize>10M]" چرا که فیلترهای بدون انتخابگر به عنوان best تفسیر میشوند).
فیلدهای فرادادهٔ عددی زیر میتوانند با مقایسههای <، <=، >، >=، = (برابر) و != (نابرابر) استفاده شوند:
- •
- filesize: تعداد بایتها، اگر از پیش مشخص باشد
- •
- filesize_approx: تخمینی از تعداد بایتها
- •
- width: پهنای ویدیو، در صورت مشخص بودن
- •
- height: ارتفاع ویدیو، در صورت مشخص بودن
- •
- aspect_ratio: نسبت ابعاد تصویر ویدیو، در صورت مشخص بودن
- •
- tbr: میانگین بیتریت صوت و تصویر بر حسب kbps
- •
- abr: میانگین بیتریت صوت بر حسب kbps
- •
- vbr: میانگین بیتریت ویدیو بر حسب kbps
- •
- asr: نرخ نمونهبرداری صوت بر حسب هرتز
- •
- fps: نرخ فریم
- •
- audio_channels: تعداد کانالهای صوتی
- •
- stretched_ratio: نسبت width:height پیکسلهای ویدیو، در صورتی که مربعی نباشند
همچنین فیلتر کردن برای مقایسههای = (برابر)، ^= (شروع با)، $= (پایان با)، *= (شامل)، ~= (مطابق با عبارت باقاعده) و فیلدهای فرادادهٔ رشتهای زیر کار میکند:
- •
- url: نشانی اینترنتی (URL) ویدیو
- •
- ext: پسوند فایل
- •
- acodec: نام کدک صوتی مورد استفاده
- •
- vcodec: نام کدک ویدیویی مورد استفاده
- •
- container: نام قالب ظرف (container)
- •
- protocol: پروتکلی که برای بارگیری واقعی استفاده خواهد شد، با حروف کوچک (http، https، rtmp، rtmpe، f4m، ism، http_dash_segments، m3u8 یا m3u8_native)
- •
- language: کد زبان
- •
- dynamic_range: دامنهٔ پویای (dynamic range) ویدیو
- •
- format_id: توصیف کوتاهی از قالب
- •
- format: توصیف خوانا برای انسان از قالب
- •
- format_note: اطلاعات اضافی دربارهٔ قالب
- •
- resolution: توصیف متنی پهنا و ارتفاع
هر مقایسهٔ رشتهای میتواند با نقیض ! پیشوندگذاری شود تا مقایسهٔ معکوس تولید گردد، برای نمونه !*= (شامل نمیشود). طرف مقایسه در یک مقایسهٔ رشتهای در صورتی که شامل فاصله یا نویسههای خاصی بهجز ._- باشد، باید درون علامتهای نقلقول تکی یا دوتایی قرار گیرد.
نکته: وجود هیچیک از فیلدهای فرادادهٔ یادشده تضمین نمیشود، زیرا این امر صرفاً به فرادادههای بهدستآمده توسط استخراجکنندهٔ مربوطه، یعنی فرادادههای ارائهشده از سوی وبگاه بستگی دارد. هر فیلد دیگری که توسط استخراجکننده ارائه شود نیز میتواند برای فیلتر کردن مورد استفاده قرار گیرد.
قالبهایی که مقدار آنها مشخص نیست کنار گذاشته میشوند مگر اینکه یک علامت سؤال (?) بعد از عملگر قرار دهید. میتوانید فیلترهای قالب را ترکیب کنید، بنابراین -f "bv[height<=?720][tbr>500]" ویدیوهای تا کیفیت 720p (یا ویدیوهایی که ارتفاع آنها نامشخص است) را با بیتریت بالاتر از 500 kbps انتخاب میکند. همچنین میتوانید از فیلترها همراه با all برای بارگیری تمام قالبهایی که شرط فیلتر را برآورده میکنند استفاده کنید، برای نمونه -f "all[vcodec=none]" تمام قالبهای فقطصوتی را انتخاب میکند.
انتخابگرهای قالب را میتوان با پرانتز نیز گروهبندی کرد؛ مانند -f "(mp4,webm)[height<480]" که بهترین قالبهای از پیش ادغامشدهٔ mp4 و webm را با ارتفاع کمتر از 480 بارگیری خواهد کرد..SS مرتبسازی قالبها
میتوانید با استفاده از -S (--format-sort)، معیارهای در نظر گرفته شدن به عنوان best را تغییر دهید. ساختار کلی برای این کار --format-sort field1,field2... است.
فیلدهای موجود عبارتند از:
- •
- hasvid: اولویت را به قالبهایی میدهد که جریان ویدیویی دارند
- •
- hasaud: اولویت را به قالبهایی میدهد که جریان صوتی دارند
- •
- ie_pref: اولویت قالب
- •
- lang: اولویت زبان بر اساس آنچه توسط استخراجکننده تعیین شده است (به عنوان مثال، زبان اصلی نسبت به توضیحات صوتی ترجیح داده میشود)
- •
- quality: کیفیت قالب
- •
- source: اولویت منبع
- •
- proto: پروتکل استفادهشده برای دانلود (https/ftps > http/ftp > m3u8_native/m3u8 > http_dash_segments> websocket_frag > f4f/f4m)
- •
- vcodec: کدک ویدیو (av01 > vp9.2 > vp9 > h265 > h264 > vp8 > h263 > theora > سایر)
- •
- acodec: کدک صوتی (flac/alac > wav/aiff > opus > vorbis > aac > mp4a > mp3 > ac4 > eac3 > ac3 > dts > سایر)
- •
- codec: معادل vcodec,acodec
- •
- vext: پسوند ویدیو (mp4 > mov > webm > flv > سایر). در صورت استفاده از --prefer-free-formats، پسوند webm ترجیح داده میشود.
- •
- aext: پسوند صوتی (m4a > aac > mp3 > ogg > opus > webm > سایر). در صورت استفاده از --prefer-free-formats، ترتیب به این صورت تغییر میکند: ogg > opus > webm > mp3 > m4a > aac
- •
- ext: معادل vext,aext
- •
- filesize: حجم دقیق فایل، در صورتی که از قبل مشخص باشد
- •
- fs_approx: حجم تقریبی فایل
- •
- size: حجم دقیق فایل در صورت در دسترس بودن، در غیر این صورت حجم تقریبی فایل
- •
- height: ارتفاع ویدیو
- •
- width: عرض ویدیو
- •
- res: تفکیکپذیری ویدیو، محاسبهشده بر اساس کوچکترین بُعد.
- •
- fps: نرخ فریم ویدیو
- •
- hdr: محدوده دینامیکی ویدیو (DV > HDR12 > HDR10+ > HDR10 > HLG > SDR)
- •
- channels: تعداد کانالهای صوتی
- •
- tbr: نرخ بیت میانگین کل بر حسب kbps
- •
- vbr: نرخ بیت میانگین ویدیو بر حسب kbps
- •
- abr: نرخ بیت میانگین صدا بر حسب kbps
- •
- br: نرخ بیت میانگین بر حسب kbps، tbr/vbr/abr
- •
- asr: نرخ نمونهبرداری صوتی بر حسب Hz
هشدار منسوخشدگی: بسیاری از این فیلدها نامهای مستعاری دارند (که در حال حاضر مستند نشدهاند) که ممکن است در نگارشهای بعدی حذف شوند. توصیه میشود تنها از نام فیلدهای مستندشده استفاده کنید.
همهٔ فیلدها، مگر اینکه خلاف آن مشخص شده باشد، به ترتیب نزولی مرتب میشوند. برای معکوس کردن این حالت، فیلد را با یک پیشوند + همراه کنید. به عنوان مثال، +res قالبی با کمترین تفکیکپذیری را ترجیح میدهد. علاوه بر این، میتوانید مقدار ترجیحی فیلدها را با استفاده از : به عنوان پسوند اضافه کنید. به عنوان مثال، res:720 ویدیوهای با وضوح بالاتر اما نه بیشتر از 720p را ترجیح میدهد، و در صورتی که ویدیویی با وضوح کمتر از 720p وجود نداشته باشد، کوچکترین ویدیو را انتخاب میکند. برای codec و ext، میتوانید دو مقدار ترجیحی مشخص کنید؛ اولی برای ویدیو و دومی برای صدا. به عنوان مثال، +codec:avc:m4a (معادل +vcodec:avc,+acodec:m4a) اولویت کدک ویدیو را روی h264 > h265 > vp9 > vp9.2 > av01 > vp8 > h263 > theora و اولویت کدک صوتی را روی mp4a > aac > vorbis > opus > mp3 > ac3 > dts تنظیم میکند. همچنین میتوانید با استفاده از ~ به عنوان جداکننده، کاری کنید که مرتبسازی نزدیکترین مقادیر به مقدار دادهشده را ترجیح دهد. به عنوان مثال، filesize~1G قالبی را ترجیح میدهد که اندازهٔ فایل آن نزدیکترین به 1 GiB باشد.
فیلدهای hasvid و ie_pref همیشه و بدون در نظر گرفتن ترتیب مشخصشده توسط کاربر، بالاترین اولویت را در مرتبسازی دارند. این رفتار را میتوان با استفاده از --format-sort-force تغییر داد. به غیر از این موارد، ترتیب پیشفرض استفادهشده عبارت است از: lang,quality,res,fps,hdr:12,vcodec,channels,acodec,size,br,asr,proto,ext,hasaud,source,id. استخراجکنندهها ممکن است این ترتیب پیشفرض را بازنویسی کنند، اما نمیتوانند ترتیب ارائهشده توسط کاربر را نادیده بگیرند.
توجه داشته باشید که مقدار پیشفرض برای hdr برابر با hdr:12 است؛ یعنی Dolby Vision ترجیح داده نمیشود. این انتخاب به این دلیل انجام شده که قالبهای DV هنوز به طور کامل با بیشتر دستگاهها سازگار نیستند. این مورد ممکن است در آینده تغییر کند.
اگر انتخابگر قالب شما worst باشد، پس از مرتبسازی، آخرین مورد انتخاب میشود. این به این معنی است که قالبی انتخاب خواهد شد که از تمام جهات بدترین است. در اکثر مواقع، چیزی که واقعاً میخواهید ویدیویی با کمترین اندازهٔ فایل است. بنابراین عموماً بهتر است از دستور زیر استفاده کنید: -f best -S +size,+br,+res,+fps.
اگر از گزینهٔ -S/--format-sort چندین بار استفاده کنید، هر آرگومان مرتبسازی بعدی به ابتدای آرگومان قبلی اضافه میشود، و در صورت وجود هر فیلد تکراری، تنها ورودی با بالاترین اولویت حفظ خواهد شد. به عنوان مثال، -S proto -S res معادل -S res,proto است، و -S res:720,fps -S vcodec,res:1080 معادل -S vcodec,res:1080,fps است. میتوانید از --format-sort-reset برای نادیده گرفتن تمام آرگومانهای ارائهشدهٔ قبلی -S/--format-sort و بازنشانی به ترتیب پیشفرض استفاده کنید.
نکته: میتوانید از -v -F برای مشاهدهٔ چگونگی مرتبسازی قالبها (از بدترین به بهترین) استفاده کنید..SS "مثالهای انتخاب فرمت (Format Selection examples)"
-
# بارگیری و ادغام بهترین فرمت فقط-ویدیو با بهترین فرمت فقط-صوت، # یا بارگیری بهترین فرمت ترکیبی در صورت عدم دسترسی به فرمت فقط-ویدیو $ yt-dlp -f "bv+ba/b" # بارگیری بهترین فرمت حاوی ویدیو، # و در صورتی که فاقد جریان صوتی باشد، ادغام آن با بهترین فرمت فقط-صوت $ yt-dlp -f "bv*+ba/b" # مشابه مورد بالا $ yt-dlp # بارگیری بهترین فرمت فقط-ویدیو و بهترین فرمت فقط-صوت بدون ادغام آنها # برای این حالت باید از یک الگوی خروجی استفاده شود چرا که # بهطور پیشفرض، bestvideo و bestaudio نام فایل یکسانی خواهند داشت. $ yt-dlp -f "bv,ba" -o "%(title)s.f%(format_id)s.%(ext)s" # بارگیری و ادغام بهترین فرمت دارای جریان ویدیو، # و تمامی فرمتهای فقط-صوت در یک فایل $ yt-dlp -f "bv*+mergeall[vcodec=none]" --audio-multistreams # بارگیری و ادغام بهترین فرمت دارای جریان ویدیو، # و ۲ تا از بهترین فرمتهای فقط-صوت در یک فایل $ yt-dlp -f "bv*+ba+ba.2" --audio-multistreams # مثالهای زیر روش قدیمی انتخاب فرمت (بدون -S) # و نحوه استفاده از -S برای رسیدن به نتیجهای مشابه اما (عموماً) بهتر را نشان میدهند # بارگیری بدترین ویدیوی موجود (روش قدیمی) $ yt-dlp -f "wv*+wa/w" # بارگیری بهترین ویدیوی موجود اما با کمترین تفکیکپذیری (رزولوشن) $ yt-dlp -S "+res" # بارگیری کمحجمترین ویدیوی موجود $ yt-dlp -S "+size,+br" # بارگیری بهترین ویدیوی mp4 موجود، یا بهترین ویدیو در صورت نبود mp4 $ yt-dlp -f "bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b" # بارگیری بهترین ویدیو با بهترین پسوند # (برای ویدیو، mp4 > mov > webm > flv. برای صوت، m4a > aac > mp3 ...) $ yt-dlp -S "ext" # بارگیری بهترین ویدیوی موجود اما نه بالاتر از 480p، # یا بدترین ویدیو در صورتی که هیچ ویدیویی زیر 480p نباشد $ yt-dlp -f "bv*[height<=480]+ba/b[height<=480] / wv*+ba/w" # بارگیری بهترین ویدیوی موجود با بیشترین ارتفاع اما نه بالاتر از 480p، # یا بهترین ویدیو با کمترین تفکیکپذیری در صورت نبود ویدیو زیر 480p $ yt-dlp -S "height:480" # بارگیری بهترین ویدیوی موجود با بالاترین تفکیکپذیری اما نه بالاتر از 480p، # یا بهترین ویدیو با کمترین تفکیکپذیری در صورت نبود ویدیوی زیر 480p # تفکیکپذیری بر اساس کوچکترین بُعد سنجیده میشود؛ # بنابراین برای ویدیوهای عمودی نیز بهدرستی کار میکند $ yt-dlp -S "res:480" # بارگیری بهترین ویدیو (دارای صدا) اما نه بزرگتر از 50 MB، # یا بدترین ویدیو (دارای صدا) در صورتی که ویدیویی زیر 50 MB نباشد $ yt-dlp -f "b[filesize<50M] / w" # بارگیری حجیمترین ویدیو (دارای صدا) اما نه بزرگتر از 50 MB، # یا کمحجمترین ویدیو (دارای صدا) در صورتی که ویدیویی زیر 50 MB نباشد $ yt-dlp -f "b" -S "filesize:50M" # بارگیری بهترین ویدیو (دارای صدا) با اندازهای که به 50 MB نزدیکترین باشد $ yt-dlp -f "b" -S "filesize~50M" # بارگیری بهترین ویدیوی موجود از طریق پیوند مستقیم بر بستر پروتکل HTTP/HTTPS، # یا بهترین ویدیوی موجود از طریق هر پروتکلی اگر چنین ویدیویی موجود نباشد $ yt-dlp -f "(bv*+ba/b)[protocol^=http][protocol!*=dash] / (bv*+ba/b)" # بارگیری بهترین ویدیوی موجود از طریق بهترین پروتکل # (https/ftps > http/ftp > m3u8_native > m3u8 > http_dash_segments ...) $ yt-dlp -S "proto" # بارگیری بهترین ویدیو با یکی از کُدکهای h264 یا h265، # یا بهترین ویدیو اگر چنین ویدیویی موجود نباشد $ yt-dlp -f "(bv*[vcodec~='^((he|a)vc|h26[45])']+ba) / (bv*+ba/b)" # بارگیری بهترین ویدیو با بهترین کُدکی که بهتر از h264 نباشد، # یا بهترین ویدیو با بدترین کُدک اگر چنین ویدیویی موجود نباشد $ yt-dlp -S "codec:h264" # بارگیری بهترین ویدیو با بدترین کُدکی که بدتر از h264 نباشد، # یا بهترین ویدیو با بهترین کُدک اگر چنین ویدیویی موجود نباشد $ yt-dlp -S "+codec:h264" # مثالهای پیچیدهتر # بارگیری بهترین ویدیو نه بالاتر از 720p با اولویت نرخ فریم بیشتر از ۳۰، # یا بدترین ویدیو (همچنان با اولویت نرخ فریم بیشتر از ۳۰) اگر چنین ویدیویی نباشد $ yt-dlp -f "((bv*[fps>30]/bv*)[height<=720]/(wv*[fps>30]/wv*)) + ba / (b[fps>30]/b)[height<=720]/(w[fps>30]/w)" # بارگیری ویدیو با بالاترین تفکیکپذیری نه بالاتر از 720p، # یا ویدیو با کمترین تفکیکپذیری موجود در صورت عدم وجود چنین ویدیویی، # با اولویت نرخ فریم بالاتر برای فرمتهایی با تفکیکپذیری یکسان $ yt-dlp -S "res:720,fps" # بارگیری ویدیو با کمترین تفکیکپذیری نه بدتر از 480p، # یا ویدیو با بالاترین تفکیکپذیری موجود در صورت عدم وجود چنین ویدیویی، # با اولویت کُدک بهتر و سپس نرخ بیت کل بالاتر برای تفکیکپذیری یکسان $ yt-dlp -S "+res:480,codec,br"
متادیتای بهدستآمده توسط استخراجکنندهها را میتوان با استفاده از --parse-metadata و --replace-in-metadata تغییر داد.
گزینهٔ --replace-in-metadata FIELDS REGEX REPLACE برای جایگزینی متن در هر یک از فیلدهای متادیتا با استفاده از عبارات باقاعده پایتون (https://docs.python.org/3/library/re.html#regular-expression-syntax) استفاده میشود. برای کاربردهای پیشرفتهتر میتوان از پسارجاعها (https://docs.python.org/3/library/re.html?highlight=backreferences#re.sub) در رشتهٔ جایگزینی استفاده کرد.
نحو کلی --parse-metadata FROM:TO بدین صورت است که نام یک فیلد یا یک الگوی خروجی برای استخراج داده از آن، و قالبی برای تفسیر آن، با یک دونقطه : جدا میشوند. برای TO میتوان از یک عبارت باقاعده پایتون (https://docs.python.org/3/library/re.html#regular-expression-syntax) با گروههای تطابق نامدار، یک نام فیلد تکی، یا نحوی مشابه با الگوی خروجی (تنها قالببندی %(field)s پشتیبانی میشود) استفاده کرد. این گزینه را میتوان چندین بار برای تجزیه و تغییر فیلدهای مختلف به کار برد.
توجه داشته باشید که این گزینهها ترتیب نسبی خود را حفظ میکنند، که امکان انجام جایگزینیها را در فیلدهای تجزیهشده و بالعکس فراهم میسازد. همچنین، هر فیلدی که بدین ترتیب ایجاد شود میتواند در الگوی خروجی استفاده شود و بر متادیتای افزوده شده به فایل رسانه هنگام استفاده از --embed-metadata نیز تأثیر خواهد گذاشت.
این گزینه کاربردهای ویژه دیگری نیز دارد:
- •
-
میتوانید بر اساس متادیتای ویدیوی در حال دانلود، یک نشانی (URL) اضافی را دانلود کنید. برای این کار، فیلد additional_urls را روی نشانی اینترنتی مورد نظر برای دانلود تنظیم کنید. برای مثال: --parse-metadata "description:(?P<additional_urls>https?://www\.vimeo\.com/\d+)" اولین ویدیوی vimeo یافتشده در توضیحات را دانلود خواهد کرد.
- •
-
میتوانید از این گزینه برای تغییر متادیتایی که در فایل رسانه جاسازی میشود استفاده کنید. برای این کار، مقدار فیلد مربوطه را با یک پیشوند meta_ مشخص کنید. برای نمونه، هر مقداری که برای فیلد meta_description تعیین کنید، به فیلد description در فایل اضافه خواهد شد - میتوانید از این روش برای تنظیم مقادیر متفاوت برای "description" و "synopsis" استفاده کنید. برای تغییر متادیتای هر استریم به صورت جداگانه، از پیشوند meta<n>_ استفاده کنید (مانند meta1_language). هر مقداری که در فیلد meta_ تنظیم شود، تمام مقادیر پیشفرض را بازنویسی خواهد کرد.
نکته: تغییر متادیتا پیش از انتخاب قالب، پساستخراج و سایر عملیات پسپردازش انجام میشود. ممکن است برخی فیلدها در طول این مراحل اضافه یا تغییر داده شوند و تغییرات شما را بازنویسی کنند.
جهت ارجاع، اینها فیلدهایی هستند که yt-dlp بهطور پیشفرض به متادیتای فایل اضافه میکند:
| فیلدهای متادیتا | برگرفته از |
| title | track یا title |
| date | upload_date |
| description، synopsis | description |
| purl، comment | webpage_url |
| track | track_number |
| artist | artist، artists، creator، creators، uploader یا uploader_id |
| composer | composer یا composers |
| genre | genre، genres، categories یا tags |
| album | album یا series |
| album_artist | album_artist یا album_artists |
| disc | disc_number |
| show | series |
| season_number | season_number |
| episode_id | episode یا episode_id |
| episode_sort | episode_number |
| language هر استریم | language قالب |
نکته: قالب فایل ممکن است از برخی از این فیلدها پشتیبانی نکند.SS "مثالهای اصلاح فراداده (Modifying metadata examples)"
-
# تفسیر عنوان به صورت "Artist - Title" $ yt-dlp --parse-metadata "title:%(artist)s - %(title)s" # مثال عبارت منظم (Regex) $ yt-dlp --parse-metadata "description:Artist - (?P<artist>.+)" # کپی فیلد episode به فیلد title (با مبدا و مقصد به عنوان تکفیلد) $ yt-dlp --parse-metadata "episode:title" # تنظیم عنوان به صورت "Series name S01E05" $ yt-dlp --parse-metadata "%(series)s S%(season_number)02dE%(episode_number)02d:%(title)s" # اولویت دادن به uploader به عنوان فیلد "artist" در فراداده ویدیو $ yt-dlp --parse-metadata "%(uploader|)s:%(meta_artist)s" --embed-metadata # تنظیم فیلد "comment" در فراداده ویدیو با استفاده از description به جای webpage_url، # با مدیریت صحیح چندخطیها $ yt-dlp --parse-metadata "description:(?s)(?P<meta_comment>.+)" --embed-metadata # عدم تنظیم هیچ فیلد "synopsis" در فراداده ویدیو $ yt-dlp --parse-metadata ":(?P<meta_synopsis>)" # حذف فیلد "formats" از infojson با مقداردهی آن به یک رشته خالی $ yt-dlp --parse-metadata "video::(?P<formats>)" --write-info-json # جایگزینی همه فاصلهها و "_" در title و uploader با یک `-` $ yt-dlp --replace-in-metadata "title,uploader" "[ _]" "-"
آرگومانهای استخراجکننده (EXTRACTOR ARGUMENTS)
برخی استخراجکنندهها آرگومانهای اضافی را میپذیرند که میتوان آنها را با استفاده از --extractor-args KEY:ARGS ارسال کرد. ARGS رشتهای جداشده با ; (نقطهویرگول) از ARG=VAL1,VAL2 است؛ به عنوان مثال: --extractor-args "youtube:player-client=tv,mweb;formats=incomplete" --extractor-args "twitter:api=syndication"
نکته: در CLI، ARG میتواند به جای _ از - استفاده کند؛ به عنوان مثال youtube:player-client" تبدیل به youtube:player_client" میشود.
استخراجکنندههای زیر از این ویژگی استفاده میکنند:
youtube
- •
- lang: فراداده ترجمهشده (title، description و غیره) مربوط به این کد زبان (حساس به بزرگی و کوچکی حروف) را ترجیح میدهد. بهطور پیشفرض، فراداده زبان اصلی ویدیو ترجیح داده میشود و در صورت نبود، به نسخه ترجمهشده en بازمیگردد. برای فهرست کدهای زبان محتوای پشتیبانیشده، youtube/_base.py (https://github.com/yt-dlp/yt-dlp/blob/415b4c9f955b1a0391204bd24a7132590e7b3bdb/yt_dlp/extractor/youtube/_base.py#L402-L409) را ببینید.
- •
- skip: یک یا چند مورد از hls، dash یا translated_subs جهت صرفنظر کردن از استخراج به ترتیب مانیفستهای m3u8، مانیفستهای dash و زیرنویسهای خودکار ترجمهشده (https://github.com/yt-dlp/yt-dlp/issues/4090#issuecomment-1158102032).
- •
- player_client: کلاینتهایی که دادههای ویدیو از آنها استخراج میشود. کلاینتهای در دسترس در حال حاضر عبارتند از: web، web_safari، web_embedded، web_music، web_creator، mweb، ios، visionos، android، android_vr، tv، tv_downgraded و tv_simply. بهطور پیشفرض، از visionos,web استفاده میشود. اگر هیچ موتور/محیط اجرای JavaScript در دسترس نباشد، web حذف میشود. اگر کوکیهای حساب واردشده به yt-dlp داده شود، برای حسابهای رایگان از web_embedded,tv_downgraded,web و برای حسابهای ویژه (premium) از web_creator,tv_downgraded,web استفاده میشود. کلاینت web_music هنگام استفاده از کوکیهای حساب واردشده، برای نشانیهای music.youtube.com اضافه میشود. کلاینت web_embedded برای ویدیوهای دارای محدودیت سنی اضافه میشود، اما فقط گاهی اوقات میتواند محدودیت سنی را با موفقیت دور بزند (مثلاً اگر ویدیو قابلیت جاسازی داشته باشد). کلاینتهای tv_downgraded و web_embedded ممکن است در صورت عدم دسترسی android_vr یا visionos به یک ویدیو، به عنوان جایگزین اضطراری (fallback) اضافه شوند. کلاینت web_creator در صورتی که تأیید سن حساب برای ویدیوهای دارای محدودیت سنی لازم باشد، اضافه میشود. برخی کلاینتها مانند web_creator و web_music برای اینکه فرمتهای آنها قابل بارگیری باشند نیازمند po_token هستند. برخی کلاینتها مانند web_creator تنها با احراز هویت کار میکنند. همه کلاینتها از احراز هویت از طریق کوکیها پشتیبانی نمیکنند. میتوانید از default برای کلاینتهای پیشفرض، یا از all برای همه کلاینتها (توصیه نمیشود) استفاده کنید. میتوانید با قرار دادن پیشوند - قبل از نام یک کلاینت، آن را مستثنی کنید؛ مثلاً: youtube:player_client=default,-web
- •
- player_skip: صرفنظر کردن از برخی درخواستهای شبکه که عموماً برای استخراج پایدار ضروری هستند. یک یا چند مورد از configs (صرفنظر از پیکربندیهای کلاینت)، webpage (صرفنظر از صفحه وب اولیه)، js (صرفنظر از پخشکننده جاوااسکریپت)، initial_data (صرفنظر از دادههای اولیه / درخواست قسمت بعدی). اگرچه این گزینهها میتوانند به کاهش تعداد درخواستهای مورد نیاز یا جلوگیری از برخی محدودیتهای نرخ درخواست (rate-limiting) کمک کنند، اما ممکن است مشکلاتی مانند مفقود شدن فرمتها یا فراداده ایجاد کنند. برای جزئیات بیشتر، #860 (https://github.com/yt-dlp/yt-dlp/pull/860) و #12826 (https://github.com/yt-dlp/yt-dlp/issues/12826) را ببینید.
- •
- webpage_skip: صرفنظر کردن از استخراج دادههای جاسازیشده صفحه وب. یک یا هر دو مورد از player_response، initial_data. این گزینهها برای اهداف آزمایشی هستند و از هیچ درخواست شبکهای صرفنظر نمیکنند. بهطور پیشفرض از هیچکدام صرفنظر نمیشود؛ اما اگر مقداری غیر از actual برای player_js_version استفاده شود، مقدار webpage_skip=player_response به صورت ضمنی در نظر گرفته میشود.
- •
- webpage_client: کلاینتی که برای درخواست صفحه وب ویدیو استفاده میشود. یکی از مقادیر web (پیشفرض) یا web_safari
- •
- player_params: پارامترهای پخشکننده YouTube برای استفاده در درخواستهای پخشکننده. هرگونه مقدار پیشفرض تنظیمشده توسط yt-dlp را بازنویسی میکند.
- •
- player_js_variant: نگارش جاوااسکریپت پخشکننده جهت استفاده در رمزگشایی n/sig. نگارشهای شناختهشده عبارتند از: main، tcc، tce، es5، es6، es6_tcc، es6_tce، tv، tv_es6، phone، house. مقدار پیشفرض main است و موارد دیگر برای مقاصد اشکالزدایی هستند. میتوانید از actual برای استفاده از آنچه توسط سایت تجویز شده است استفاده کنید.
- •
- player_js_version: نسخه جاوااسکریپت پخشکننده برای رمزگشایی n/sig، در قالب signature_timestamp@hash (مانند 20348@0004de42). پیشفرض استفاده از نسخه تعیینشده توسط سایت است و با actual قابل انتخاب میباشد. استفاده از هر مقدار دیگری به معنی اعمال webpage_skip=player_response خواهد بود.
- •
- comment_sort: top یا new (پیشفرض) - انتخاب حالت مرتبسازی دیدگاهها (در سمت YouTube)
- •
- max_comments: محدود کردن تعداد دیدگاههای گردآوریشده. فهرستی از اعداد صحیح جداشده با کاما به صورت max-comments,max-parents,max-replies,max-replies-per-thread,max-depth. پیشفرض all,all,all,all,all است.
- •
- مقدار 1 برای max-depth تمام پاسخها را صرفنظر از مقادیر ارائهشده برای max-replies یا max-replies-per-thread نادیده میگیرد.
- •
- به عنوان مثال، all,all,1000,10,2 حداکثر ۱۰۰۰ پاسخ در کل، با حداکثر ۱۰ پاسخ در هر رشته (thread)، و تنها ۲ سطح عمق (یعنی دیدگاههای سطح اول به اضافه پاسخهای مستقیم آنها) را دریافت میکند. 1000,all,100 حداکثر ۱۰۰۰ دیدگاه با حداکثر ۱۰۰ پاسخ در کل دریافت میکند.
- •
- formats: تغییر انواع فرمتهای بازگرداندهشده. dashy (تبدیل HTTP به DASH)، duplicate (محتوای یکسان با نشانیها یا پروتکلهای متفاوت؛ شامل dashy)، incomplete (فرمتهایی که نمیتوانند بهطور کامل بارگیری شوند - لایو و پس از لایو dash، پس از لایو m3u8، و https تطبیقی لایو بدون --live-from-start)، missing_pot (شامل فرمتهایی که نیازمند PO Token هستند اما فاقد آن میباشند)
- •
- innertube_host: میزبان Innertube API برای استفاده در تمام درخواستهای API؛ مانند studio.youtube.com، youtubei.googleapis.com. توجه داشته باشید که کوکیهای صادرشده از یک زیردامنه روی سایر زیردامنهها کار نخواهند کرد.
- •
- innertube_key: کلید Innertube API برای استفاده در تمام درخواستهای API. بهطور پیشفرض، هیچ کلید API استفاده نمیشود.
- •
- raise_incomplete_data: اعلام خطا به جای نمایش هشدار در صورت رخداد Incomplete Data Received
- •
- data_sync_id: بازنویسی Data Sync ID حساب کاربری مورد استفاده در درخواستهای Innertube API. این گزینه در صورتی که از حسابی با youtube:player_skip=webpage,configs یا youtubetab:skip=webpage استفاده میکنید، ممکن است لازم باشد..IP • 2 visitor_data: بازنویسی (Override) دادههای بازدیدکننده (Visitor Data) مورد استفاده در درخواستهای Innertube API. این مورد باید به همراه player_skip=webpage,configs و بدون کوکیها استفاده شود. نکته: در صورت استفاده نادرست ممکن است اثرات نامطلوبی داشته باشد. اگر نشستی از یک مرورگر مورد نظر است، باید در عوض کوکیها را ارسال کنید (که حاوی Visitor ID هستند)
- •
- po_token: توکن(های) اثبات مبدأ (Proof of Origin / PO) مورد استفاده. فهرستی از توکنهای PO که با کاما از هم جدا شدهاند در قالب CLIENT.CONTEXT+PO_TOKEN، مانند: youtube:po_token=web.gvs+XXX,web.player=XXX,web_safari.gvs+YYY. کانتکست میتواند هر یک از gvs (نشانیهای وب Google Video Server)، player (درخواست پخشکننده Innertube) یا subs (زیرنویسها) باشد
- •
- pot_trace: فعالسازی ثبت وقایع اشکالزدایی (debug logging) برای واکشی PO Token. یا true یا false (پیشفرض)
- •
- fetch_pot: خطمشی مورد استفاده برای واکشی PO Token از ارائهدهندگان. یکی از مقادیر always (تلاش همیشگی برای واکشی PO Token صرف نظر از اینکه کلاینت برای کانتکست دادهشده به آن نیاز دارد یا خیر)، never (هرگز PO Token را واکشی نکن)، یا auto (پیشفرض؛ تنها در صورتی PO Token را واکشی کن که کلاینت برای کانتکست دادهشده به آن نیاز داشته باشد)
- •
- jsc_trace: فعالسازی ثبت وقایع اشکالزدایی برای واکشی JS Challenge. یا true یا false (پیشفرض)
- •
- use_ad_playback_context: رد کردن تبلیغات ابتدایی (preroll) برای حذف زمان انتظار اجباری پیش از بارگیری. هنگام ارسال کوکیهای حساب ویژه (premium) به yt-dlp از این گزینه استفاده نکنید، زیرا منجر به از دست رفتن فرمتهای ویژه خواهد شد. تنها با کلاینتهای پخشکننده mweb و web_music مؤثر است. یا true یا false (پیشفرض)
youtube-ejs
- •
- jitless: اجرای موتورهای جاوااسکریپتِ پشتیبانیشده در حالت بدون JIT (JIT-less). محیطهای زمان اجرای پشتیبانیشده عبارتند از deno، node و bun. امنیت بهتری را به بهای کاهش کارایی/سرعت فراهم میکند. توجه داشته باشید که node و bun همچنان ناامن در نظر گرفته میشوند. یا true یا false (پیشفرض)
youtubepot-webpo
- •
- bind_to_visitor_id: تعیین اینکه آیا به جای Visitor Data از Visitor ID برای کش کردن (ذخیرهسازی موقت) توکنهای WebPO استفاده شود یا خیر. یا true (پیشفرض) یا false
youtubetab (فهرستهای پخش، کانالها، فیدهای YouTube و غیره)
- •
- skip: یک یا چند مورد از webpage (رد کردن بارگیری اولیه صفحه وب)، authcheck (اجازه دادن به بارگیری فهرستهای پخشی که نیاز به احراز هویت دارند در زمانی که صفحه وب اولیه بارگیری نشده است. این کار ممکن است رفتارهای ناخواستهای ایجاد کند، برای جزئیات بیشتر به #1122 (https://github.com/yt-dlp/yt-dlp/pull/1122) مراجعه کنید)
- •
- approximate_date: استخراج تقریبی upload_date و timestamp در flat-playlist. این امر ممکن است باعث شود فیلترهای مبتنی بر تاریخ کمی دچار خطا شوند
generic
- •
- fragment_query: انتقال مستقیم هرگونه پرسمان (query) در نشانیهای مانیفست mpd/m3u8 به قطعات (fragments) آنها در صورتی که مقداری ارائه نشود، یا در غیر این صورت اعمال رشته پرسمان دادهشده به صورت fragment_query=VALUE. توجه داشته باشید که اگر جریان دارای یک کلید HLS AES-128 باشد، پارامترهای پرسمان به URI کلید نیز منتقل خواهند شد، مگر اینکه آرگومان استخراجکننده key_query ارسال شده باشد، یا یک URI کلید خارجی از طریق آرگومان استخراجکننده hls_key ارائه گردد. روی ffmpeg اعمال نمیشود
- •
- variant_query: انتقال مستقیم پرسمان URL اصلی (master) m3u8 به نشانیهای فهرست پخش متغیر (variant playlist) در صورتی که مقداری ارائه نشود، یا در غیر این صورت اعمال رشته پرسمان دادهشده به صورت variant_query=VALUE
- •
- key_query: انتقال مستقیم پرسمان URL اصلی m3u8 به URI کلید رمزگشایی HLS AES-128 در صورتی که مقداری ارائه نشود، یا در غیر این صورت اعمال رشته پرسمان دادهشده به صورت key_query=VALUE. توجه داشته باشید که اگر URI کلید از طریق آرگومان استخراجکننده hls_key ارائه شود، این گزینه هیچ اثری نخواهد داشت. روی ffmpeg اعمال نمیشود
- •
- hls_key: یک کلید URI مربوط به HLS AES-128 یا خود کلید (به صورت هگز)، و به صورت اختیاری بردار راهانداز IV (به صورت هگز)، در قالب (URI|KEY)[,IV]؛ مانند: generic:hls_key=ABCDEF1234567980,0xFEDCBA0987654321. ارسال هر یک از این مقادیر، استفاده از بارگیریکننده بومی HLS را اجباری کرده و مقادیر متناظر یافتشده در فهرست پخش m3u8 را بازنویسی میکند
- •
- is_live: دور زدن تشخیص پخش زنده HLS و تنظیم دستی live_status - مقدار false آن را برابر با not_live قرار میدهد، و هر مقدار دیگر (یا بدون مقدار) آن را برابر با is_live قرار خواهد داد
- •
- impersonate: هدف(هایی) برای تلاش و جعل هویت در درخواست اولیه صفحه وب؛ مانند: generic:impersonate=safari,chrome-110. از generic:impersonate برای جعل هر هدف موجود، و از generic:impersonate=false برای غیرفعال کردن جعل هویت استفاده کنید (پیشفرض).SS vikichannel
- •
- video_types: انواع ویدیوها برای بارگیری - یک یا چند مورد از episodes، movies، clips، trailers
youtubewebarchive
- •
- check_all: تلاش برای بررسی بیشتر به بهای درخواستهای بیشتر. یک یا چند مورد از thumbnails، captures
gamejolt
- •
- comment_sort: hot (پیشفرض)، you (نیازمند کوکی)، top، new - انتخاب حالت مرتبسازی دیدگاهها (از سمت GameJolt)
hotstar
- •
- res: وضوح تصویر جهت نادیدهگرفتن - یک یا چند مورد از sd، hd، fhd
- •
- vcodec: کُدک ویدیویی برای نادیدهگرفتن - یک یا چند مورد از h264، h265، dvh265
- •
- dr: دامنه دینامیکی برای نادیدهگرفتن - یک یا چند مورد از sdr، hdr10، dv
- •
- app_id: مقدار هدر X-IG-App-ID مورد استفاده برای درخواستهای API. میتواند شماره شناسه واقعی، ios یا web (پیشفرض) باشد
niconicochannelplus
- •
- max_comments: بیشینه تعداد دیدگاهها برای استخراج - پیشفرض 120 است
tiktok
- •
- api_hostname: نام میزبان مورد استفاده برای فراخوانیهای API تلفن همراه، مانند api22-normal-c-alisg.tiktokv.com
- •
- app_name: نام پیشفرض برنامه برای استفاده با فراخوانیهای API تلفن همراه، مانند trill
- •
- app_version: نسخه پیشفرض برنامه برای استفاده با فراخوانیهای API تلفن همراه - باید همراه با manifest_app_version تنظیم شود، مانند 34.1.2
- •
- manifest_app_version: نسخه عددی پیشفرض برنامه جهت استفاده با فراخوانیهای API تلفن همراه، مانند 2023401020
- •
- aid: شناسه برنامه پیشفرض جهت استفاده با فراخوانیهای API تلفن همراه، مانند 1180
- •
- app_info: فعالسازی استخراج با API تلفن همراه از طریق یک یا چند رشته اطلاعات برنامه در قالب <iid>/[app_name]/[app_version]/[manifest_app_version]/[aid]، که در آن iid شناسه یکتای نصب برنامه است. تنها مقدار الزامی iid است؛ سایر مقادیر و جداکنندههای / آنها را میتوان حذف کرد، مانند tiktok:app_info=1234567890123456789 یا tiktok:app_info=123,456/trill///1180,789//34.0.1/340001
- •
- device_id: فعالسازی استخراج با API تلفن همراه با یک شناسه دستگاه واقعی جهت استفاده در فراخوانیهای API تلفن همراه. پیشفرض یک رشته تصادفی ۱۹ رقمی است
rokfinchannel
- •
- tab: کدام برگه بارگیری شود - یکی از new، top، videos، podcasts، streams، stacks
- •
- api: انتخاب یکی از گزینههای graphql (پیشفرض)، legacy یا syndication به عنوان API برای استخراج توییت. در صورت ورود به حساب کاربری هیچ تاثیری ندارد
stacommu, wrestleuniverse
- •
- device_id: مقدار UUID اختصاصیافته توسط وبگاه و مورد استفاده برای اعمال محدودیتهای دستگاه جهت محتوای پخش زنده پولی. در حافظه محلی مرورگر (local storage) قابل یافتن است.SS twitch
- •
- client_id: مقدار Client ID برای ارسال به همراه درخواستهای GraphQL، برای مثال: twitch:client_id=kimne78kx3ncx6brgo4mv6wki5h1ko
nhkradirulive (NHK らじる★らじる LIVE)
- •
- area: کدام نسخهٔ منطقهای استخراج شود. مناطق معتبر عبارتند از: sapporo، sendai، tokyo، nagoya، osaka، hiroshima، matsuyama، fukuoka. پیشفرض tokyo است
nflplusreplay
- •
- type: نوع (یا انواع) بازپخش مسابقه برای استخراج. انواع معتبر عبارتند از: full_game، full_game_spanish، condensed_game و all_22. میتوانید برای استخراج همهٔ انواع بازپخشهای موجود از all استفاده کنید، که پیشفرض است
jiocinema
- •
- refresh_token: مقدار شناسهٔ یکتا (UUID) مربوط به refreshToken از حافظهٔ محلی مرورگر (local storage) میتواند برای تمدید طول عمر نشست ورود، هنگام ورود با token به عنوان نام کاربری و accessToken از حافظهٔ محلی مرورگر به عنوان گذرواژه، ارسال شود
jiosaavn
- •
- bitrate: بیتریتهای صوتی درخواستی. یک یا چند مورد از 16، 32، 64، 128، 320. پیشفرض 128,320 است
afreecatvlive
- •
- cdn: یک یا چند شناسهٔ CDN برای استفاده با فراخوانی API جهت نشانیهای وب جریان پخش (stream)، مانند: gcp_cdn، gs_cdn_pc_app، gs_cdn_mobile_web، gs_cdn_pc_web
soundcloud
- •
- formats: قالبهای درخواستی از API. مقادیر درخواستی باید در ساختار {protocol}_{codec} باشند، مانند: hls_opus,http_aac. نویسهٔ * به عنوان نویسهٔ عام (wildcard) عمل میکند، مانند: *_mp3، و همچنین میتواند به تنهایی برای درخواست همهٔ قالبها ارسال شود. پروتکلهای شناختهشده عبارتند از http، hls و hls-aes؛ کدکهای شناختهشده شامل aac، opus و mp3 هستند. قالبهای اصلی download همواره استخراج میشوند. پیشفرض عبارت است از: http_aac,hls_aac,http_opus,hls_opus,http_mp3,hls_mp3
orfon (orf:on)
- •
- prefer_segments_playlist: در صورت موجود بودن، فهرست پخشی از بخشهای برنامه به جای یک ویدیوی کامل ترجیح داده میشود. اگر بخشهای جداگانه مورد نیاز است، از این گزینه استفاده کنید: --concat-playlist never --extractor-args "orfon:prefer_segments_playlist"
bilibili
- •
- prefer_multi_flv: ترجیح دادن استخراج قالبهای flv به mp4 برای ویدیوهای قدیمیتری که همچنان قالبهای قدیمی (legacy) را ارائه میدهند
sonylivseries
- •
- sort_order: ترتیب مرتبسازی قسمتها برای استخراج سریال - یکی از مقادیر asc (صعودی، قدیمیترین در ابتدا) یا desc (نزولی، جدیدترین در ابتدا). پیشفرض asc است
streaks
- •
- api_key: کلید API برای سرآیند X-Streaks-Api-Key
tver
- •
- backend: ایپیآی Backend مورد استفاده برای استخراج - یکی از streaks (پیشفرض) یا brightcove (منسوخشده)
vimeo
- •
- client: کلاینتی که دادههای ویدیو از آن استخراج میشود. کلاینتهای در دسترس در حال حاضر android و web هستند. تنها از یک کلاینت میتوان استفاده کرد. کلاینت web به صورت پیشفرض استفاده میشود و تنها با کوکیهای حساب کاربری یا اطلاعات ورود (اعتبارنامهها) کار میکند. کلاینت android تنها با توکنهای OAuth که از قبل کش شدهاند کار میکند
- •
- original_format_policy: سیاست مربوط به زمان تلاش برای استخراج قالبهای اصلی. یکی از مقادیر always، never یا auto. سیاست پیشفرض auto با ایجاد درخواست اضافی تنها در زمانی که Vimeo امکان بارگیری ویدیو را اعلام کرده باشد، تلاش میکند از فراتر رفتن از حد مجاز نرخ درخواستهای API (rate-limit) کلاینت وب جلوگیری کند.SS zan
- •
- split_angles: جریانهای چندزاویهای را به قالبهای زاویه مجزا تقسیم میکند. کدگذاری مجدد جریان ویدیویی را در طول بارگیری تحمیل میکند و به ffmpeg نیاز دارد. یا true یا false (پیشفرض)
نکته: این گزینهها ممکن است در آینده بدون توجه به سازگاری با نسخههای پیشین تغییر کرده یا حذف شوند
نصب (INSTALLATION)
میتوانید yt-dlp را با استفاده از باینریها، pip (https://pypi.org/project/yt-dlp) یا با استفاده از یک مدیر بسته شخص ثالث نصب کنید. برای دستورالعملهای دقیق به ویکی (https://github.com/yt-dlp/yt-dlp/wiki/Installation) مراجعه کنید
نکته: صفحات راهنما (manpages)، فایلهای تکمیل خودکار پوسته (autocomplete) و غیره درون tarball کد منبع (https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.tar.gz) در دسترس هستند
بهروزرسانی (UPDATE)
اگر از باینریهای انتشار رسمی استفاده میکنید، میتوانید از yt-dlp -U برای بهروزرسانی استفاده کنید
اگر با pip (https://github.com/yt-dlp/yt-dlp/wiki/Installation#with-pip) نصب کردهاید، کافی است همان دستوری را که برای نصب برنامه استفاده شده بود دوباره اجرا کنید
برای سایر مدیر بستههای شخص ثالث، به ویکی (https://github.com/yt-dlp/yt-dlp/wiki/Installation#third-party-package-managers) مراجعه کرده یا مستندات آنها را بررسی نمایید
در حال حاضر سه کانال انتشار برای فایلهای باینری وجود دارد: stable، nightly و master.
- •
- stable کانال پیشفرض است که انتشارهایی با برنامه زمانی (عمدتاً) ماهانه ارائه میدهد. اگرچه این کانال به دلیل اینکه بسیاری از تغییرات آن توسط کاربران کانالهای انتشار nightly یا master آزمایش شدهاند، stable نامیده میشود، اما آخرین انتشار stable اغلب "کهنه" بوده و مستعد خرابیهای ناشی از عوامل خارجی است (یعنی سایتها مواردی را در سمت خود تغییر میدهند و کارکرد yt-dlp مختل میشود).
- •
- کانال nightly انتشارهایی ارائه میدهد که اندکی قبل از نیمهشب به وقت UTC در هر روزی که تغییراتی در پایگاهکد رخ داده باشد، منتشر میشوند. این کانال بهمنزله تصویری لحظهای از روند توسعه پروژه عمل میکند و کانال توصیهشده برای کاربران عادی yt-dlp است. انتشارهای nightly از طریق yt-dlp/yt-dlp-nightly-builds (https://github.com/yt-dlp/yt-dlp-nightly-builds/releases) یا بهصورت انتشارهای توسعهای بسته PyPI به نام yt-dlp (که با پرچم --pre در pip قابل نصب است) در دسترس هستند.
- •
- کانال master انتشارهای آزمایشی ("canary") را ارائه میدهد که پس از هر push به شاخه master منتشر میشوند. این کانال همواره جدیدترین اصلاحات و ویژگیها را فراهم میکند، اما ممکن است مستعد باگها یا پسرفتها (regressions) باشد. انتشارهای master از طریق yt-dlp/yt-dlp-master-builds (https://github.com/yt-dlp/yt-dlp-master-builds/releases) در دسترس هستند.
هنگام استفاده از --update/-U، یک باینری انتشار فقط به کانال فعلی خود بهروزرسانی میشود. از --update-to CHANNEL میتوان برای تغییر به یک کانال متفاوت در صورت در دسترس بودن نسخه جدیدتر استفاده کرد. همچنین میتوان از --update-to [CHANNEL@]TAG برای ارتقا یا تنزل به برچسبهای خاص از یک کانال استفاده نمود.
شما همچنین میتوانید از --update-to <repository> (<owner>/<repository>) برای بهروزرسانی به یک کانال در مخزنی کاملاً متفاوت استفاده کنید. با این حال، مراقب باشید که به چه مخزنی بهروزرسانی میکنید، چرا که هیچ اعتبارسنجیای برای باینریهای مخازن متفاوت انجام نمیشود.
نمونه کاربرد:
- •
- yt-dlp --update-to master تغییر به کانال master و بهروزرسانی به جدیدترین انتشار آن
- •
- yt-dlp --update-to stable@2023.07.06 ارتقا/تنزل به انتشار برچسب 2023.07.06 از کانال stable
- •
- yt-dlp --update-to 2023.10.07 ارتقا/تنزل به برچسب 2023.10.07 در صورت وجود در کانال فعلی
- •
- yt-dlp --update-to example/yt-dlp@2023.09.24 ارتقا/تنزل به انتشار از مخزن example/yt-dlp، برچسب 2023.09.24
مهم: هر کاربری که با نسخه انتشار stable دچار مشکل است باید قبل از ارسال گزارش باگ، نسخه nightly را نصب کرده یا به آن بهروزرسانی کند:
-
# To update to nightly from stable executable/binary: yt-dlp --update-to nightly # To install nightly with pip: python -m pip install -U --pre "yt-dlp[default]"
هنگام اجرای نسخهای از yt-dlp که قدیمیتر از ۹۰ روز باشد، یک پیام هشدار مبنی بر پیشنهاد بهروزرسانی به آخرین نسخه مشاهده خواهید کرد. میتوانید با افزودن --no-update به دستور یا فایل پیکربندی خود، از نمایش این هشدار جلوگیری کنید..SS "وابستگیها (DEPENDENCIES)"
نسخههای 3.10 به بالای Python (CPython) و 3.11 به بالای آن (PyPy) پشتیبانی میشوند. سایر نسخهها و پیادهسازیها ممکن است به درستی کار کنند یا نکنند.
در حالی که سایر وابستگیها اختیاری هستند، استفاده از ffmpeg، ffprobe، yt-dlp-ejs و یک زماناجرا/موتور JavaScript پشتیبانیشده اکیداً توصیه میشود.
شدیداً توصیهشده (Strongly recommended)
- •
- ffmpeg و ffprobe (https://www.ffmpeg.org) - برای ادغام فایلهای جداگانهٔ ویدیو و صدا، و همچنین برای انجام وظایف مختلف پسپردازش لازم است. مجوز به نوع بیلد بستگی دارد (https://www.ffmpeg.org/legal.html)
از آنجا که ffmpeg وابستگی بسیار مهمی است، ما بیلدهای اختصاصی خود را در yt-dlp/FFmpeg-Builds (https://github.com/yt-dlp/FFmpeg-Builds) ارائه میدهیم. در گذشته، برای رفع مشکلات رایج کاربران yt-dlp وصلههایی (patches) بر روی این بیلدها اعمال میشد، اما در حال حاضر بیلدهای ما معادل نسخهٔ بالادست (upstream) ffmpeg هستند. برای جزئیات بیشتر به فایل readme (https://github.com/yt-dlp/FFmpeg-Builds#patches-applied) مراجعه کنید.
مهم: آنچه به آن نیاز دارید باینری ffmpeg است، نه بستهٔ Python با همین نام (https://pypi.org/project/ffmpeg)
- •
- yt-dlp-ejs (https://github.com/yt-dlp/ejs) - برای پشتیبانی کامل از YouTube لازم است. تحت مجوز Unlicense (https://github.com/yt-dlp/ejs/blob/main/LICENSE) منتشر شده است و شامل مؤلفههایی با مجوز MIT (https://github.com/davidbonnet/astring/blob/main/LICENSE) و ISC (https://github.com/meriyah/meriyah/blob/main/LICENSE.md) میباشد.
یک زماناجرا/موتور JavaScript مانند deno (https://deno.land) (توصیهشده)، node.js (https://nodejs.org)، bun (https://bun.sh) یا QuickJS (https://bellard.org/quickjs) نیز برای اجرای yt-dlp-ejs مورد نیاز است. ویکی (https://github.com/yt-dlp/yt-dlp/wiki/EJS) را ببینید.
شبکه (Networking)
- •
- certifi (https://github.com/certifi/python-certifi)* - مجموعه گواهیهای ریشهٔ Mozilla را فراهم میکند. تحت مجوز MPLv2 (https://github.com/certifi/python-certifi/blob/master/LICENSE)
- •
- brotli (https://github.com/google/brotli)* یا brotlicffi (https://github.com/python-hyper/brotlicffi) - پشتیبانی از کدگذاری محتوای Brotli (https://en.wikipedia.org/wiki/Brotli). هر دو تحت مجوز MIT 1 (https://github.com/google/brotli/blob/master/LICENSE) 2 (https://github.com/python-hyper/brotlicffi/blob/master/LICENSE)
- •
- websockets (https://github.com/aaugustin/websockets)* - برای دانلود از طریق websocket. تحت مجوز BSD-3-Clause (https://github.com/aaugustin/websockets/blob/main/LICENSE)
- •
- requests (https://github.com/psf/requests)* - کتابخانهٔ HTTP. برای پشتیبانی از پراکسی HTTPS و اتصالات پایدار (persistent connections). تحت مجوز Apache-2.0 (https://github.com/psf/requests/blob/main/LICENSE)
جعل هویت (Impersonation)
موارد زیر امکان جعل هویت درخواستهای مرورگر را فراهم میکنند. این قابلیت ممکن است برای برخی از سایتهایی که از انگشتنگاری TLS (TLS fingerprinting) استفاده میکنند لازم باشد.
- •
- curl_cffi (https://github.com/lexiforest/curl_cffi) (توصیهشده) - بایندینگ Python برای curl-impersonate (https://github.com/lexiforest/curl-impersonate). اهداف جعل هویت را برای Chrome، Edge و Safari فراهم میکند. تحت مجوز MIT (https://github.com/lexiforest/curl_cffi/blob/main/LICENSE)
- •
- میتواند همراه با افزونهٔ اختیاری curl-cffi نصب شود، مانند: pip install "yt-dlp[default,curl-cffi]"
- •
- در حال حاضر در بیشتر بیلدها گنجانده شده است بهجز yt-dlp (باینری zipimport در Unix) و yt-dlp_x86 (نسخهٔ ۳۲ بیتی Windows)
- •
- mutagen (https://github.com/quodlibet/mutagen)* - برای --embed-thumbnail در قالبهای خاص. تحت مجوز GPLv2+ (https://github.com/quodlibet/mutagen/blob/master/COPYING)
- •
- AtomicParsley (https://github.com/wez/atomicparsley) - برای --embed-thumbnail در فایلهای mp4/m4a هنگامی که mutagen/ffmpeg قادر به انجام آن نیستند. تحت مجوز GPLv2+ (https://github.com/wez/atomicparsley/blob/master/COPYING)
- •
- xattr (https://github.com/xattr/xattr)، pyxattr (https://github.com/iustin/pyxattr) یا setfattr (http://savannah.nongnu.org/projects/attr) - برای نوشتن فرادادههای xattr (--xattrs) روی Mac و BSD. بهترتیب تحت مجوزهای MIT (https://github.com/xattr/xattr/blob/master/LICENSE.txt)، LGPL2.1 (https://github.com/iustin/pyxattr/blob/master/COPYING) و GPLv2+ (http://git.savannah.nongnu.org/cgit/attr.git/tree/doc/COPYING)
متفرقه (Misc)
- •
- pycryptodomex (https://github.com/Legrandin/pycryptodome)* - برای رمزگشایی جریانهای AES-128 HLS و دادههای مختلف دیگر. تحت مجوز BSD-2-Clause (https://github.com/Legrandin/pycryptodome/blob/master/LICENSE.rst)
- •
- phantomjs (https://github.com/ariya/phantomjs) - در برخی استخراجکنندهها که نیاز به اجرای JavaScript دارند استفاده میشود. دیگر برای YouTube استفاده نمیشود. در آینده نزدیک منسوخ خواهد شد. تحت مجوز BSD-3-Clause (https://github.com/ariya/phantomjs/blob/master/LICENSE.BSD)
- •
- secretstorage (https://github.com/mitya57/secretstorage)* - برای --cookies-from-browser جهت دسترسی به دستهکلید (keyring) Gnome هنگام رمزگشایی کوکیهای مرورگرهای مبتنی بر Chromium روی Linux. تحت مجوز BSD-3-Clause (https://github.com/mitya57/secretstorage/blob/master/LICENSE)
- •
- هر بارگیریکننده خارجی که میخواهید با --downloader استفاده کنید
منسوخشده (Deprecated)
- •
- rtmpdump (http://rtmpdump.mplayerhq.hu) - برای بارگیری جریانهای rtmp. میتوان بهجای آن از ffmpeg با --downloader ffmpeg استفاده کرد. تحت مجوز GPLv2+ (http://rtmpdump.mplayerhq.hu)
برای استفاده یا توزیع مجدد وابستگیها، باید با شرایط مجوز مربوط به هرکدام موافقت کنید.
باینریهای انتشار مستقل (standalone) همراه با مفسر Python و بستههای مشخصشده با علامت * ساخته شدهاند.
اگر وابستگیهای لازم را برای کاری که انجام میدهید نداشته باشید، yt-dlp به شما هشدار خواهد داد. تمام وابستگیهای در دسترس فعلی در بالای خروجی --verbose قابل مشاهده هستند.
کامپایل (COMPILE)
ساختهای مستقل PyInstaller (Standalone PyInstaller Builds)
برای ساخت فایل اجرایی مستقل، باید Python و pyinstaller (به همراه هر یک از وابستگیهای اختیاری yt-dlp در صورت نیاز) را در دسترس داشته باشید. فایل اجرایی برای همان معماری پردازندهای ساخته خواهد شد که در Python استفاده شده است.
میتوانید دستورهای زیر را اجرا کنید:
-
python devscripts/install_deps.py --include-group pyinstaller python devscripts/make_lazy_extractors.py python -m bundle.pyinstaller
در برخی سیستمها، ممکن است لازم باشد بهجای python از py یا python3 استفاده کنید.
دستور python -m bundle.pyinstaller هر آرگومانی را که بتوان به pyinstaller ارسال کرد میپذیرد، مانند --onefile/-F یا --onedir/-D، که اطلاعات بیشتر در اینجا (https://pyinstaller.org/en/stable/usage.html#what-to-generate) مستند شده است.
نکته: نسخههای پایینتر از 4.4 ابزار Pyinstaller از Python نصبشده از Windows Store بدون استفاده از یک محیط مجازی پشتیبانی نمیکنند (https://github.com/pyinstaller/pyinstaller#requirements-and-tested-platforms).
مهم: اجرای مستقیم pyinstaller بهجای استفاده از python -m bundle.pyinstaller بهصورت رسمی پشتیبانی نمیشود. این کار ممکن است به درستی عمل کند یا نکند..SS باینری مستقل از پلتفرم (UNIX)
شما به ابزارهای ساخت python (نسخهٔ ۳.۱۰ به بالا)، zip، make (نسخهٔ GNU)، pandoc* و pytest* نیاز خواهید داشت.
پس از نصب این موارد، تنها کافی است make را اجرا کنید.
همچنین میتوانید به جای آن make yt-dlp را اجرا کنید تا فقط فایل باینری بدون بهروزرسانی هیچکدام از فایلهای اضافی کامپایل شود. (ابزارهای ساختی که با علامت * مشخص شدهاند برای این کار لازم نیستند)
اسکریپتهای مرتبط
- •
- devscripts/install_deps.py - نصب وابستگیها برای yt-dlp.
- •
- devscripts/update-version.py - بهروزرسانی شمارهٔ نسخه بر اساس تاریخ جاری.
- •
- devscripts/set-variant.py - تنظیم گونهٔ ساخت (variant) فایل اجرایی.
- •
- devscripts/make_changelog.py - ایجاد یک گزارش تغییرات markdown با استفاده از پیامهای کوتاه کامیت و بهروزرسانی فایل CONTRIBUTORS.
- •
- devscripts/make_lazy_extractors.py - ساخت استخراجکنندههای تنبل (lazy extractors). اجرای این اسکریپت پیش از ساخت باینریها (هر گونهای) کارایی راهاندازی آنها را بهبود میبخشد. برای غیرفعالسازی اجباری بارگذاری استخراجکنندههای تنبل، متغیر محیطی YTDLP_NO_LAZY_EXTRACTORS را روی مقداری غیرخالی تنظیم کنید.
نکته: برای اطلاعات بیشتر گزینهٔ --help آنها را ببینید.
فورک کردن پروژه
اگر پروژه را در GitHub فورک کنید، میتوانید گردشکار ساخت (build workflow) فورک خود را اجرا کنید تا نسخه(های) انتخابشده بهطور خودکار به عنوان artifact ساخته شوند. همچنین میتوانید گردشکار انتشار (release workflow) را اجرا کنید یا گردشکار nightly را فعال نمایید تا نسخههای کامل (پیش)انتشار ایجاد شوند.
پلاگینها (PLUGINS)
توجه داشته باشید که تمام پلاگینها حتی اگر فراخوانی نشوند وارد (import) میشوند، و هیچ بررسیای روی کد پلاگین انجام نمیگیرد. مسئولیت استفاده از پلاگینها بر عهدهٔ خود شماست و تنها در صورتی که به کد اعتماد دارید از آنها استفاده کنید!
پلاگینها میتوانند از <type>های extractor یا postprocessor باشند. - پلاگینهای استخراجکننده نیازی به فعالسازی از طریق خط فرمان (CLI) ندارند و هنگامی که URL ورودی برای آنها مناسب باشد بهطور خودکار فراخوانی میشوند. - پلاگینهای استخراجکننده نسبت به استخراجکنندههای داخلی اولویت دارند. - پلاگینهای پسپردازشگر را میتوان با استفاده از --use-postprocessor NAME فراخوانی کرد.
پلاگینها از بستههای فضاینام yt_dlp_plugins.extractor و yt_dlp_plugins.postprocessor بارگذاری میشوند.
به عبارت دیگر، ساختار فایلها روی دیسک چیزی شبیه به این است:
-
yt_dlp_plugins/ extractor/ myplugin.py postprocessor/ myplugin.py
ابزار yt-dlp این پوشههای فضاینام yt_dlp_plugins را در مکانهای متعددی جستجو میکند (به بخش زیر مراجعه کنید) و پلاگینها را از همهٔ آنها بارگذاری مینماید. برای غیرفعالسازی کامل بارگذاری پلاگینها، متغیر محیطی YTDLP_NO_PLUGINS را روی مقداری غیرخالی تنظیم کنید.
برای مشاهدهٔ برخی از پلاگینهای شناختهشده به ویکی مراجعه کنید: (https://github.com/yt-dlp/yt-dlp/wiki/Plugins)
نصب پلاگینها
پلاگینها را میتوان با استفاده از روشها و در مکانهای گوناگونی نصب کرد.
- 1.
- دایرکتوریهای پیکربندی: بستههای پلاگین (حاوی یک پوشهٔ فضاینام yt_dlp_plugins) را میتوان در مکانهای پیکربندی استاندارد زیر قرار داد:
- •
- پلاگینهای کاربر
- •
- ${XDG_CONFIG_HOME}/yt-dlp/plugins/<package name>/yt_dlp_plugins/ (در Linux/macOS توصیه میشود)
- •
- ${XDG_CONFIG_HOME}/yt-dlp-plugins/<package name>/yt_dlp_plugins/
- •
- ${APPDATA}/yt-dlp/plugins/<package name>/yt_dlp_plugins/ (در Windows توصیه میشود)
- •
- ${APPDATA}/yt-dlp-plugins/<package name>/yt_dlp_plugins/
- •
- ~/.yt-dlp/plugins/<package name>/yt_dlp_plugins/
- •
- ~/yt-dlp-plugins/<package name>/yt_dlp_plugins/
- •
- پلاگینهای سیستم
- •
- /etc/yt-dlp/plugins/<package name>/yt_dlp_plugins/
- •
- /etc/yt-dlp-plugins/<package name>/yt_dlp_plugins/
- 2.
- مکان فایل اجرایی: بستههای پلاگین را میتوان بهطور مشابه در یک دایرکتوری yt-dlp-plugins زیر مکان فایل اجرایی نصب کرد (برای نصبهای پرتابل توصیه میشود):
- •
- باینری: جایی که <root-dir>/yt-dlp.exe قرار دارد، <root-dir>/yt-dlp-plugins/<package name>/yt_dlp_plugins/
- •
- سورسکد: جایی که <root-dir>/yt_dlp/__main__.py قرار دارد، <root-dir>/yt-dlp-plugins/<package name>/yt_dlp_plugins/
- 3.
- ابزار pip و دیگر مکانها در PYTHONPATH
- •
- بستههای پلاگین را میتوان با استفاده از pip نصب و مدیریت کرد. برای مشاهدهٔ یک نمونه، yt-dlp-sample-plugins (https://github.com/yt-dlp/yt-dlp-sample-plugins) را ببینید.
- •
- نکته: فایلهای پلاگین بین بستههای پلاگینِ نصبشده با pip باید نام فایل یکتا داشته باشند.
- •
- هر مسیری در PYTHONPATH برای یافتن پوشهٔ فضاینام yt_dlp_plugins جستجو میشود.
- •
- نکته: این مورد برای ساختهای Pyinstaller صدق نمیکند.
بایگانیهای .zip، .egg و .whl که شامل یک پوشهٔ فضاینام yt_dlp_plugins در ریشهٔ خود هستند نیز به عنوان بستههای پلاگین پشتیبانی میشوند.
- •
- برای مثال: ${XDG_CONFIG_HOME}/yt-dlp/plugins/mypluginpkg.zip جایی که mypluginpkg.zip حاوی yt_dlp_plugins/<type>/myplugin.py است.
برای بررسی اینکه آیا پلاگین بارگذاری شده است یا خیر، yt-dlp را با --verbose اجرا کنید..SS "توسعه افزونهها (Developing Plugins)"
برای بسته افزونه نمونه، مخزن yt-dlp-sample-plugins (https://github.com/yt-dlp/yt-dlp-sample-plugins) و برای راهنمای توسعه افزونه، بخش Plugin Development (https://github.com/yt-dlp/yt-dlp/wiki/Plugin-Development) در ویکی را ببینید.
تمام کلاسهای عمومی که نام آنها به IE/PP ختم میشود، از هر فایل بهترتیب برای استخراجکنندهها (extractors) و پسپردازندهها (postprocessors) وارد (import) میشوند. این فرایند پیشوند خط تیره زیرین (برای نمونه _MyBasePluginIE که خصوصی است) و __all__ را رعایت میکند. همچنین میتوان با افزودن پیشوند خط تیره زیرین به نام ماژول، آن را مستثنی کرد (مانند _myplugin.py).
برای جایگزین کردن یک استخراجکننده موجود با زیرکلاسی از آن، آرگومان کلیدواژهای کلاسیِ plugin_name را تنظیم کنید (برای نمونه class MyPluginIE(ABuiltInIE, plugin_name='myplugin') کلاس ABuiltInIE را با MyPluginIE جایگزین خواهد کرد). از آنجا که استخراجکننده جایگزین والد میشود، باید با خصوصی کردن استخراجکننده زیرکلاس با استفاده از یکی از روشهای توضیحدادهشده در بالا، از وارد شدن جداگانه آن جلوگیری کنید.
اگر نویسنده افزونه هستید، جهت قابلیت دیدهشدن و کشف آسانتر، موضوع (topic) yt-dlp-plugins (https://github.com/topics/yt-dlp-plugins) را به مخزن خود اضافه کنید.
برای چگونگی نوشتن و آزمایش یک استخراجکننده، Developer Instructions (https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#developer-instructions) را ببینید.
تعبیه YT-DLP (EMBEDDING YT-DLP)
برنامه yt-dlp نهایت تلاش خود را میکند تا یک برنامه خط فرمانی مناسب باشد، و بنابراین باید از هر زبان برنامهنویسی قابل فراخوانی باشد.
برنامه شما باید از پردازش و تجزیه خروجی استاندارد معمول (stdout) خودداری کند زیرا ممکن است در نسخههای آینده تغییر یابد. در عوض، باید از گزینههایی مانند -J، --print، --progress-template، --exec و غیره استفاده کند تا خروجی کنسولی ایجاد نماید که بتوانید آن را بهطور قابل اطمینانی بازتولید و تجزیه کنید.
از داخل یک برنامه پایتون، میتوانید yt-dlp را به روشی قدرتمندتر تعبیه کنید، مانند:
-
from yt_dlp import YoutubeDL URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4'] with YoutubeDL() as ydl: ydl.download(URLS)
به احتمال زیاد مایل خواهید بود از گزینههای گوناگون استفاده کنید. برای فهرستی از گزینههای موجود، نگاهی به yt_dlp/YoutubeDL.py یا help(yt_dlp.YoutubeDL) در پوسته پایتون بیندازید. اگر پیش از این با واسط خط فرمان (CLI) آشنایی دارید، میتوانید از devscripts/cli_to_api.py (https://github.com/yt-dlp/yt-dlp/blob/master/devscripts/cli_to_api.py) برای ترجمه سوئیچهای خط فرمان به پارامترهای YoutubeDL بهره ببرید.
نکته: اگر کد خود را از youtube-dl به yt-dlp انتقال میدهید، یک نکته مهم که باید مد نظر داشته باشید این است که ما تضمین نمیکنیم مقدار بازگشتی YoutubeDL.extract_info قابل سریالسازی به json یا حتی یک دیکشنری باشد. این مقدار شبهدیکشنری خواهد بود، اما اگر میخواهید مطمئن شوید که یک دیکشنری قابل سریالسازی است، آن را همانطور که در مثال زیر نشان داده شده از YoutubeDL.sanitize_info عبور دهید.
مثالهای تعبیه (Embedding examples)
استخراج اطلاعات (Extracting information)
-
import json import yt_dlp URL = 'https://www.youtube.com/watch?v=YE7VzlLtp-4' # ℹ️ See help(yt_dlp.YoutubeDL) for a list of available options and public functions ydl_opts = {} with yt_dlp.YoutubeDL(ydl_opts) as ydl: info = ydl.extract_info(URL, download=False) # ℹ️ ydl.sanitize_info makes the info json-serializable print(json.dumps(ydl.sanitize_info(info))) -
import yt_dlp INFO_FILE = 'path/to/video.info.json' with yt_dlp.YoutubeDL() as ydl: error_code = ydl.download_with_info_file(INFO_FILE) print('Some videos failed to download' if error_code else 'All videos successfully downloaded')
استخراج صدا
-
import yt_dlp URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4'] ydl_opts = { 'format': 'm4a/bestaudio/best', # ℹ️ See help(yt_dlp.postprocessor) for a list of available Postprocessors and their arguments 'postprocessors': [{ # Extract audio using ffmpeg 'key': 'FFmpegExtractAudio', 'preferredcodec': 'm4a', }] } with yt_dlp.YoutubeDL(ydl_opts) as ydl: error_code = ydl.download(URLS)
فیلتر کردن ویدیوها
-
import yt_dlp URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4'] def longer_than_a_minute(info, *, incomplete): """Download only videos longer than a minute (or with unknown duration)""" duration = info.get('duration') if duration and duration < 60: return 'The video is too short' ydl_opts = { 'match_filter': longer_than_a_minute, } with yt_dlp.YoutubeDL(ydl_opts) as ydl: error_code = ydl.download(URLS)
افزودن لاگر و قلاب پیشرفت
-
import yt_dlp URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4'] class MyLogger: def debug(self, msg): # For compatibility with youtube-dl, both debug and info are passed into debug # You can distinguish them by the prefix '[debug] ' if msg.startswith('[debug] '): pass else: self.info(msg) def info(self, msg): pass def warning(self, msg): pass def error(self, msg): print(msg) # ℹ️ See "progress_hooks" in help(yt_dlp.YoutubeDL) def my_hook(d): if d['status'] == 'finished': print('Done downloading, now post-processing ...') ydl_opts = { 'logger': MyLogger(), 'progress_hooks': [my_hook], } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(URLS) -
import yt_dlp URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4'] # ℹ️ See help(yt_dlp.postprocessor.PostProcessor) class MyCustomPP(yt_dlp.postprocessor.PostProcessor): def run(self, info): self.to_screen('Doing stuff') return [], info with yt_dlp.YoutubeDL() as ydl: # ℹ️ "when" can take any value in yt_dlp.utils.POSTPROCESS_WHEN ydl.add_post_processor(MyCustomPP(), when='pre_process') ydl.download(URLS)
استفاده از یک انتخابگر قالب سفارشی
-
import yt_dlp URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4'] def format_selector(ctx): """ Select the best video and the best audio that won't result in an mkv. NOTE: This is just an example and does not handle all cases """ # formats are already sorted worst to best formats = ctx.get('formats')[::-1] # acodec='none' means there is no audio best_video = next(f for f in formats if f['vcodec'] != 'none' and f['acodec'] == 'none') # find compatible audio extension audio_ext = {'mp4': 'm4a', 'webm': 'webm'}[best_video['ext']] # vcodec='none' means there is no video best_audio = next(f for f in formats if ( f['acodec'] != 'none' and f['vcodec'] == 'none' and f['ext'] == audio_ext)) # These are the minimum required fields for a merged format yield { 'format_id': f'{best_video["format_id"]}+{best_audio["format_id"]}', 'ext': best_video['ext'], 'requested_formats': [best_video, best_audio], # Must be + separated list of protocols 'protocol': f'{best_video["protocol"]}+{best_audio["protocol"]}' } ydl_opts = { 'format': format_selector, } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(URLS)
تغییرات نسبت به YOUTUBE-DL (CHANGES FROM YOUTUBE-DL)
قابلیتهای جدید
- •
- انشعابیافته از yt-dlc@f9401f2 (https://github.com/blackjack4494/yt-dlc/commit/f9401f2a91987068139c5f757b12fc711d4c0cee) و ادغامشده با youtube-dl@a08f2b7 (https://github.com/ytdl-org/youtube-dl/commit/a08f2b7e4567cdc50c0614ee0a4ffdff49b8b6e6) (موارد استثنا (https://github.com/yt-dlp/yt-dlp/issues/21))
- •
- یکپارچهسازی با SponsorBlock: میتوانید با بهرهگیری از API سرویس SponsorBlock (https://sponsor.ajay.app) بخشهای حامی مالی را در ویدیوهای YouTube علامتگذاری یا حذف کنید
- •
- مرتبسازی قالبها: گزینههای پیشفرض مرتبسازی قالبها تغییر یافتهاند تا تفکیکپذیری (رزولوشن) بالاتر و کدکهای بهتر به جای استفاده صِرف از بیتریت بالاتر ترجیح داده شوند. علاوه بر این، اکنون میتوانید ترتیب مرتبسازی را با استفاده از -S مشخص کنید. این قابلیت انتخاب قالبی بسیار آسانتر از آنچه با استفادهٔ ساده از --format ممکن بود را فراهم میکند (مثالها)
- •
- ادغام با animelover1984/youtube-dl: بیشتر قابلیتها و بهبودها از animelover1984/youtube-dl (https://github.com/animelover1984/youtube-dl) از جمله --write-comments، BiliBiliSearch، BilibiliChannel، جاسازی تصویر بندانگشتی در mp4/ogg/opus، infojson فهرست پخش و غیره را دریافت میکنید. برای جزئیات به #31 (https://github.com/yt-dlp/yt-dlp/pull/31) مراجعه کنید.
- •
- بهبودهای مربوط به YouTube:
- •
- پشتیبانی از Clips، Stories (ytstories:<channel UCID>)، جستجو (شامل فیلترها)*، جستجوی YouTube Music، جستجوی مختص کانال، پیشوند جستجو (ytsearch:)*، میکسها (Mixes) و فیدها (:ytfav، :ytwatchlater، :ytsubs، :ythistory، :ytrec، :ytnotif)
- •
- رفع مشکل محدودسازی سرعت بر پایهٔ n-sig (https://github.com/ytdl-org/youtube-dl/issues/29326) *
- •
- بارگیری پخشهای زنده از ابتدای آن با استفاده از --live-from-start (آزمایشی)
- •
- پیوندهای مربوط به کانالها تمام موارد بارگذاریشده کانال، شامل shorts و live را بارگیری میکنند
- •
- کوکیها از مرورگر: کوکیها میتوانند به طور خودکار از تمامی مرورگرهای وب اصلی با استفاده از --cookies-from-browser BROWSER[+KEYRING][:PROFILE][::CONTAINER] استخراج شوند
- •
- بازه زمانی بارگیری: ویدیوها میتوانند بر اساس برچسبهای زمانی یا فصلها به کمک --download-sections به صورت جزئی بارگیری شوند
- •
- تقسیم ویدیو بر اساس فصلها: ویدیوها را میتوان بر پایهٔ فصلها با استفاده از --split-chapters به چندین فایل تقسیم کرد
- •
- بارگیری قطعات به صورت چندریسمانی: بارگیری موازی چندین قطعه از ویدیوهای m3u8/mpd. از گزینهٔ --concurrent-fragments (-N) برای تعیین تعداد ریسمانهای مورد استفاده بهره بگیرید
- •
- استخراجکنندههای جدید و اصلاحشده: استخراجکنندههای جدید بسیاری افزوده شده و شمار زیادی از موارد پیشین اصلاح شدهاند. گزارش تغییرات (changelog) یا فهرست سایتهای پشتیبانیشده را ببینید
- •
- اپراتورهای چندسیستمی (MSO) جدید: Philo، Spectrum، SlingTV، Cablevision، RCN و غیره.
- •
- استخراج زیرنویس از مانیفستها: زیرنویسها را میتوان از مانیفستهای رسانه جاری استخراج کرد. برای جزئیات به commit/be6202f (https://github.com/yt-dlp/yt-dlp/commit/be6202f12b97858b9d716e608394b51065d0419f) مراجعه کنید
- •
- مسیرها و الگوهای خروجی چندگانه: میتوانید الگوهای خروجی و مسیرهای بارگیری متفاوتی برای انواع گوناگون فایلها تعریف کنید. همچنین میتوانید با --paths (-P) یک مسیر موقت که فایلهای میانی در آن بارگیری شوند مشخص نمایید
- •
- پیکربندی قابلحمل: فایلهای پیکربندی به صورت خودکار از دایرکتوریهای home و root بارگذاری میشوند. برای جزئیات بیشتر CONFIGURATION را ببینید
- •
- بهبودهای الگوی خروجی: الگوهای خروجی اکنون میتوانند شامل قالببندی تاریخ-زمان، آفستهای عددی، پیمایش شیء و غیره باشند. برای جزئیات الگوی خروجی را ببینید. عملیات بسیار پیشرفتهتری نیز به کمک --parse-metadata و --replace-in-metadata قابل انجام است
- •
- سایر گزینههای جدید: گزینههای جدید متعددی افزوده شدهاند از جمله --alias، --print، --concat-playlist، --wait-for-video، --retry-sleep، --sleep-requests، --convert-thumbnails، --force-download-archive، --force-overwrites، --break-match-filters و غیره
- •
- بهبودها: عبارات باقاعده (Regex) و سایر عملگرها در --format/--match-filters، آرگومانهای چندگانه --postprocessor-args و --downloader-args، بررسی سریعتر آرشیو، گزینههای بیشتر گزینش قالب، ادغام چند ویدیو/صدا، چندین --config-locations، اجرای --exec در مراحل مختلف، و غیره
- •
- پلاگینها: امکان بارگذاری استخراجکنندهها و پردازشگرهای پسین از یک فایل خارجی وجود دارد. برای جزئیات بیشتر به بخش plugins مراجعه کنید
- •
- بهروزرسان خودکار: نگارشها را میتوان با yt-dlp -U بهروزرسانی کرد، و در صورت نیاز با استفاده از --update-to به نسخههای پیشین بازگرداند
- •
- ساختهای خودکار: ساختهای nightly/master را میتوان با --update-to nightly و --update-to master به کار برد
برای مشاهدهٔ سیاهه کامل دگرگونیها، changelog یا commitها (https://github.com/yt-dlp/yt-dlp/commits) را ببینید.PP قابلیتهایی که با * علامتگذاری شدهاند به youtube-dl بازپورت (back-port) شدهاند.
تفاوتها در رفتار پیشفرض
برخی از گزینههای پیشفرض yt-dlp با youtube-dl و youtube-dlc متفاوت هستند:
- •
- برنامه yt-dlp تنها از Python 3.10+ پشتیبانی میکند، و همگام با پایان چرخه حیات (EOL) نسخهها، پشتیبانی از آنها را حذف خواهد کرد (https://devguide.python.org/versions/#python-release-cycle)؛ در حالی که youtube-dl همچنان از Python 2.6+ و 3.2+ پشتیبانی میکند (https://github.com/ytdl-org/youtube-dl/issues/30568#issue-1118238743)
- •
- گزینههای --auto-number (-A)، --title (-t) و --literal (-l) دیگر کار نمیکنند. برای جزئیات به بخش گزینههای حذفشده مراجعه کنید
- •
- ابزار avconv به عنوان جایگزینی برای ffmpeg پشتیبانی نمیشود
- •
- برنامه yt-dlp فایلهای پیکربندی را در مکانهایی اندکی متفاوت نسبت به youtube-dl ذخیره میکند. برای فهرست مکانهای صحیح به CONFIGURATION مراجعه کنید
- •
- الگوی خروجی پیشفرض %(title)s [%(id)s].%(ext)s است. دلیل واقعی برای این تغییر وجود ندارد. این تغییر پیش از عمومی شدن yt-dlp انجام شد و اکنون برنامهای برای بازگرداندن آن به %(title)s-%(id)s.%(ext)s وجود ندارد. در عوض، میتوانید از --compat-options filename استفاده کنید
- •
- مرتبسازی پیشفرض قالبها با youtube-dl متفاوت است و تفکیکپذیری بالاتر و کدکهای بهتر را به نرخ بیت بالاتر ترجیح میدهد. میتوانید از گزینهٔ --format-sort برای تغییر آن به هر ترتیبی که ترجیح میدهید استفاده کنید، یا از --compat-options format-sort برای استفاده از ترتیب مرتبسازی youtube-dl بهره ببرید. نسخههای قدیمیتر yt-dlp به دلیل سازگاری گستردهتر، VP9 را ترجیح میدادند؛ میتوانید از --compat-options prefer-vp9-sort برای بازگشت به آن اولویت مرتبسازی قالب استفاده کنید. این دو گزینهٔ سازگاری نمیتوانند با هم استفاده شوند
- •
- انتخابگر قالب پیشفرض bv*+ba/b است. این بدان معناست که اگر یک قالب ترکیبی ویدیو + صدا پیدا شود که بهتر از بهترین قالب فقط-ویدیو باشد، اولی ترجیح داده خواهد شد. برای بازگرداندن این رفتار از -f bv+ba/b یا --compat-options format-spec استفاده کنید
- •
- برخلاف youtube-dlc، برنامه yt-dlp به طور پیشفرض اجازه ادغام چند جریان صوتی/تصویری را در یک فایل نمیدهد (زیرا این کار با استفاده از -f bv*+ba در تداخل است). در صورت نیاز، این قابلیت باید با استفاده از --audio-multistreams و --video-multistreams فعال شود. همچنین میتوانید از --compat-options multistreams برای فعالسازی هر دو استفاده کنید
- •
- گزینهٔ --no-abort-on-error به طور پیشفرض فعال است. به جای آن از --abort-on-error یا --compat-options abort-on-error برای لغو عملیات هنگام بروز خطا استفاده کنید
- •
- هنگام نوشتن فایلهای متادیتا مانند بندانگشتیها، توضیحات یا infojson، همین اطلاعات (در صورت موجود بودن) برای لیستهای پخش نیز نوشته میشود. از --no-write-playlist-metafiles یا --compat-options no-playlist-metafiles برای عدم نگارش این فایلها استفاده کنید
- •
- گزینهٔ --add-metadata هنگامی که همراه با --write-info-json استفاده شود، علاوه بر نوشتن متادیتا، infojson را نیز به فایلهای mkv ضمیمه میکند. برای بازگرداندن این رفتار از --no-embed-info-json یا --compat-options no-attach-info-json استفاده کنید
- •
- هنگام استفاده از --add-metadata در مقایسه با youtube-dl، برخی از متادیتاها در فیلدهای متفاوتی جاسازی میشوند. به طور ویژه، فیلد comment شامل webpage_url و فیلد synopsis شامل description است. میتوانید از --parse-metadata برای تغییر آن به دلخواه خود استفاده کنید یا از --compat-options embed-metadata برای بازگرداندن این رفتار بهره ببرید
- •
- متغیر playlist_index هنگام استفاده با گزینههایی مانند --playlist-reverse و --playlist-items رفتار متفاوتی دارد. برای جزئیات به #302 (https://github.com/yt-dlp/yt-dlp/issues/302) مراجعه کنید. اگر میخواهید رفتار قبلی را حفظ کنید، میتوانید از --compat-options playlist-index استفاده کنید
- •
- خروجی -F در یک قالب جدید فهرست میشود. برای بازگرداندن این رفتار از --compat-options list-formats استفاده کنید
- •
- گفتگوهای زنده (در صورت موجود بودن) به عنوان زیرنویس در نظر گرفته میشوند. برای دانلود تمام زیرنویسها به جز گفتگوی زنده، از --sub-langs all,-live_chat استفاده کنید. همچنین میتوانید از --compat-options no-live-chat برای جلوگیری از دانلود هرگونه live chat/danmaku استفاده کنید
- •
- نشانیهای اینترنتی کانال YouTube تمام ویدیوهای بارگذاریشده کانال را دانلود میکنند. برای دانلود فقط ویدیوهای یک برگه خاص، نشانی برگه مورد نظر را وارد کنید. اگر کانال برگه درخواستی را نمایش ندهد، یک خطا ایجاد خواهد شد. همچنین، نشانیهای /live در صورتی که ویدیوی زندهای وجود نداشته باشد، به جای دانلود بیسروصدای کل کانال، یک خطا ایجاد میکنند. میتوانید از --compat-options no-youtube-channel-redirect برای بازگرداندن تمام این تغییرمسیرها استفاده کنید
- •
- ویدیوهای غیرقابلدسترس نیز برای لیستهای پخش YouTube فهرست میشوند. برای حذف این مورد از --compat-options no-youtube-unavailable-videos استفاده کنید
- •
- تاریخهای بارگذاری استخراجشده از YouTube بر حسب UTC هستند.
- •
- اگر ffmpeg به عنوان دانلودکننده استفاده شود، دانلود و ادغام قالبها در صورت امکان در یک مرحله انجام میشود. برای بازگرداندن این رفتار از --compat-options no-direct-merge استفاده کنید
- •
- جاسازی تصویر بندانگشتی در mp4 در صورت امکان با mutagen انجام میشود. برای اجبار به استفاده از AtomicParsley به جای آن، از --compat-options embed-thumbnail-atomicparsley استفاده کنید
- •
- برخی متادیتاهای داخلی مانند نامفایلها به طور پیشفرض از infojson حذف میشوند. برای بازگرداندن این رفتار از --no-clean-infojson یا --compat-options no-clean-infojson استفاده کنید
- •
- هنگامی که --embed-subs و --write-subs با هم استفاده شوند، زیرنویسها روی دیسک نوشته شده و در فایل رسانه نیز جاسازی میشوند. میتوانید فقط از --embed-subs برای جاسازی زیرنویسها و حذف خودکار فایل جداگانه استفاده کنید. برای اطلاعات بیشتر به #630 (comment) (https://github.com/yt-dlp/yt-dlp/issues/630#issuecomment-893659460) مراجعه کنید. از --compat-options no-keep-subs میتوان برای بازگرداندن این رفتار استفاده کرد
- •
- در صورت نصب بودن، از certifi برای گواهیهای ریشه SSL استفاده خواهد شد. اگر میخواهید از گواهیهای سیستم (مانند خودامضا شده) استفاده کنید، از --compat-options no-certifi استفاده نمایید
- •
- پاکسازی نویسههای نامعتبر در نامفایلها توسط yt-dlp نسبت به youtube-dl متفاوتتر/هوشمندانهتر است. میتوانید از --compat-options filename-sanitization برای بازگشت به رفتار youtube-dl استفاده کنید
- •
- (در حال حاضر پیادهسازی نشده است) [STRIKEOUT:yt-dlp در صورت امکان تلاش میکند خروجیهای دانلودکننده خارجی را به خروجی پیشرفت استاندارد تجزیه کند. میتوانید از --compat-options no-external-downloader-progress برای دریافت خروجی دانلودکننده به همان صورت دستنخورده استفاده کنید]
- •
- نسخههای yt-dlp از 2021.09.01 تا 2022.11.11 (شامل هر دو)، گزینهٔ --match-filters را روی لیستهای پخش تودرتو اعمال میکردند. این یک عارضه جانبی ناخواسته از 8f18ac (https://github.com/yt-dlp/yt-dlp/commit/8f18aca8717bb0dd49054555af8d386e5eda3a88) بود و در d7b460 (https://github.com/yt-dlp/yt-dlp/commit/d7b460d0e5fc710950582baed2e3fc616ed98a80) برطرف شده است. از --compat-options playlist-match-filter برای بازگرداندن این مورد استفاده کنید
- •
- نسخههای yt-dlp از 2021.11.10 تا 2023.06.21 (شامل هر دو)، مقادیر filesize_approx را برای قالبهای تکهتکهشده/مانیفست تخمین میزدند. این امکان برای سهولت در f2fe69 (https://github.com/yt-dlp/yt-dlp/commit/f2fe69c7b0d208bdb1f6292b4ae92bc1e1a7444a) اضافه شد، اما در 0dff8e (https://github.com/yt-dlp/yt-dlp/commit/0dff8e4d1e6e9fb938f4256ea9af7d81f42fd54f) به دلیل عدم دقت بالقوه شدید در مقادیر تخمینی بازگردانده شد. برای ادامه استخراج مقادیر تخمینی از --compat-options manifest-filesize-approx استفاده کنید
- •
- برنامه yt-dlp از backendهای مدرن کلاینت http مانند requests استفاده میکند. از --compat-options prefer-legacy-http-handler استفاده کنید تا استفاده از هندلر قدیمی http (urllib) برای درخواستهای استاندارد http ترجیح داده شود.
- •
- زیرماژولهای swfinterp و casefold حذف شدهاند.
- •
- ارسال --simulate (یا فراخوانی extract_info با download=False) دیگر انتخاب قالب پیشفرض را تغییر نمیدهد. برای جزئیات به #9843 (https://github.com/yt-dlp/yt-dlp/issues/9843) مراجعه کنید.
- •
- برنامه yt-dlp دیگر زمان ویرایش سرور را به طور پیشفرض روی فایلهای دانلودشده اعمال نمیکند. برای بازگرداندن این رفتار از --mtime یا --compat-options mtime-by-default استفاده کنید.
برای راحتی، نامهای مستعار برای گزینههای سازگاری جهت استفاده در دسترس هستند:
- •
- --compat-options all: استفاده از تمام گزینههای سازگاری (از این گزینه استفاده نکنید!).IP • 2 --compat-options youtube-dl: معادل با --compat-options all,-multistreams,-playlist-match-filter,-manifest-filesize-approx,-allow-unsafe-ext,-prefer-vp9-sort,-allow-unsafe-exec-expansion
- •
- --compat-options youtube-dlc: معادل با --compat-options all,-no-live-chat,-no-youtube-channel-redirect,-playlist-match-filter,-manifest-filesize-approx,-allow-unsafe-ext,-prefer-vp9-sort,-allow-unsafe-exec-expansion
- •
- --compat-options 2021: معادل با --compat-options 2022,no-certifi,filename-sanitization
- •
- --compat-options 2022: معادل با --compat-options 2023,playlist-match-filter,no-external-downloader-progress,prefer-legacy-http-handler,manifest-filesize-approx
- •
- --compat-options 2023: معادل با --compat-options 2024,prefer-vp9-sort
- •
- --compat-options 2024: معادل با --compat-options 2025,mtime-by-default
- •
- --compat-options 2025: در حال حاضر کاری انجام نمیدهد. از این گزینه برای فعالسازی همهٔ گزینههای سازگاری آینده استفاده کنید
استفاده از یکی از نامهای مستعار سالانهٔ گزینهٔ سازگاری، رفتار پیشفرض yt-dlp را بر روی آنچه در پایان آن سال تقویمی بوده است، تثبیت میکند.
گزینههای سازگاری زیر، رفتارهای آسیبپذیر پیش از وصلههای امنیتی را بازمیگردانند:
- •
- --compat-options allow-unsafe-ext: اجازه به دانلود فایلها با هر پسوندی (از جمله پسوندهای ناامن) (GHSA-79w7-vh3h-8g4j (https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-79w7-vh3h-8g4j))
:warning: تنها زمانی استفاده کنید که دانلود یک فایل معتبر به این دلیل که پسوند آن نامتعارف تشخیص داده شده، رد شود
این گزینه میتواند امکان اجرای کد از راه دور را فراهم کند! در عوض، باز کردن یک گزارش مشکل (issue) در (https://github.com/yt-dlp/yt-dlp/issues/new/choose) را در نظر بگیرید!
- •
- --compat-options allow-unsafe-exec-expansion: گزینهٔ --exec اجازه میدهد از نحو الگوی خروجی در دستورهای آن استفاده شود؛ با این حال، به دلایل امنیتی تبدیلهایی که میتوان استفاده کرد به i/d (عدد صحیح دهدهی علامتدار)، f (عدد اعشاری ممیز شناور) و q (محصور در نقلقول پوسته) محدود شدهاند. نسخههای yt-dlp از 2021.04.11 تا 2026.03.17 (شامل هر دو) این محدودیت را اعمال نمیکردند. این گزینه این محدودیت را لغو میکند
:warning: این گزینه میتواند امکان اجرای کد از راه دور را فراهم کند! استفاده از تبدیلهای %()q را در الگوهای دستور exec خود برای هر مقدار رشتهای در نظر بگیرید.
گزینههای منسوخشده (Deprecated options)
اینها تمام گزینههای منسوخشده و جایگزین فعلی آنها برای دستیابی به همان نتیجه هستند
گزینههای تقریباً زائد (Almost redundant options)
اگرچه این گزینهها تقریباً مشابه همتایان جدید خود هستند، اما تفاوتهایی وجود دارد که مانع از زائد بودن آنها میشود
-
-j, --dump-json --print "%()j" -F, --list-formats --print formats_table --list-thumbnails --print thumbnails_table --print playlist:thumbnails_table --list-subs --print automatic_captions_table --print subtitles_table
گزینههای زائد (Redundant options)
اگرچه این گزینهها زائد هستند، اما به دلیل سهولت در استفاده، همچنان انتظار میرود که به کار گرفته شوند
-
--get-description --print description --get-duration --print duration_string --get-filename --print filename --get-format --print format --get-id --print id --get-thumbnail --print thumbnail -e, --get-title --print title -g, --get-url --print urls --match-title REGEX --match-filters "title ~= (?i)REGEX" --reject-title REGEX --match-filters "title !~= (?i)REGEX" --min-views COUNT --match-filters "view_count >=? COUNT" --max-views COUNT --match-filters "view_count <=? COUNT" --break-on-reject Use --break-match-filters --user-agent UA --add-headers "User-Agent:UA" --referer URL --add-headers "Referer:URL" --playlist-start NUMBER -I NUMBER: --playlist-end NUMBER -I :NUMBER --playlist-reverse -I ::-1 --no-playlist-reverse Default --no-colors --color no_color
اگرچه این گزینهها همچنان کار میکنند، استفاده از آنها توصیه نمیشود زیرا جایگزینهای دیگری برای دستیابی به همین هدف وجود دارد.
-
--force-generic-extractor --ies generic,default --exec-before-download CMD --exec "before_dl:CMD" --no-exec-before-download --no-exec --all-formats -f all --all-subs --sub-langs all --write-subs --print-json -j --no-simulate --autonumber-size NUMBER استفاده از قالببندی رشته، مثلاً %(autonumber)03d --autonumber-start NUMBER استفاده از قالببندی داخلی فیلد مانند %(autonumber+NUMBER)s --id -o "%(id)s.%(ext)s" --metadata-from-title FORMAT --parse-metadata "%(title)s:FORMAT" --hls-prefer-native --downloader "m3u8:native" --hls-prefer-ffmpeg --downloader "m3u8:ffmpeg" --list-formats-old --compat-options list-formats (نام مستعار: --no-list-formats-as-table) --list-formats-as-table --compat-options -list-formats [پیشفرض] --geo-bypass --xff "default" --no-geo-bypass --xff "never" --geo-bypass-country CODE --xff CODE --geo-bypass-ip-block IP_BLOCK --xff IP_BLOCK
گزینههای توسعهدهنده
این گزینهها برای استفاده توسط کاربر نهایی در نظر گرفته نشدهاند.
-
--test بارگیری تنها بخشی از ویدیو جهت آزمایش استخراجکنندهها --load-pages بارگذاری صفحههای ذخیرهشده توسط --write-pages --allow-unplayable-formats فهرست کردن فرمتهای غیرقابلپخش نیز --no-allow-unplayable-formats پیشفرض
نامهای مستعار قدیمی
اینها نامهای مستعاری هستند که بنا به دلایل مختلف دیگر مستندسازی نمیشوند.
-
--clean-infojson --clean-info-json --force-write-download-archive --force-write-archive --no-clean-infojson --no-clean-info-json --no-split-tracks --no-split-chapters --no-write-srt --no-write-subs --prefer-unsecure --prefer-insecure --rate-limit RATE --limit-rate RATE --split-tracks --split-chapters --srt-lang LANGS --sub-langs LANGS --trim-file-names LENGTH --trim-filenames LENGTH --write-srt --write-subs --yes-overwrites --force-overwrites
گزینههای Sponskrub
پشتیبانی از SponSkrub (https://github.com/faissaloo/SponSkrub) به نفع گزینههای --sponsorblock حذف شده است.
-
--sponskrub --sponsorblock-mark all --no-sponskrub --no-sponsorblock --sponskrub-cut --sponsorblock-remove all --no-sponskrub-cut --sponsorblock-remove -all --sponskrub-force کاربرد ندارد --no-sponskrub-force کاربرد ندارد --sponskrub-location کاربرد ندارد --sponskrub-args کاربرد ندارد
دیگر پشتیبانی نمیشود
این گزینهها ممکن است دیگر مطابق انتظار کار نکنند.
-
--prefer-avconv avconv بهطور رسمی توسط yt-dlp پشتیبانی نمیشود (نام مستعار: --no-prefer-ffmpeg) --prefer-ffmpeg پیشفرض (نام مستعار: --no-prefer-avconv) -C, --call-home پیادهسازی نشده است --no-call-home پیشفرض --include-ads دیگر پشتیبانی نمیشود --no-include-ads پیشفرض --write-annotations اکنون هیچ سایت پشتیبانیشدهای حاشیهنویسی ندارد --no-write-annotations پیشفرض --avconv-location نام مستعار حذفشده برای --ffmpeg-location --cn-verification-proxy URL نام مستعار حذفشده برای --geo-verification-proxy URL --dump-headers نام مستعار حذفشده برای --print-traffic --dump-intermediate-pages نام مستعار حذفشده برای --dump-pages --youtube-skip-dash-manifest نام مستعار حذفشده برای --extractor-args "youtube:skip=dash" (نام مستعار: --no-youtube-include-dash-manifest) --youtube-skip-hls-manifest نام مستعار حذفشده برای --extractor-args "youtube:skip=hls" (نام مستعار: --no-youtube-include-hls-manifest) --youtube-include-dash-manifest پیشفرض (نام مستعار: --no-youtube-skip-dash-manifest) --youtube-include-hls-manifest پیشفرض (نام مستعار: --no-youtube-skip-hls-manifest) --youtube-print-sig-code قابلیت آزمایشی حذفشده --dump-user-agent دیگر پشتیبانی نمیشود --xattr-set-filesize دیگر پشتیبانی نمیشود --compat-options seperate-video-versions دیگر نیازی به آن نیست --compat-options no-youtube-prefer-utc-upload-date دیگر پشتیبانی نمیشود
این گزینهها از سال ۲۰۱۴ منسوخ شده بودند و اکنون بهطور کامل حذف شدهاند.
-
-A, --auto-number -o "%(autonumber)s-%(id)s.%(ext)s" -t, -l, --title, --literal -o "%(title)s-%(id)s.%(ext)s"
مشارکت (CONTRIBUTING)
برای دستورالعملهای باز کردن گزارش مشکل (Opening an Issue) و مشارکت در کد پروژه، فایل CONTRIBUTING.md را ببینید.
ویکی (WIKI)
برای اطلاعات بیشتر، به ویکی (https://github.com/yt-dlp/yt-dlp/wiki) مراجعه کنید.