'\" t .\" Automatically generated by Pandoc 3.1.3 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. .ie "\f[CB]x\f[]"x" \{\ . ftr V B . ftr VI BI . ftr VB B . ftr VBI BI .\} .el \{\ . ftr V CR . ftr VI CI . ftr VB CB . ftr VBI CBI .\} .TH "yt-dlp" "1" "" "" "" .hy .SH "نام (NAME)" .PP yt-dlp \- یک دانلودکننده صوتی/تصویری خط فرمان با امکانات فراوان .SH "خلاصه دستور (SYNOPSIS)" .PP \f[B]yt-dlp\f[R] [OPTIONS] URL [URL...] .SH "توضیحات (DESCRIPTION)" .PP دستور yt-dlp یک دانلودکننده صوتی/تصویری خط فرمان با امکانات فراوان است که از هزاران وب‌گاه پشتیبانی می‌کند. این پروژه یک انشعاب از youtube-dl (https://github.com/ytdl-org/youtube-dl) بر پایه پروژه اکنون غیرفعال youtube-dlc (https://github.com/blackjack4494/yt-dlc) است. .SH "گزینه‌ها (OPTIONS)" .SS گزینه‌های عمومی (General Options): .TP -h, --help چاپ این متن راهنما و خروج .TP --version چاپ نسخه برنامه و خروج .TP -U, --update بروزرسانی این برنامه به آخرین نسخه .TP --no-update بررسی نکردن برای بروزرسانی‌ها (پیش‌فرض) .TP --update-to \f[I][CHANNEL]\[at][TAG]\f[R] ارتقا یا تنزل نسخه به یک نگارش مشخص. CHANNEL می‌تواند یک مخزن نیز باشد. در صورت عدم تعیین، CHANNEL و TAG به‌ترتیب پیش‌فرض \[dq]stable\[dq] و \[dq]latest\[dq] خواهند بود؛ برای جزئیات به \[dq]UPDATE\[dq] مراجعه کنید. کانال‌های پشتیبانی‌شده: stable، nightly، master .TP -i, --ignore-errors نادیده‌گرفتن خطاهای دانلود و پس‌پردازش. دانلود حتی در صورت شکست در پس‌پردازش نیز موفقیت‌آمیز در نظر گرفته خواهد شد .TP --no-abort-on-error ادامه با ویدئوی بعدی در صورت بروز خطای دانلود؛ برای مثال جهت پرش از ویدئوهای ناموجود در یک فهرست پخش (پیش‌فرض) .TP --abort-on-error متوقف کردن دانلود ویدئوهای بعدی در صورت بروز خطا (نام مستعار: --no-ignore-errors) .TP --list-extractors فهرست کردن تمام استخراج‌کننده‌های پشتیبانی‌شده و خروج .TP --extractor-descriptions نمایش توضیحات تمام استخراج‌کننده‌های پشتیبانی‌شده و خروج .TP --use-extractors \f[I]NAMES\f[R] نام‌های استخراج‌کننده مورد استفاده که با کاما از هم جدا شده‌اند. همچنین می‌توانید از عبارات باقاعده (regexes)، \[dq]all\[dq]، \[dq]default\[dq] و \[dq]end\[dq] (پایان تطبیق نشانی وب) استفاده کنید؛ برای مثال: --ies \[dq]holodex.*,end,youtube\[dq]. برای استثنا کردن یک نام، پیشوند \[dq]-\[dq] را به آن بیفزایید، مانند: --ies default,-generic. از --list-extractors برای مشاهده فهرست نام‌های استخراج‌کننده استفاده کنید. (نام مستعار: --ies) .TP --default-search \f[I]PREFIX\f[R] استفاده از این پیشوند برای نشانی‌های وب فاقد پیشوند (unqualified). برای مثال: \[dq]gvsearch2:python\[dq] دو ویدئو را از google videos برای عبارت جستجوی \[dq]python\[dq] دانلود می‌کند. از مقدار \[dq]auto\[dq] برای حدس زدن توسط yt-dlp استفاده کنید (\[dq]auto_warning\[dq] برای نمایش هشدار هنگام حدس زدن). مقدار \[dq]error\[dq] صرفاً یک خطا برمی‌گرداند. مقدار پیش‌فرض \[dq]fixup_error\[dq] نشانی‌های وب خراب را اصلاح می‌کند، اما اگر این کار ممکن نباشد به‌جای جستجو خطا صادر می‌کند .TP --ignore-config عدم بارگذاری هیچ فایل پیکربندی دیگری به جز فایل‌های داده‌شده به --config-locations. برای سازگاری رو به عقب، اگر این گزینه درون فایل پیکربندی سیستم یافت شود، پیکربندی کاربر بارگذاری نخواهد شد. (نام مستعار: --no-config) .TP --no-config-locations عدم بارگذاری هیچ‌گونه فایل پیکربندی سفارشی (پیش‌فرض). هنگامی که درون یک فایل پیکربندی داده شود، تمام مقادیر قبلی --config-locations تعریف‌شده در فایل فعلی نادیده گرفته می‌شوند .TP --config-locations \f[I]PATH\f[R] مکان فایل پیکربندی اصلی؛ یا مسیر فایل پیکربندی یا دایرکتوری دربرگیرنده آن (\[dq]-\[dq] برای stdin). می‌تواند چندین بار و درون سایر فایل‌های پیکربندی استفاده شود .TP --plugin-dirs \f[I]DIR\f[R] مسیر یک دایرکتوری اضافی برای جستجوی افزونه‌ها. این گزینه می‌تواند چندین بار برای افزودن چندین دایرکتوری استفاده شود. از \[dq]default\[dq] برای جستجوی دایرکتوری‌های پیش‌فرض افزونه‌ها استفاده کنید (پیش‌فرض) .TP --no-plugin-dirs پاک کردن دایرکتوری‌های جستجوی افزونه، شامل دایرکتوری‌های پیش‌فرض و مواردی که با گزینه‌های قبلی --plugin-dirs مشخص شده‌اند .TP --js-runtimes \f[I]RUNTIME[:PATH]\f[R] محیط اجرای جاوااسکریپت اضافی جهت فعال‌سازی، همراه با مکان اختیاری برای آن محیط اجرا (مسیر فایل اجرایی یا دایرکتوری دربرگیرنده آن). این گزینه می‌تواند چندین بار برای فعال‌سازی چندین محیط اجرا استفاده شود. محیط‌های اجرای پشتیبانی‌شده عبارتند از (به ترتیب اولویت، از بالاترین به پایین‌ترین): deno، node، quickjs، bun. تنها \[dq]deno\[dq] به‌طور پیش‌فرض فعال است. محیط اجرایی با بالاترین اولویت که هم فعال و هم در دسترس باشد استفاده خواهد شد. برای استفاده از یک محیط اجرای با اولویت پایین‌تر در زمان در دسترس بودن \[dq]deno\[dq]، باید قبل از فعال‌سازی سایر محیط‌های اجرا، --no-js-runtimes ارسال شود .TP --no-js-runtimes پاک کردن محیط‌های اجرای جاوااسکریپت جهت فعال‌سازی، شامل موارد پیش‌فرض و موارد ارائه‌شده با گزینه‌های قبلی --js-runtimes .TP --remote-components \f[I]COMPONENT\f[R] مؤلفه‌های راه دور مجاز برای واکشی توسط yt-dlp در صورت نیاز. اگر از یک فایل اجرایی رسمی استفاده می‌کنید یا نسخه مورد نیاز بسته yt-dlp-ejs را نصب کرده‌اید، در حال حاضر نیازی به این گزینه نیست. می‌توانید از این گزینه چندین بار برای مجاز کردن چندین مؤلفه استفاده کنید. مقادیر پشتیبانی‌شده: ejs:npm (مؤلفه‌های جاوااسکریپت خارجی از npm)، ejs:github (مؤلفه‌های جاوااسکریپت خارجی از گیت‌هاب yt-dlp-ejs). به‌طور پیش‌فرض، هیچ مؤلفه راه دوری مجاز نیست .TP --no-remote-components غیرمجاز کردن واکشی همه مؤلفه‌های راه دور، از جمله مواردی که قبلاً با --remote-components یا مقادیر پیش‌فرض مجاز شده‌اند. .TP --flat-playlist استخراج نکردن ورودی‌های نتیجه نشانی وب فهرست پخش؛ ممکن است برخی از فراداده‌های ورودی موجود نباشند و دانلود نادیده گرفته شود .TP --no-flat-playlist استخراج کامل ویدئوهای یک فهرست پخش (پیش‌فرض) .TP --live-from-start دانلود پخش‌های زنده از ابتدا. در حال حاضر آزمایشی است و تنها برای YouTube، Twitch، TVer و mellow-fan پشتیبانی می‌شود .TP --no-live-from-start دانلود پخش‌های زنده از زمان فعلی (پیش‌فرض) .TP --wait-for-video \f[I]MIN[-MAX]\f[R] انتظار برای در دسترس قرار گرفتن پخش‌های برنامه‌ریزی‌شده. حداقل تعداد ثانیه‌ها (یا بازه‌ای) را برای انتظار میان تلاش‌های مجدد ارسال کنید .TP --no-wait-for-video عدم انتظار برای پخش‌های برنامه‌ریزی‌شده (پیش‌فرض) .TP --mark-watched علامت‌گذاری ویدئوها به عنوان دیده‌شده (حتی همراه با --simulate) .TP --no-mark-watched علامت نزدن ویدئوها به عنوان دیده‌شده (پیش‌فرض) .TP --color \f[I][STREAM:]POLICY\f[R] انتشار یا عدم انتشار کدهای رنگ در خروجی، همراه با پیشوند اختیاری STREAM (به صورت stdout یا stderr) جهت اعمال تنظیم روی آن. می‌تواند یکی از مقادیر \[dq]always\[dq]، \[dq]auto\[dq] (پیش‌فرض)، \[dq]never\[dq] یا \[dq]no_color\[dq] (استفاده از توالی‌های ترمینال غیررنگی) باشد. از \[dq]auto-tty\[dq] یا \[dq]no_color-tty\[dq] برای تصمیم‌گیری صرفاً بر اساس پشتیبانی ترمینال استفاده کنید. می‌تواند چندین بار استفاده شود.TP --compat-options \f[I]OPTS\f[R] گزینه‌هایی که می‌توانند با بازگرداندن برخی از تغییرات اعمال‌شده در yt-dlp، به حفظ سازگاری با پیکربندی‌های youtube-dl یا youtube-dlc کمک کنند. برای جزئیات بیشتر به بخش \[dq]Differences in default behavior\[dq] مراجعه کنید. .TP --alias \f[I]ALIASES OPTIONS\f[R] ایجاد نام‌های مستعار (alias) برای یک رشته گزینه. مگر در حالتی که نام مستعار با خط تیره \[dq]-\[dq] آغاز شود، در غیر این صورت پیشوند \[dq]--\[dq] به آن اضافه می‌شود. آرگومان‌ها بر اساس ریززبان قالب‌بندی رشته پایتون (Python string formatting mini-language) تجزیه می‌شوند. برای مثال: --alias get-audio,-X \[dq]-S aext:{0},abr -x --audio-format {0}\[dq] گزینه‌های \[dq]--get-audio\[dq] و \[dq]-X\[dq] را ایجاد می‌کند که یک آرگومان (ARG0) می‌گیرند و به \[dq]-S aext:ARG0,abr -x --audio-format ARG0\[dq] بسط می‌یابند. تمام نام‌های مستعار تعریف‌شده در خروجی --help فهرست می‌شوند. گزینه‌های نام مستعار می‌توانند نام‌های مستعار دیگری را فراخوانی کنند؛ بنابراین مراقب باشید از تعریف گزینه‌های بازگشتی خودداری کنید. به عنوان یک تدبیر ایمنی، هر نام مستعار حداکثر ۱۰۰ بار می‌تواند فراخوانی شود. این گزینه می‌تواند چندین بار استفاده شود. .TP -t, --preset-alias \f[I]PRESET\f[R] مجموعه‌ای از پیش‌تعریف‌شده از گزینه‌ها را اعمال می‌کند. برای مثال: --preset-alias mp3. پیش‌تنظیم‌های زیر در دسترس هستند: mp3، aac، mp4، mkv، sleep. برای اطلاعات بیشتر بخش \[dq]Preset Aliases\[dq] را در انتها ببینید. این گزینه می‌تواند چندین بار استفاده شود. .SS "گزینه‌های شبکه (Network Options):" .TP --proxy \f[I]URL\f[R] استفاده از پیشکار (پروکسی) مشخص‌شده HTTP/HTTPS/SOCKS. برای فعال‌سازی پیشکار SOCKS، یک طرح‌واره (scheme) مناسب تعیین کنید، برای مثال: socks5://user:pass\[at]127.0.0.1:1080/. برای اتصال مستقیم، یک رشته خالی (--proxy \[dq]\[dq]) ارسال کنید. .TP --socket-timeout \f[I]SECONDS\f[R] مدت زمان انتظار پیش از صرف‌نظر کردن، بر حسب ثانیه. .TP --source-address \f[I]IP\f[R] نشانی IP سمت کلاینت برای اتصال به آن (bind). .TP --impersonate \f[I]CLIENT[:OS]\f[R] کلاینتی که برای درخواست‌ها باید جعل هویت شود (impersonate). برای مثال: chrome، chrome-110، chrome:windows-10. برای جعل هر کلاینتی، مقدار --impersonate=\[dq]\[dq] را ارسال کنید. توجه داشته باشید که اجبار جعل هویت برای تمام درخواست‌ها ممکن است تأثیر مخربی بر سرعت بارگیری و پایداری داشته باشد. .TP --list-impersonate-targets فهرست کردن کلاینت‌های موجود برای جعل هویت. .TP -4, --force-ipv4 برقراری تمام اتصالات از طریق IPv4. .TP -6, --force-ipv6 برقراری تمام اتصالات از طریق IPv6. .TP --enable-file-urls فعال‌سازی نشانی‌های وب file://. این مورد به دلایل امنیتی به‌طور پیش‌فرض غیرفعال است. .SS "محدودیت جغرافیایی (Geo-restriction):" .TP --geo-verification-proxy \f[I]URL\f[R] استفاده از این پیشکار (پروکسی) برای تأیید نشانی IP در برخی از سایت‌های دارای محدودیت جغرافیایی. پیشکار پیش‌فرض مشخص‌شده توسط --proxy (یا در صورت عدم وجود این گزینه، هیچ‌کدام) برای بارگیری واقعی استفاده می‌شود. .TP --xff \f[I]VALUE\f[R] نحوه جعل سرایند HTTP با عنوان X-Forwarded-For به منظور تلاش برای دور زدن محدودیت‌های جغرافیایی. یکی از مقادیر \[dq]default\[dq] (تنها زمانی که مفید بودن آن مشخص باشد)، \[dq]never\[dq]، یک بلوک IP با نمادگذاری CIDR، یا یک کد کشور دو حرفی بر اساس استاندارد ISO 3166-2. .SS "انتخاب ویدیو (Video Selection):" .TP -I, --playlist-items \f[I]ITEM_SPEC\f[R] شناسه‌های playlist_index جداشده با کاما از مواردی که باید بارگیری شوند. می‌توانید یک محدوده را با استفاده از \[dq][START]:[STOP][:STEP]\[dq] تعیین کنید. برای سازگاری با نسخه‌های پیشین، START-STOP نیز پشتیبانی می‌شود. از نمایه‌های منفی برای شمارش از راست و از STEP منفی برای بارگیری به ترتیب معکوس استفاده کنید. برای مثال: دستور \[dq]-I 1:3,7,-5::2\[dq] روی یک لیست پخش با اندازه ۱۵، موارد موجود در نمایه‌های 1,2,3,7,11,13,15 را بارگیری خواهد کرد. .TP --min-filesize \f[I]SIZE\f[R] لغو بارگیری در صورتی که اندازه فایل کوچک‌تر از SIZE باشد، برای مثال: 50k یا 44.6M. .TP --max-filesize \f[I]SIZE\f[R] لغو بارگیری در صورتی که اندازه فایل بزرگ‌تر از SIZE باشد، برای مثال: 50k یا 44.6M. .TP --date \f[I]DATE\f[R] تنها بارگیری ویدیوهایی که در این تاریخ بارگذاری شده‌اند. تاریخ می‌تواند \[dq]YYYYMMDD\[dq] یا در قالب [now|today|yesterday][-N[day|week|month|year]] باشد. برای مثال: \[dq]--date today-2weeks\[dq] تنها ویدیوهایی را بارگیری می‌کند که دقیقاً در همان روزِ دو هفته پیش بارگذاری شده‌اند. .TP --datebefore \f[I]DATE\f[R] تنها بارگیری ویدیوهایی که در این تاریخ یا پیش از آن بارگذاری شده‌اند. قالب‌های تاریخ پذیرفته‌شده مشابه --date هستند. .TP --dateafter \f[I]DATE\f[R] تنها بارگیری ویدیوهایی که در این تاریخ یا پس از آن بارگذاری شده‌اند. قالب‌های تاریخ پذیرفته‌شده مشابه --date هستند. .TP --match-filters \f[I]FILTER\f[R] فیلتر عمومی ویدیو. هر فیلد \[dq]OUTPUT TEMPLATE\[dq] می‌تواند با استفاده از عملگرهای تعریف‌شده در \[dq]Filtering Formats\[dq] با یک عدد یا یک رشته مقایسه شود. همچنین می‌توانید به سادگی یک فیلد را مشخص کنید تا در صورت وجود فیلد مطابقت داده شود، از \[dq]!field\[dq] برای بررسی عدم وجود فیلد و از \[dq]&\[dq] برای بررسی چندین شرط استفاده کنید. در صورت نیاز، از \[dq]\[dq] برای گریز دادن (escape) \[dq]&\[dq] یا علامت‌های نقل‌قول استفاده کنید. در صورت استفاده چندباره، فیلتر در صورتی مطابقت داده می‌شود که حداقل یکی از شرایط برآورده شود. برای مثال: --match-filters !is_live --match-filters \[dq]like_count>?100 & description\[ti]=\[aq](?i)& dogs\[dq] تنها با ویدیوهایی مطابقت دارد که پخش زنده نیستند یا ویدیوهایی که تعداد پسندهای (like) آن‌ها بیش از ۱۰۰ است (یا فیلد like در دسترس نیست) و همچنین دارای توضیحاتی هستند که عبارت \[dq]cats & dogs\[dq] را در بر دارد (بدون حساسیت به بزرگی و کوچکی حروف). از \[dq]--match-filters -\[dq] برای پرسش تعاملی در مورد بارگیری هر ویدیو استفاده کنید. .TP --no-match-filters عدم استفاده از هیچ‌گونه --match-filters (پیش‌فرض). .TP --break-match-filters \f[I]FILTER\f[R] مشابه \[dq]--match-filters\[dq]، اما با رد شدن یک ویدیو فرآیند بارگیری را متوقف می‌کند. .TP --no-break-match-filters عدم استفاده از هیچ‌گونه --break-match-filters (پیش‌فرض). .TP --no-playlist در صورتی که نشانی وب هم به یک ویدیو و هم به یک لیست پخش اشاره کند، تنها ویدیو را بارگیری می‌کند. .TP --yes-playlist در صورتی که نشانی وب هم به یک ویدیو و هم به یک لیست پخش اشاره کند، لیست پخش را بارگیری می‌کند. .TP --age-limit \f[I]YEARS\f[R] تنها بارگیری ویدیوهای مناسب برای رده سنی مشخص‌شده. .TP --download-archive \f[I]FILE\f[R] تنها بارگیری ویدیوهایی که در فایل بایگانی (archive) فهرست نشده‌اند. شناسه‌های (ID) تمام ویدیوهای بارگیری‌شده در آن ثبت می‌شوند. .TP --no-download-archive عدم استفاده از فایل بایگانی (پیش‌فرض). .TP --max-downloads \f[I]NUMBER\f[R] توقف عملیات پس از بارگیری NUMBER فایل. .TP --break-on-existing متوقف کردن فرآیند بارگیری هنگام مواجهه با فایلی که در بایگانی مشخص‌شده با گزینه --download-archive موجود باشد. .TP --no-break-on-existing عدم توقف فرآیند بارگیری هنگام مواجهه با فایلی که در بایگانی موجود است (پیش‌فرض). .TP --break-per-input گزینه‌های --max-downloads، --break-on-existing، --break-match-filters و autonumber را به گونه‌ای تغییر می‌دهد که به ازای هر نشانی وب ورودی بازنشانی شوند. .TP --no-break-per-input گزینه --break-on-existing و گزینه‌های مشابه کل صف بارگیری را پایان می‌دهند. .TP --skip-playlist-after-errors \f[I]N\f[R] تعداد خطاهای مجاز تا زمانی که از باقی‌مانده لیست پخش صرف‌نظر شود..SS گزینه‌های بارگیری (Download Options): .TP -N, --concurrent-fragments \f[I]N\f[R] تعداد قطعات یک ویدیوی dash/hlsnative که باید به‌طور هم‌زمان بارگیری شوند (پیش‌فرض 1 است) .TP -r, --limit-rate \f[I]RATE\f[R] حداکثر نرخ بارگیری به بایت بر ثانیه، به عنوان مثال 50K یا 4.2M .TP --throttled-rate \f[I]RATE\f[R] حداقل نرخ بارگیری به بایت بر ثانیه که اگر سرعت از آن کمتر شود، محدودسازی سرعت (throttling) فرض شده و داده‌های ویدیو مجدداً استخراج می‌شوند؛ به عنوان مثال 100K .TP -R, --retries \f[I]RETRIES\f[R] تعداد دفعات تلاش مجدد (پیش‌فرض 10 است)، یا \[dq]infinite\[dq] (نامحدود) .TP --file-access-retries \f[I]RETRIES\f[R] تعداد دفعات تلاش مجدد در صورت بروز خطای دسترسی به فایل (پیش‌فرض 3 است)، یا \[dq]infinite\[dq] .TP --fragment-retries \f[I]RETRIES\f[R] تعداد دفعات تلاش مجدد برای یک قطعه (پیش‌فرض 10 است)، یا \[dq]infinite\[dq] (برای DASH، hlsnative و ISM) .TP --retry-sleep \f[I][TYPE:]EXPR\f[R] زمان توقف بین تلاش‌های مجدد به ثانیه که به‌طور اختیاری نوع تلاش مجدد (شامل 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 .TP --skip-unavailable-fragments نادیده گرفتن قطعات غیرقابل دسترس برای بارگیری‌های DASH، hlsnative و ISM (پیش‌فرض) (نام مستعار: --no-abort-on-unavailable-fragments) .TP --abort-on-unavailable-fragments توقف بارگیری در صورت در دسترس نبودن یک قطعه (نام مستعار: --no-skip-unavailable-fragments) .TP --keep-fragments نگه‌داشتن قطعات بارگیری‌شده روی دیسک پس از اتمام بارگیری .TP --no-keep-fragments حذف قطعات بارگیری‌شده پس از اتمام بارگیری (پیش‌فرض) .TP --buffer-size \f[I]SIZE\f[R] اندازه بافر بارگیری، به عنوان مثال 1024 یا 16K (پیش‌فرض 1024 است) .TP --resize-buffer تغییر خودکار اندازه بافر بر پایه مقدار اولیه --buffer-size (پیش‌فرض) .TP --no-resize-buffer عدم تنظیم خودکار اندازه بافر .TP --http-chunk-size \f[I]SIZE\f[R] اندازه هر تکه برای بارگیری تکه‌ای از طریق HTTP، به عنوان مثال 10485760 یا 10M (پیش‌فرض غیرفعال است). ممکن است برای دور زدن محدودیت پهنای باند اعمال‌شده از سوی وب‌سرور مفید باشد (آزمایشی) .TP --playlist-random بارگیری ویدیوهای لیست پخش با ترتیب تصادفی .TP --lazy-playlist پردازش ورودی‌های لیست پخش به محض دریافت آن‌ها. این گزینه n_entries، --playlist-random و --playlist-reverse را غیرفعال می‌کند .TP --no-lazy-playlist پردازش ویدیوهای لیست پخش تنها پس از تحلیل کامل کل لیست پخش (پیش‌فرض) .TP --hls-use-mpegts استفاده از کانتینر mpegts برای ویدیوهای HLS؛ به برخی پخش‌کننده‌ها امکان می‌دهد ویدیو را در حین بارگیری پخش کنند و همچنین در صورت قطع بارگیری، احتمال خرابی فایل را کاهش می‌دهد. این گزینه به‌طور پیش‌فرض برای پخش‌های زنده فعال است .TP --no-hls-use-mpegts عدم استفاده از کانتینر mpegts برای ویدیوهای HLS. این حالت هنگام بارگیری ویدیوهای غیرزنده پیش‌فرض است .TP --download-sections \f[I]REGEX\f[R] بارگیری تنها بخش‌هایی (chapters) که با عبارت باقاعده مطابقت دارند. پیشوند \[dq]*\[dq] به جای فصل، نمایانگر محدوده زمانی است. ممهرهای زمانی منفی از انتها محاسبه می‌شوند. از \[dq]*from-url\[dq] می‌توان برای بارگیری بین مقادیر \[dq]start_time\[dq] و \[dq]end_time\[dq] استخراج‌شده از URL استفاده کرد. به ffmpeg نیاز دارد. این گزینه می‌تواند چندین بار برای بارگیری چند بخش مجزا استفاده شود؛ به عنوان مثال: --download-sections \[dq]*10:15-inf\[dq] --download-sections \[dq]intro\[dq] .TP --downloader \f[I][PROTO:]NAME\f[R] نام یا مسیر بارگیرنده خارجی مورد استفاده، که به‌طور اختیاری پروتکل‌های هدف (http، ftp، m3u8، dash، rtmp) به عنوان پیشوند به آن اضافه می‌شوند. در حال حاضر از native، aria2c، axel، curl، ffmpeg، httpie و wget پشتیبانی می‌کند. می‌توانید از این گزینه چندین بار برای تعیین بارگیرنده‌های مختلف برای پروتکل‌های گوناگون استفاده کنید. به عنوان مثال: --downloader aria2c --downloader \[dq]dash,m3u8:native\[dq] از aria2c برای بارگیری‌های http/ftp و از بارگیرنده داخلی (native) برای بارگیری‌های dash/m3u8 استفاده خواهد کرد (نام مستعار: --external-downloader) .TP --downloader-args \f[I]NAME:ARGS\f[R] ارسال این آرگومان‌ها به بارگیرنده خارجی. نام بارگیرنده و آرگومان‌ها با دونقطه \[dq]:\[dq] از یکدیگر جدا می‌شوند. برای ffmpeg، آرگومان‌ها را می‌توان با همان ساختار نوشتاری --postprocessor-args به موقعیت‌های مختلف ارسال کرد. می‌توانید از این گزینه چندین بار برای ارسال آرگومان‌های گوناگون به بارگیرنده‌های مختلف استفاده کنید (نام مستعار: --external-downloader-args).SS گزینه‌های سیستم‌فایل: .TP -a, --batch-file \f[I]FILE\f[R] فایلی شامل نشانی‌های وب (URL) برای بارگیری (\[dq]-\[dq] برای stdin)، یک URL در هر سطر. سطرهایی که با \[dq]#\[dq]، \[dq];\[dq] یا \[dq]]\[dq] آغاز شوند، یادداشت (کامنت) در نظر گرفته شده و نادیده گرفته می‌شوند. .TP --no-batch-file عدم خواندن نشانی‌های وب از فایل دسته‌ای (پیش‌فرض) .TP -P, --paths \f[I][TYPES:]PATH\f[R] مسیرهایی که فایل‌ها باید در آنجا بارگیری شوند. نوع فایل و مسیر را با استفاده از دونقطه (\[dq]:\[dq]) مشخص و جدا کنید. تمام انواعی که در TYPES برای --output مشخص شده‌اند پشتیبانی می‌شوند. علاوه بر این، می‌توانید مسیرهای \[dq]home\[dq] (پیش‌فرض) و \[dq]temp\[dq] را نیز مشخص کنید. همه فایل‌های موقت ابتدا در مسیر temp بارگیری شده و پس از پایان بارگیری، فایل‌های نهایی به مسیر home منتقل می‌شوند. اگر --output یک مسیر مطلق باشد، این گزینه نادیده گرفته می‌شود. .TP -o, --output \f[I][TYPES:]TEMPLATE\f[R] قالب نام فایل خروجی؛ برای جزئیات به بخش \[dq]OUTPUT TEMPLATE\[dq] مراجعه کنید .TP --output-na-placeholder \f[I]TEXT\f[R] جانگهدار برای فیلدهای غیرقابل دسترس در --output (پیش‌فرض: \[dq]NA\[dq]) .TP --restrict-filenames محدود کردن نام‌ فایل‌ها تنها به نویسه‌های ASCII و اجتناب از \[dq]&\[dq] و فاصله‌ها در نام فایل .TP --no-restrict-filenames مجاز بودن نویسه‌های یونیکد، \[dq]&\[dq] و فاصله‌ها در نام فایل‌ها (پیش‌فرض) .TP --windows-filenames اجبار نام فایل‌ها به سازگاری با Windows .TP --no-windows-filenames پالایش حداقلی نام فایل‌ها .TP --trim-filenames \f[I]LENGTH\f[R] محدود کردن طول نام فایل (بدون احتساب پسوند) به تعداد نویسه‌های مشخص‌شده .TP -w, --no-overwrites هیچ فایلی بازنویسی نشود .TP --force-overwrites بازنویسی همه فایل‌های ویدیو و فراداده (متادیتا). این گزینه شامل --no-continue نیز می‌شود .TP --no-force-overwrites ویدیو بازنویسی نشود، اما فایل‌های مرتبط بازنویسی شوند (پیش‌فرض) .TP -c, --continue ادامه بارگیری فایل‌ها/بخش‌های ناقص بارگیری‌شده (پیش‌فرض) .TP --no-continue عدم ادامه بارگیری قطعات ناقص. اگر فایل قطعه‌بندی نشده باشد، بارگیری کل فایل از ابتدا آغاز می‌شود .TP --part استفاده از فایل‌های .part به جای نوشتن مستقیم روی فایل خروجی (پیش‌فرض) .TP --no-part عدم استفاده از فایل‌های .part \- نوشتن مستقیم در فایل خروجی .TP --mtime استفاده از سرآیند Last-modified برای تنظیم زمان تغییر فایل .TP --no-mtime عدم استفاده از سرآیند Last-modified برای تنظیم زمان تغییر فایل (پیش‌فرض) .TP --write-description نوشتن توضیحات ویدیو در یک فایل .description .TP --no-write-description عدم نوشتن توضیحات ویدیو (پیش‌فرض) .TP --write-info-json نوشتن فراداده‌های ویدیو در یک فایل .info.json (این فایل ممکن است حاوی اطلاعات شخصی باشد) .TP --no-write-info-json عدم نوشتن فراداده‌های ویدیو (پیش‌فرض) .TP --write-playlist-metafiles نوشتن فراداده‌های فهرست‌پخش علاوه‌بر فراداده‌های ویدیو هنگام استفاده از --write-info-json، --write-description و غیره (پیش‌فرض) .TP --no-write-playlist-metafiles عدم نوشتن فراداده‌های فهرست‌پخش هنگام استفاده از --write-info-json، --write-description و غیره .TP --clean-info-json حذف برخی فراداده‌های داخلی مانند نام‌ فایل‌ها از infojson (پیش‌فرض) .TP --no-clean-info-json نوشتن همه فیلدها در infojson .TP --write-comments دریافت دیدگاه‌های ویدیو برای قرارگیری در infojson. اگر استخراج سریع باشد، دیدگاه‌ها حتی بدون این گزینه نیز دریافت می‌شوند (نام مستعار: --get-comments) .TP --no-write-comments عدم دریافت دیدگاه‌های ویدیو مگر اینکه استخراج آن‌ها سریع باشد (نام مستعار: --no-get-comments) .TP --load-info-json \f[I]FILE\f[R] فایل JSON حاوی اطلاعات ویدیو (ایجاد شده با گزینه \[dq]--write-info-json\[dq]) .TP --cookies \f[I]FILE\f[R] فایلی با قالب Netscape برای خواندن کوکی‌ها و ذخیره کوکی‌ها در آن .TP --no-cookies عدم خواندن/ذخیره کوکی‌ها از/به فایل (پیش‌فرض) .TP --cookies-from-browser \f[I]BROWSER[+KEYRING][:PROFILE][::CONTAINER]\f[R] نام مرورگری که کوکی‌ها از آن بارگیری می‌شوند. مرورگرهای پشتیبانی‌شده در حال حاضر: brave، chrome، chromium، edge، firefox، opera، safari، vivaldi، whale. به صورت اختیاری، KEYRING مورد استفاده برای رمزگشایی کوکی‌های Chromium در Linux، نام/مسیر PROFILE برای بارگیری کوکی‌ها، و نام CONTAINER (در صورت استفاده از Firefox) (مقدار \[dq]none\[dq] برای عدم استفاده از کانتینر) می‌توانند همراه با جداکننده‌های مربوطه مشخص شوند. به‌طور پیش‌فرض، تمام کانتینرهای نمایه‌ای که اخیراً به آن دسترسی پیدا شده است استفاده می‌شوند. دسته‌کلیدهای (keyrings) پشتیبانی‌شده در حال حاضر: basictext، gnomekeyring، kwallet، kwallet5، kwallet6 .TP --no-cookies-from-browser عدم بارگیری کوکی‌ها از مرورگر (پیش‌فرض) .TP --cache-dir \f[I]DIR\f[R] مکانی در سیستم‌فایل که yt-dlp می‌تواند برخی اطلاعات بارگیری‌شده (مانند شناسه‌های کلاینت و امضاها) را به‌طور دائم در آن ذخیره کند. به‌طور پیش‌فرض ${XDG_CACHE_HOME}/yt-dlp .TP --no-cache-dir غیرفعال کردن حافظه پنهان (کش) سیستم‌فایل .TP --rm-cache-dir حذف تمام فایل‌های حافظه پنهان سیستم‌فایل.SS گزینه‌های تصویر بندانگشتی (Thumbnail Options): .TP --write-thumbnail نوشتن تصویر بندانگشتی روی دیسک .TP --no-write-thumbnail تصویر بندانگشتی روی دیسک نوشته نشود (پیش‌فرض) .TP --write-all-thumbnails نوشتن تمام قالب‌های تصویر بندانگشتی روی دیسک .TP --list-thumbnails فهرست کردن تصاویر بندانگشتی موجود برای هر ویدیو. شبیه‌سازی می‌شود، مگر اینکه از --no-simulate استفاده شود .SS گزینه‌های میانبر اینترنتی (Internet Shortcut Options): .TP --write-link نوشتن یک فایل میانبر اینترنتی، بسته به سیستم‌عامل فعلی (.url، .webloc یا .desktop). ممکن است نشانی اینترنتی (URL) توسط سیستم‌عامل ذخیره موقت (کَش) شود .TP --write-url-link نوشتن یک میانبر اینترنتی ویندوز .url. سیستم‌عامل نشانی اینترنتی (URL) را بر اساس مسیر فایل ذخیره موقت (کَش) می‌کند .TP --write-webloc-link نوشتن یک میانبر اینترنتی مک‌اواس .webloc .TP --write-desktop-link نوشتن یک میانبر اینترنتی لینوکس .desktop .SS گزینه‌های پرگویی و شبیه‌سازی (Verbosity and Simulation Options): .TP -q, --quiet فعال‌سازی حالت بی‌صدا. در صورت استفاده به همراه --verbose، گزارش‌ها در stderr چاپ می‌شوند .TP --no-quiet غیرفعال‌سازی حالت بی‌صدا. (پیش‌فرض) .TP --no-warnings نادیده گرفتن هشدارها .TP -s, --simulate ویدیو دانلود نشود و چیزی روی دیسک نوشته نشود .TP --no-simulate دانلود ویدیو حتی در صورت استفاده از گزینه‌های چاپ/فهرست‌کردن .TP --ignore-no-formats-error نادیده گرفتن خطای \[dq]No video formats\[dq]. برای استخراج فراداده حتی در صورتی که ویدیوها عملاً برای دانلود در دسترس نباشند مفید است (آزمایشی) .TP --no-ignore-no-formats-error ایجاد خطا در صورت پیدا نشدن قالب‌های ویدیویی قابل دانلود (پیش‌فرض) .TP --skip-download ویدیو دانلود نشود، اما تمام فایل‌های مرتبط نوشته شوند (نام مستعار: --no-download) .TP -O, --print \f[I][WHEN:]TEMPLATE\f[R] نام فیلد یا الگوی خروجی برای چاپ روی صفحه نمایش، همراه با امکان اختیاری افزودن زمان چاپ به عنوان پیشوند که با یک \[dq]:\[dq] جدا می‌شود. مقادیر پشتیبانی‌شده برای \[dq]WHEN\[dq] مشابه مقادیر --use-postprocessor هستند (پیش‌فرض: video). گزینه --quiet را فعال می‌کند. گزینه --simulate را فعال می‌کند، مگر اینکه از --no-simulate یا مراحل بعدی WHEN استفاده شود. از این گزینه می‌توان چندین بار استفاده کرد .TP --print-to-file \f[I][WHEN:]TEMPLATE FILE\f[R] الحاق الگوی ارائه‌شده به فایل. مقادیر WHEN و TEMPLATE همانند مقادیر آنها در --print هستند. آرگومان FILE از ساختاری مشابه الگوی خروجی استفاده می‌کند. از این گزینه می‌توان چندین بار استفاده کرد .TP -j, --dump-json بی‌صدا، اما اطلاعات JSON برای هر ویدیو چاپ می‌شود. شبیه‌سازی می‌شود، مگر اینکه از --no-simulate استفاده شود. برای مشاهده توضیحات کلیدهای در دسترس، \[dq]OUTPUT TEMPLATE\[dq] را ببینید .TP -J, --dump-single-json بی‌صدا، اما اطلاعات JSON را برای هر URL یا infojson ارائه‌شده چاپ می‌کند. شبیه‌سازی می‌شود، مگر اینکه از --no-simulate استفاده شود. اگر URL به یک فهرست‌پخش اشاره کند، کل اطلاعات فهرست‌پخش در یک خط چاپ می‌شود .TP --force-write-archive اجبار به نوشتن مدخل‌های بایگانی دانلود تا زمانی که خطایی رخ ندهد، حتی اگر از -s یا گزینه شبیه‌سازی دیگری استفاده شده باشد (نام مستعار: --force-download-archive) .TP --newline نمایش نوار پیشرفت در خطوط جدید .TP --no-progress نوار پیشرفت چاپ نشود .TP --progress نمایش نوار پیشرفت، حتی در حالت بی‌صدا .TP --console-title نمایش پیشرفت در نوار عنوان کنسول .TP --progress-template \f[I][TYPES:]TEMPLATE\f[R] الگو برای خروجی‌های پیشرفت، همراه با امکان اختیاری درج یکی از پیشوندهای \[dq]download:\[dq] (پیش‌فرض)، \[dq]download-title:\[dq] (عنوان کنسول)، \[dq]postprocess:\[dq] یا \[dq]postprocess-title:\[dq]. فیلدهای ویدیو تحت کلید \[dq]info\[dq] و مشخصه‌های پیشرفت تحت کلید \[dq]progress\[dq] در دسترس هستند. برای مثال: --console-title --progress-template \[dq]download-title:%(info.id)s-%(progress.eta)s\[dq] .TP --progress-delta \f[I]SECONDS\f[R] فاصله زمانی بین به‌روزرسانی‌های خروجی پیشرفت (پیش‌فرض: 0) .TP -v, --verbose چاپ اطلاعات مختلف اشکال‌زدایی .TP --dump-pages چاپ صفحات بارگیری‌شده با کدگذاری base64 برای اشکال‌زدایی مشکلات (بسیار پرگو) .TP --write-pages نوشتن صفحات واسط بارگیری‌شده در فایل‌هایی در دایرکتوری جاری برای اشکال‌زدایی مشکلات .TP --print-traffic نمایش ترافیک ارسالی و دریافتی HTTP.SS راهکارها (Workarounds): .TP --encoding \f[I]ENCODING\f[R] اجبار به استفاده از کدگذاری مشخص‌شده (آزمایشی) .TP --legacy-server-connect اجازه صریح به برقراری اتصال HTTPS به سرورهایی که از RFC 5746 secure renegotiation پشتیبانی نمی‌کنند .TP --no-check-certificates نادیده‌گرفتن اعتبارسنجی گواهی‌های HTTPS .TP --prefer-insecure استفاده از اتصالی رمزنگاری‌نشده برای دریافت اطلاعات ویدیو .TP --add-headers \f[I]FIELD:VALUE\f[R] مشخص‌کردن یک هدر سفارشی HTTP و مقدار آن، با جداکننده دو‌نقطه \[dq]:\[dq]. می‌توانید از این گزینه چندین بار استفاده کنید .TP --bidi-workaround راهکاری برای ترمینال‌هایی که فاقد پشتیبانی از متن‌های دوجهته هستند. نیازمند فایل اجرایی bidiv یا fribidi در PATH است .TP --sleep-requests \f[I]SECONDS\f[R] تعداد ثانیه‌های درنگ بین درخواست‌ها هنگام استخراج داده‌ها .TP --sleep-interval \f[I]SECONDS\f[R] تعداد ثانیه‌های درنگ پیش از هر بارگیری. در صورت استفاده همراه با --max-sleep-interval این مقدار حداقل زمان درنگ خواهد بود (نام مستعار: --min-sleep-interval) .TP --max-sleep-interval \f[I]SECONDS\f[R] حداکثر تعداد ثانیه‌های درنگ. تنها همراه با --min-sleep-interval قابل استفاده است .TP --sleep-subtitles \f[I]SECONDS\f[R] تعداد ثانیه‌های درنگ پیش از بارگیری هر زیرنویس .SS گزینه‌های قالب ویدیو (Video Format Options): .TP -f, --format \f[I]FORMAT\f[R] کد قالب ویدیو، برای جزئیات بیشتر به \[dq]FORMAT SELECTION\[dq] مراجعه کنید .TP -S, --format-sort \f[I]SORTORDER\f[R] مرتب‌سازی قالب‌ها بر اساس فیلدهای ارائه‌شده، برای جزئیات بیشتر به \[dq]Sorting Formats\[dq] مراجعه کنید .TP --format-sort-reset نادیده‌گرفتن ترتیب مرتب‌سازی قبلیِ تعیین‌شده توسط کاربر و بازنشانی به حالت پیش‌فرض .TP --format-sort-force اجبار ترتیب مرتب‌سازی تعیین‌شده توسط کاربر برای داشتن اولویت بر تمامی فیلدها، برای جزئیات بیشتر به \[dq]Sorting Formats\[dq] مراجعه کنید (نام مستعار: --S-force) .TP --no-format-sort-force برخی فیلدها بر ترتیب مرتب‌سازی تعیین‌شده توسط کاربر اولویت دارند (پیش‌فرض) .TP --video-multistreams اجازه ادغام چندین جریان ویدیویی در یک فایل واحد .TP --no-video-multistreams تنها یک جریان ویدیویی برای هر فایل خروجی بارگیری می‌شود (پیش‌فرض) .TP --audio-multistreams اجازه ادغام چندین جریان صوتی در یک فایل واحد .TP --no-audio-multistreams تنها یک جریان صوتی برای هر فایل خروجی بارگیری می‌شود (پیش‌فرض) .TP --prefer-free-formats ترجیح قالب‌های ویدیویی با کانتینرهای آزاد نسبت به نمونه‌های غیرآزاد با همان کیفیت. همراه با \[dq]-S ext\[dq] استفاده شود تا کانتینرهای آزاد صرف‌نظر از کیفیت، اکیداً ترجیح داده شوند .TP --no-prefer-free-formats عدم اعمال هرگونه اولویت خاص برای کانتینرهای آزاد (پیش‌فرض) .TP --check-formats اطمینان از اینکه قالب‌ها تنها از میان مواردی که واقعاً قابل بارگیری هستند انتخاب شوند .TP --check-all-formats بررسی تمامی قالب‌ها برای اینکه مشخص شود آیا واقعاً قابل بارگیری هستند یا خیر .TP --no-check-formats عدم بررسی اینکه آیا قالب‌ها واقعاً قابل بارگیری هستند یا خیر .TP -F, --list-formats فهرست‌کردن قالب‌های موجود برای هر ویدیو. عملیات شبیه‌سازی می‌شود مگر اینکه از --no-simulate استفاده شود .TP --merge-output-format \f[I]FORMAT\f[R] کانتینرهایی که ممکن است هنگام ادغام قالب‌ها استفاده شوند، جداشده با \[dq]/\[dq]، مانند \[dq]mp4/mkv\[dq]. در صورت عدم نیاز به ادغام نادیده گرفته می‌شود. (در حال حاضر پشتیبانی می‌شود: avi, flv, mkv, mov, mp4, webm).SS گزینه‌های زیرنویس (Subtitle Options): .TP --write-subs نوشتن فایل زیرنویس .TP --no-write-subs فایل زیرنویس نوشته نشود (پیش‌فرض) .TP --write-auto-subs نوشتن فایل زیرنویس تولیدشده به‌صورت خودکار (نام مستعار: --write-automatic-subs) .TP --no-write-auto-subs زیرنویس‌های تولیدشده به‌صورت خودکار نوشته نشوند (پیش‌فرض) (نام مستعار: --no-write-automatic-subs) .TP --list-subs فهرست کردن زیرنویس‌های موجود برای هر ویدیو. عملیات شبیه‌سازی می‌شود مگر اینکه از --no-simulate استفاده شود .TP --sub-format \f[I]FORMAT\f[R] قالب زیرنویس؛ اولویت قالب‌ها را با جداکنندهٔ \[dq]/\[dq] می‌پذیرد، برای مثال \[dq]srt\[dq] یا \[dq]ass/srt/best\[dq] .TP --sub-langs \f[I]LANGS\f[R] زبان‌های زیرنویس‌ها برای بارگیری (می‌تواند عبارت منظم باشد) یا \[dq]all\[dq] که با کاما جدا شده‌اند، برای مثال --sub-langs \[dq]en.*,ja\[dq] (که در آن \[dq]en.*\[dq] یک الگوی عبارت منظم است که \[dq]en\[dq] و به‌دنبال آن ۰ یا چند نویسه از هر نوع را مطابقت می‌دهد). می‌توانید پیشوند \[dq]-\[dq] را به کد زبان اضافه کنید تا از زبان‌های درخواستی مستثنی شود، برای مثال --sub-langs all,-live_chat. برای مشاهدهٔ فهرستی از برچسب‌های زبان موجود از --list-subs استفاده کنید .SS گزینه‌های احراز هویت (Authentication Options): .TP -u, --username \f[I]USERNAME\f[R] ورود با این شناسهٔ حساب کاربری .TP -p, --password \f[I]PASSWORD\f[R] گذرواژهٔ حساب کاربری. اگر این گزینه مشخص نشود، yt-dlp آن را به‌صورت تعاملی خواهد پرسید .TP -2, --twofactor \f[I]TWOFACTOR\f[R] کد احراز هویت دو مرحله‌ای .TP -n, --netrc استفاده از داده‌های احراز هویت .netrc .TP --netrc-location \f[I]PATH\f[R] محل داده‌های احراز هویت .netrc؛ مسیر مستقیم فایل یا پوشهٔ حاوی آن. پیش‌فرض \[ti]/.netrc است .TP --netrc-cmd \f[I]NETRC_CMD\f[R] دستوری که برای دریافت اعتبارنامه‌های یک استخراج‌کننده (extractor) اجرا می‌شود. .TP --video-password \f[I]PASSWORD\f[R] گذرواژهٔ مخصوص ویدیو .TP --ap-mso \f[I]MSO\f[R] شناسهٔ اپراتور چندسیستمی (تأمین‌کنندهٔ تلویزیونی) Adobe Pass؛ برای مشاهدهٔ فهرستی از MSOهای موجود از --ap-list-mso استفاده کنید .TP --ap-username \f[I]USERNAME\f[R] شناسهٔ ورود به حساب اپراتور چندسیستمی .TP --ap-password \f[I]PASSWORD\f[R] گذرواژهٔ حساب اپراتور چندسیستمی. اگر این گزینه مشخص نشود، yt-dlp آن را به‌صورت تعاملی خواهد پرسید .TP --ap-list-mso فهرست کردن تمام اپراتورهای چندسیستمی پشتیبانی‌شده .TP --client-certificate \f[I]CERTFILE\f[R] مسیر فایل گواهی کلاینت با قالب PEM. می‌تواند شامل کلید خصوصی نیز باشد .TP --client-certificate-key \f[I]KEYFILE\f[R] مسیر فایل کلید خصوصی برای گواهی کلاینت .TP --client-certificate-password \f[I]PASSWORD\f[R] گذرواژه برای کلید خصوصی گواهی کلاینت، در صورت رمزگذاری شدن. اگر ارائه نشود و کلید رمزگذاری شده باشد، yt-dlp آن را به‌صورت تعاملی خواهد پرسید.SS "گزینه‌های پس‌پردازش (Post-Processing Options):" .TP \-x, \-\-extract\-audio تبدیل فایل‌های ویدیویی به فایل‌های فقط صوتی (نیازمند ffmpeg و ffprobe). .TP \-\-audio\-format \f[I]FORMAT\f[R] قالب برای تبدیل صدا هنگام استفاده از \-x. (در حال حاضر پشتیبانی می‌شود: best (پیش‌فرض)، aac، alac، flac، m4a، mp3، opus، vorbis، wav). می‌توانید با نحوی مشابه \-\-remux\-video چندین قانون را مشخص کنید. .TP \-\-audio\-quality \f[I]QUALITY\f[R] کیفیت صدای ffmpeg را جهت استفاده هنگام تبدیل صدا با \-x مشخص کنید. مقداری بین 0 (بهترین) و 10 (بدترین) برای VBR یا یک نرخ بیت معین مانند 128K وارد کنید (پیش‌فرض 5). .TP \-\-remux\-video \f[I]FORMAT\f[R] بازترکیب (remux) ویدیو به یک ظرف دیگر در صورت لزوم (در حال حاضر پشتیبانی می‌شود: avi، flv، gif، mkv، mov، mp4، webm، aac، aiff، alac، flac، m4a، mka، mp3، ogg، opus، vorbis، wav). اگر ظرف مقصد از کدک ویدیویی/صوتی پشتیبانی نکند، بازترکیب ناموفق خواهد بود. می‌توانید چندین قانون مشخص کنید؛ برای مثال \[dq]aac>m4a/mov>mp4/mkv\[dq] مقدار aac را به m4a، مقدار mov را به mp4 و هر چیز دیگری را به mkv بازترکیب می‌کند. .TP \-\-recode\-video \f[I]FORMAT\f[R] کدگذاری مجدد (re-encode) ویدیو به قالبی دیگر در صورت لزوم. نحو و قالب‌های پشتیبانی‌شده مشابه \-\-remux\-video هستند. .TP \-\-postprocessor\-args \f[I]NAME:ARGS\f[R] ارسال این آرگومان‌ها به پس‌پردازنده‌ها. نام پس‌پردازنده/فایل اجرایی و آرگومان‌ها را با دونقطه \[dq]:\[dq] جدا کنید تا آرگومان به پس‌پردازنده/فایل اجرایی مشخص‌شده اختصاص یابد. پس‌پردازنده‌های (PP) پشتیبانی‌شده عبارتند از: Merger، ModifyChapters، SplitChapters، ExtractAudio، VideoRemuxer، VideoConvertor، Metadata، EmbedSubtitle، EmbedThumbnail، SubtitlesConvertor، ThumbnailsConvertor، FixupStretched، FixupM4a، FixupM3u8، FixupTimestamp و FixupDuration. فایل‌های اجرایی پشتیبانی‌شده عبارتند از: AtomicParsley، FFmpeg و FFprobe. همچنین می‌توانید \[dq]PP+EXE:ARGS\[dq] را تعیین کنید تا آرگومان‌ها تنها هنگامی که توسط پس‌پردازندهٔ مشخص‌شده استفاده می‌شوند، به فایل اجرایی موردنظر ارسال شوند. علاوه بر این، برای ffmpeg/ffprobe می‌توان \[dq]_i\[dq]/\[dq]_o\[dq] را به پیشوند افزود که اختیاری با یک عدد دنبال می‌شود تا آرگومان قبل از فایل ورودی/خروجی مشخص‌شده اعمال شود؛ برای مثال: \-\-ppa \[dq]Merger+ffmpeg_i1:\-v quiet\[dq]. می‌توانید از این گزینه چندین بار برای دادن آرگومان‌های متفاوت به پس‌پردازنده‌های مختلف استفاده کنید. (نام مستعار: \-\-ppa) .TP \-k, \-\-keep\-video نگه‌داشتن فایل ویدیویی میانی روی دیسک پس از پس‌پردازش. .TP \-\-no\-keep\-video حذف فایل ویدیویی میانی پس از پس‌پردازش (پیش‌فرض). .TP \-\-post\-overwrites بازنویسی روی فایل‌های پس‌پردازش‌شده (پیش‌فرض). .TP \-\-no\-post\-overwrites عدم بازنویسی روی فایل‌های پس‌پردازش‌شده. .TP \-\-embed\-subs جاسازی زیرنویس در ویدیو (صرفاً برای ویدیوهای mp4، webm و mkv). .TP \-\-no\-embed\-subs عدم جاسازی زیرنویس (پیش‌فرض). .TP \-\-embed\-thumbnail جاسازی تصویر بندانگشتی در ویدیو به عنوان تصویر جلد. .TP \-\-no\-embed\-thumbnail عدم جاسازی تصویر بندانگشتی (پیش‌فرض). .TP \-\-embed\-metadata جاسازی متاداده در فایل ویدیویی. همچنین در صورت وجود، فصل‌ها/infojson را نیز جاسازی می‌کند، مگر اینکه از \-\-no\-embed\-chapters/\-\-no\-embed\-info\-json استفاده شده باشد (نام مستعار: \-\-add\-metadata). .TP \-\-no\-embed\-metadata عدم افزودن متاداده به فایل (پیش‌فرض) (نام مستعار: \-\-no\-add\-metadata). .TP \-\-embed\-chapters افزودن نشانگرهای فصل به فایل ویدیویی (نام مستعار: \-\-add\-chapters). .TP \-\-no\-embed\-chapters عدم افزودن نشانگرهای فصل (پیش‌فرض) (نام مستعار: \-\-no\-add\-chapters). .TP \-\-embed\-info\-json جاسازی infojson به عنوان یک پیوست در فایل‌های ویدیویی mkv/mka. .TP \-\-no\-embed\-info\-json عدم جاسازی infojson به عنوان پیوست در فایل ویدیویی. .TP \-\-parse\-metadata \f[I][WHEN:]FROM:TO\f[R] تجزیه متاداده‌های تکمیلی مانند عنوان/هنرمند از فیلدهای دیگر؛ برای جزئیات به \[dq]MODIFYING METADATA\[dq] مراجعه کنید. مقادیر پشتیبانی‌شده برای \[dq]WHEN\[dq] همانند موارد \-\-use\-postprocessor است (پیش‌فرض: pre_process). .TP \-\-replace\-in\-metadata \f[I][WHEN:]FIELDS REGEX REPLACE\f[R] جایگزینی متن در یک فیلد متاداده با استفاده از عبارت باقاعده داده‌شده. این گزینه می‌تواند چندین بار استفاده شود. مقادیر پشتیبانی‌شده برای \[dq]WHEN\[dq] همانند موارد \-\-use\-postprocessor است (پیش‌فرض: pre_process). .TP \-\-xattrs نوشتن متاداده در صفت‌های گسترده (xattrs) فایل ویدیویی (با استفاده از استانداردهای Dublin Core و XDG). .TP \-\-concat\-playlist \f[I]POLICY\f[R] الحاق (پیوست کردن) ویدیوهای یک فهرست پخش. یکی از مقادیر \[dq]never\[dq]، \[dq]always\[dq]، یا \[dq]multi_video\[dq] (پیش‌فرض؛ تنها زمانی که ویدیوها یک نمایش واحد را تشکیل دهند). همه فایل‌های ویدیویی باید کدک‌ها و تعداد جریان‌های یکسانی داشته باشند تا قابل الحاق باشند. پیشوند \[dq]pl_video:\[dq] را می‌توان همراه با \[dq]\-\-paths\[dq] و \[dq]\-\-output\[dq] برای تعیین نام فایل خروجی برای فایل‌های الحاق‌شده استفاده کرد. برای جزئیات به \[dq]OUTPUT TEMPLATE\[dq] مراجعه کنید. .TP \-\-fixup \f[I]POLICY\f[R] اصلاح خودکار اشکالات شناخته‌شدهٔ فایل. یکی از مقادیر never (کاری نکن)، warn (صرفاً ارسال هشدار)، detect_or_warn (پیش‌فرض؛ اصلاح فایل در صورت امکان، در غیر این صورت هشدار)، force (تلاش برای اصلاح حتی در صورت وجود فایل از قبل). .TP \-\-ffmpeg\-location \f[I]PATH\f[R] محل فایل اجرایی ffmpeg؛ مسیر کامل فایل اجرایی یا پوشهٔ دربرگیرندهٔ آن. .TP \-\-exec \f[I][WHEN:]CMD\f[R] اجرای یک دستور، با پیشوند اختیاری برای زمان اجرای آن، که با یک \[dq]:\[dq] جدا می‌شود. مقادیر پشتیبانی‌شده برای \[dq]WHEN\[dq] همانند موارد \-\-use\-postprocessor است (پیش‌فرض: after_move). از همان نحو الگوی خروجی می‌توان برای ارسال هر فیلدی به عنوان آرگومان به دستور استفاده کرد؛ با این حال، به دلایل امنیتی تنها تبدیلات مجاز عبارتند از: \[dq]i\[dq]/\[dq]d\[dq] (عدد صحیح علامت‌دار ده‌دهی)، \[dq]f\[dq] (ممیز شناور ده‌دهی) و \[dq]q\[dq] (نقل‌قول‌شده در شل). اگر فیلدی ارسال نشود، %(filepath,_filename|)q به انتهای دستور اضافه می‌شود. این گزینه می‌تواند چندین بار استفاده شود. .TP \-\-no\-exec حذف هر دستور \-\-exec تعریف‌شدهٔ قبلی. .TP \-\-convert\-subs \f[I]FORMAT\f[R] تبدیل زیرنویس‌ها به قالبی دیگر (در حال حاضر پشتیبانی می‌شود: ass، lrc، srt، vtt). از \[dq]\-\-convert\-subs none\[dq] برای غیرفعال کردن تبدیل استفاده کنید (پیش‌فرض) (نام مستعار: \-\-convert\-subtitles). .TP \-\-convert\-thumbnails \f[I]FORMAT\f[R] تبدیل تصاویر بندانگشتی به قالبی دیگر (در حال حاضر پشتیبانی می‌شود: jpg، png، webp). می‌توانید با استفاده از نحوی مشابه \[dq]\-\-remux\-video\[dq]، چندین قانون را مشخص کنید. از \[dq]\-\-convert\-thumbnails none\[dq] برای غیرفعال کردن تبدیل استفاده کنید (پیش‌فرض). .TP \-\-split\-chapters تقسیم ویدیو به چندین فایل بر اساس فصل‌های داخلی. پیشوند \[dq]chapter:\[dq] می‌تواند همراه با \[dq]\-\-paths\[dq] و \[dq]\-\-output\[dq] برای تعیین نام فایل خروجی فایل‌های تقسیم‌شده استفاده شود. برای جزئیات به \[dq]OUTPUT TEMPLATE\[dq] مراجعه کنید. .TP \-\-no\-split\-chapters عدم تقسیم ویدیو بر اساس فصل‌ها (پیش‌فرض). .TP \-\-remove\-chapters \f[I]REGEX\f[R] حذف فصل‌هایی که عنوان آن‌ها با عبارت باقاعده داده‌شده مطابقت دارد. نحو مشابه \-\-download\-sections است. این گزینه می‌تواند چندین بار استفاده شود. .TP \-\-no\-remove\-chapters عدم حذف هیچ فصلی از فایل (پیش‌فرض). .TP \-\-force\-keyframes\-at\-cuts اجبار فریم‌های کلیدی (keyframes) در نقاط برش هنگام دانلود/تقسیم/حذف بخش‌ها. این کار به دلیل نیاز به کدگذاری مجدد کُند است، اما ویدیوی حاصل ممکن است مصنوعات تصویری کمتری در اطراف نقاط برش داشته باشد..TP --no-force-keyframes-at-cuts هنگام برش/تقسیم ویدیو، فریم‌های کلیدی (keyframes) در اطراف فصل‌ها اجباری نمی‌شوند (پیش‌فرض) .TP --use-postprocessor \f[I]NAME[:ARGS]\f[R] نام (حساس به بزرگی و کوچکی حروف) پس‌پردازشگرهای افزونه جهت فعال‌سازی، و (اختیاری) آرگومان‌هایی که با دونقطه \[dq]:\[dq] از آن جدا شده و به آن ارسال می‌شوند. آرگومان‌های ARGS فهرستی از NAME=VALUE هستند که با نقطه‌ویرگول \[dq];\[dq] جدا شده‌اند. آرگومان \[dq]when\[dq] مشخص می‌کند که پس‌پردازشگر چه زمانی فراخوانی شود. این مقدار می‌تواند یکی از موارد \[dq]pre_process\[dq] (پس از استخراج ویدیو)، \[dq]after_filter\[dq] (پس از عبور ویدیو از فیلتر)، \[dq]video\[dq] (پس از --format؛ پیش از --print/--output)، \[dq]before_dl\[dq] (پیش از بارگیری هر ویدیو)، \[dq]post_process\[dq] (پس از بارگیری هر ویدیو؛ پیش‌فرض)، \[dq]after_move\[dq] (پس از انتقال فایل ویدیو به مکان نهایی‌اش)، \[dq]after_video\[dq] (پس از بارگیری و پردازش تمامی فرمت‌های یک ویدیو)، یا \[dq]playlist\[dq] (در پایان لیست پخش) باشد. از این گزینه می‌توان چندین بار برای افزودن پس‌پردازشگرهای مختلف استفاده کرد .SS گزینه‌های SponsorBlock (SponsorBlock Options): .PP ایجاد مدخل‌های فصل‌بندی یا حذف بخش‌های گوناگون (حامی مالی، مقدمه‌ها و غیره) از ویدیوهای بارگیری‌شدهٔ YouTube با استفاده از API سرویس SponsorBlock (https://sponsor.ajay.app) .TP --sponsorblock-mark \f[I]CATS\f[R] دسته‌بندی‌های SponsorBlock برای ایجاد فصل که با کاما از هم جدا شده‌اند. دسته‌بندی‌های در دسترس عبارتند از sponsor، intro، outro، selfpromo، preview، filler، interaction، music_offtopic، hook، poi_highlight، chapter، all و default (=all). می‌توانید با افزودن یک پیشوند \[dq]-\[dq] قبل از دسته‌بندی، آن را مستثنی کنید. برای توضیحات مربوط به دسته‌بندی‌ها به [1] مراجعه کنید. به‌عنوان مثال: --sponsorblock-mark all,-preview [1] https://wiki.sponsor.ajay.app/w/Segment_Categories .TP --sponsorblock-remove \f[I]CATS\f[R] دسته‌بندی‌های SponsorBlock که باید از فایل ویدیو حذف شوند، جدا شده با کاما. اگر یک دسته‌بندی هم در mark و هم در remove وجود داشته باشد، remove اولویت دارد. ساختار دستوری و دسته‌بندی‌های موجود مانند --sponsorblock-mark است، به جز این‌که \[dq]default\[dq] به \[dq]all,-filler\[dq] اشاره دارد و poi_highlight و chapter در دسترس نیستند .TP --sponsorblock-chapter-title \f[I]TEMPLATE\f[R] یک الگوی خروجی برای عنوان فصل‌های SponsorBlock که توسط --sponsorblock-mark ایجاد شده‌اند. تنها فیلدهای در دسترس عبارتند از start_time، end_time، category، categories، name و category_names. پیش‌فرض: \[dq][SponsorBlock]: %(category_names)l\[dq] .TP --no-sponsorblock غیرفعال‌سازی هر دو گزینهٔ --sponsorblock-mark و --sponsorblock-remove .TP --sponsorblock-api \f[I]URL\f[R] نشانی API مربوط به SponsorBlock، پیش‌فرض https://sponsor.ajay.app است .SS گزینه‌های استخراج‌کننده (Extractor Options): .TP --extractor-retries \f[I]RETRIES\f[R] تعداد تلاش‌های مجدد برای خطاهای شناخته‌شدهٔ استخراج‌کننده (پیش‌فرض ۳ است)، یا \[dq]infinite\[dq] .TP --allow-dynamic-mpd پردازش مانیفست‌های پویای DASH (پیش‌فرض) (نام مستعار: --no-ignore-dynamic-mpd) .TP --ignore-dynamic-mpd عدم پردازش مانیفست‌های پویای DASH (نام مستعار: --no-allow-dynamic-mpd) .TP --hls-split-discontinuity تقسیم لیست‌های پخش HLS به فرمت‌های مختلف در نقاط ناپیوستگی مانند وقفه‌های تبلیغاتی .TP --no-hls-split-discontinuity عدم تقسیم لیست‌های پخش HLS به فرمت‌های مختلف در نقاط ناپیوستگی مانند وقفه‌های تبلیغاتی (پیش‌فرض) .TP --extractor-args \f[I]IE_KEY:ARGS\f[R] ارسال آرگومان‌های ARGS به استخراج‌کنندهٔ IE_KEY. برای جزئیات به بخش \[dq]EXTRACTOR ARGUMENTS\[dq] مراجعه کنید. می‌توانید از این گزینه چندین بار برای ارائه آرگومان به استخراج‌کننده‌های مختلف استفاده کنید.SS "نام‌های مستعار پیش‌تنظیم (Preset Aliases):" .PP نام‌های مستعار از پیش تعریف‌شده برای راحتی و سهولت استفاده. توجه داشته باشید که نسخه‌های آیندهٔ yt-dlp ممکن است پیش‌تنظیم‌هایی را اضافه یا تنظیم کنند، اما نام‌های پیش‌تنظیم موجود تغییر نخواهند کرد یا حذف نخواهند شد .TP -t \f[I]mp3\f[R] -f \[aq]ba[acodec\[ha]=mp3]/ba/b\[aq] -x --audio-format mp3 .TP -t \f[I]aac\f[R] -f \[aq]ba[acodec\[ha]=aac]/ba[acodec\[ha]=mp4a.40.]/ba/b\[aq] -x --audio-format aac .TP -t \f[I]mp4\f[R] --merge-output-format mp4 --remux-video mp4 -S vcodec:h264,lang,quality,res,fps,hdr:12,a codec:aac .TP -t \f[I]mkv\f[R] --merge-output-format mkv --remux-video mkv .TP -t \f[I]sleep\f[R] --sleep-subtitles 5 --sleep-requests 0.75 --sleep-interval 10 --max-sleep-interval 20 .SH "پیکربندی (CONFIGURATION)" .PP شما می‌توانید yt-dlp را با قرار دادن هر یک از گزینه‌های پشتیبانی‌شدهٔ خط فرمان در یک فایل پیکربندی، پیکربندی کنید. پیکربندی از مکان‌های زیر بارگذاری می‌شود: .IP "1." 3 \f[B]پیکربندی اصلی (Main Configuration)\f[R]: .RS 4 .IP \[bu] 2 فایل داده‌شده به \f[V]--config-locations\f[R] .RE .IP "2." 3 \f[B]پیکربندی قابل‌حمل (Portable Configuration)\f[R]: (توصیه‌شده برای نصب‌های قابل‌حمل) .RS 4 .IP \[bu] 2 در صورت استفاده از باینری، \f[V]yt-dlp.conf\f[R] در همان دایرکتوری باینری .IP \[bu] 2 در صورت اجرا از سورس‌کد، \f[V]yt-dlp.conf\f[R] در دایرکتوری والد \f[V]yt_dlp\f[R] .RE .IP "3." 3 \f[B]پیکربندی خانه (Home Configuration)\f[R]: .RS 4 .IP \[bu] 2 \f[V]yt-dlp.conf\f[R] در مسیر خانگی داده‌شده به \f[V]-P\f[R] .IP \[bu] 2 اگر \f[V]-P\f[R] داده نشود، دایرکتوری جاری جستجو می‌شود .RE .IP "4." 3 \f[B]پیکربندی کاربر (User Configuration)\f[R]: .RS 4 .IP \[bu] 2 \f[V]${XDG_CONFIG_HOME}/yt-dlp.conf\f[R] .IP \[bu] 2 \f[V]${XDG_CONFIG_HOME}/yt-dlp/config\f[R] (توصیه‌شده در Linux/macOS) .IP \[bu] 2 \f[V]${XDG_CONFIG_HOME}/yt-dlp/config.txt\f[R] .IP \[bu] 2 \f[V]${APPDATA}/yt-dlp.conf\f[R] .IP \[bu] 2 \f[V]${APPDATA}/yt-dlp/config\f[R] (توصیه‌شده در Windows) .IP \[bu] 2 \f[V]${APPDATA}/yt-dlp/config.txt\f[R] .IP \[bu] 2 \f[V]\[ti]/yt-dlp.conf\f[R] .IP \[bu] 2 \f[V]\[ti]/yt-dlp.conf.txt\f[R] .IP \[bu] 2 \f[V]\[ti]/.yt-dlp/config\f[R] .IP \[bu] 2 \f[V]\[ti]/.yt-dlp/config.txt\f[R] همچنین ببینید: نکات مربوط به متغیرهای محیطی .RE .IP "5." 3 \f[B]پیکربندی سیستم (System Configuration)\f[R]: .RS 4 .IP \[bu] 2 \f[V]/etc/yt-dlp.conf\f[R] .IP \[bu] 2 \f[V]/etc/yt-dlp/config\f[R] .IP \[bu] 2 \f[V]/etc/yt-dlp/config.txt\f[R] .RE .PP برای نمونه، با فایل پیکربندی زیر، yt-dlp همواره صدا را استخراج می‌کند، mtime را کپی می‌کند، از یک پروکسی استفاده می‌نماید و تمام ویدیوها را درون دایرکتوری \f[V]YouTube\f[R] در دایرکتوری خانگی شما ذخیره می‌کند: .IP .nf \f[C] # 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 \[ti]/YouTube/%(title)s.%(ext)s \f[R] .fi .PP \f[B]نکته\f[R]: گزینه‌ها در یک فایل پیکربندی دقیقاً همان گزینه‌ها یا سوییچ‌های مورد استفاده در فراخوانی‌های عادی خط فرمان هستند؛ بنابراین پس از \f[V]-\f[R] یا \f[V]--\f[R] \f[B]نباید هیچ فاصله‌ای وجود داشته باشد\f[R]، به عنوان مثال \f[V]-o\f[R] یا \f[V]--proxy\f[R] اما نه \f[V]- o\f[R] یا \f[V]-- proxy\f[R]. همچنین در صورت نیاز باید همانند شل یونیکس نقل‌قول شوند. .PP اگر می‌خواهید تمام فایل‌های پیکربندی را برای یک اجرای خاص yt-dlp غیرفعال کنید، می‌توانید از \f[V]--ignore-config\f[R] استفاده نمایید. اگر \f[V]--ignore-config\f[R] درون هر فایل پیکربندی یافت شود، هیچ پیکربندی دیگری بارگذاری نخواهد شد. برای مثال، وجود این گزینه در فایل پیکربندی قابل‌حمل، از بارگذاری پیکربندی‌های خانه، کاربر و سیستم جلوگیری می‌کند. علاوه بر این، (برای سازگاری رو به عقب) اگر \f[V]--ignore-config\f[R] درون فایل پیکربندی سیستم یافت شود، پیکربندی کاربر بارگذاری نخواهد شد..SS کدگذاری فایل پیکربندی .PP فایل‌های پیکربندی در صورت وجود UTF BOM بر اساس آن، و در غیر این صورت با کدگذاری برگرفته از لوکال (locale) سیستم رمزگشایی می‌شوند. .PP اگر می‌خواهید فایل شما به شیوهٔ دیگری رمزگشایی شود، عبارت \f[V]# coding: ENCODING\f[R] را به ابتدای فایل اضافه کنید (برای نمونه: \f[V]# coding: shift-jis\f[R]). نباید هیچ نویسه‌ای پیش از آن قرار گیرد، حتی فاصله یا BOM. .SS احراز هویت با netrc .PP همچنین ممکن است بخواهید برای استخراج‌کنندگانی که از احراز هویت پشتیبانی می‌کنند (از طریق ارائهٔ نام کاربری و گذرواژه با \f[V]--username\f[R] و \f[V]--password\f[R])، ذخیره‌سازی خودکار اعتبارنامه‌ها را پیکربندی کنید تا نیازی نباشد در هر بار اجرای yt-dlp اعتبارنامه‌ها را به عنوان آرگومان‌های خط فرمان ارسال کنید و از ثبت گذرواژه‌های متنی ساده در تاریخچهٔ دستورات پوسته جلوگیری شود. می‌توانید این کار را با استفاده از یک فایل \f[V].netrc\f[R] (https://stackoverflow.com/tags/.netrc/info) به ازای هر استخراج‌کننده انجام دهید. برای این منظور، باید یک فایل \f[V].netrc\f[R] در \f[V]--netrc-location\f[R] ایجاد کرده و مجوزهای دسترسی آن را تنها به خواندن/نوشتن توسط خودتان محدود کنید: .IP .nf \f[C] touch ${HOME}/.netrc chmod a-rwx,u+rw ${HOME}/.netrc \f[R] .fi .PP پس از آن، می‌توانید اعتبارنامه‌ها را برای یک استخراج‌کننده در قالب زیر اضافه کنید، که در آن \f[I]extractor\f[R] نام استخراج‌کننده با حروف کوچک است: .IP .nf \f[C] machine login password \f[R] .fi .PP برای نمونه: .IP .nf \f[C] machine youtube login myaccount\[at]gmail.com password my_youtube_password machine twitch login my_twitch_account_name password my_twitch_password \f[R] .fi .PP برای فعال‌سازی احراز هویت با فایل \f[V].netrc\f[R]، باید گزینهٔ \f[V]--netrc\f[R] را به yt-dlp بدهید یا آن را در فایل پیکربندی قرار دهید. .PP مکان پیش‌فرض فایل .netrc مسیر \f[V]\[ti]\f[R] است (پایین را ببینید). .PP به‌عنوان جایگزینی برای استفاده از فایل \f[V].netrc\f[R] (که نقطه‌ضعف نگهداری گذرواژه‌های شما در یک فایل متنی ساده را دارد)، می‌توانید یک دستور سفارشی پوسته را برای تأمین اعتبارنامه‌های یک استخراج‌کننده پیکربندی کنید. این کار با ارائهٔ پارامتر \f[V]--netrc-cmd\f[R] انجام می‌شود؛ این دستور باید اعتبارنامه‌ها را در قالب netrc در خروجی چاپ کند و در صورت موفقیت مقدار \f[V]0\f[R] را بازگرداند، سایر مقادیر به عنوان خطا در نظر گرفته خواهند شد. \f[V]{}\f[R] در دستور با نام استخراج‌کننده جایگزین خواهد شد تا امکان انتخاب اعتبارنامه‌ها برای استخراج‌کنندهٔ مورد نظر فراهم شود. .PP برای نمونه: جهت استفاده از یک فایل رمزگذاری‌شدهٔ \f[V].netrc\f[R] ذخیره‌شده به عنوان \f[V].authinfo.gpg\f[R] .IP .nf \f[C] yt-dlp --netrc-cmd \[aq]gpg --decrypt \[ti]/.authinfo.gpg\[aq] \[aq]https://www.youtube.com/watch?v=YE7VzlLtp-4\[aq] \f[R] .fi .SS نکاتی درباره متغیرهای محیطی .IP \[bu] 2 متغیرهای محیطی معمولاً در UNIX به صورت \f[V]${VARIABLE}\f[R]/\f[V]$VARIABLE\f[R] و در Windows به صورت \f[V]%VARIABLE%\f[R] مشخص می‌شوند؛ اما در این مستندات همواره به صورت \f[V]${VARIABLE}\f[R] نشان داده شده‌اند .IP \[bu] 2 همچنین yt-dlp امکان استفاده از متغیرها به سبک UNIX در Windows را برای گزینه‌های مسیرمانند فراهم می‌کند؛ مانند \f[V]--output\f[R]، \f[V]--config-locations\f[R] .IP \[bu] 2 در صورت تنظیم نشدن، مقدار پیش‌فرض \f[V]${XDG_CONFIG_HOME}\f[R] برابر با \f[V]\[ti]/.config\f[R] و مقدار پیش‌فرض \f[V]${XDG_CACHE_HOME}\f[R] برابر با \f[V]\[ti]/.cache\f[R] خواهد بود .IP \[bu] 2 در Windows، مسیر \f[V]\[ti]\f[R] در صورت وجود به \f[V]${HOME}\f[R] اشاره می‌کند؛ و در غیر این صورت، به \f[V]${USERPROFILE}\f[R] یا \f[V]${HOMEDRIVE}${HOMEPATH}\f[R] .IP \[bu] 2 در Windows، مقدار \f[V]${USERPROFILE}\f[R] عموماً به \f[V]C:\[rs]Users\[rs]\f[R] و \f[V]${APPDATA}\f[R] به \f[V]${USERPROFILE}\[rs]AppData\[rs]Roaming\f[R] اشاره دارد.SH "الگوی خروجی (OUTPUT TEMPLATE)" .PP گزینهٔ \f[V]-o\f[R] برای تعیین یک الگو برای نام‌های فایل خروجی به کار می‌رود، در حالی که گزینهٔ \f[V]-P\f[R] برای مشخص کردن مسیری که هر نوع فایل باید در آن ذخیره شود استفاده می‌شود. .PP ساده‌ترین کاربرد \f[V]-o\f[R] هنگام دانلود یک فایل تکی این است که هیچ آرگومان الگویی تعیین نشود، مانند \f[V]yt-dlp -o funny_video.flv \[dq]https://some/video\[dq]\f[R] (کدنویسی ثابت پسوند فایل به این صورت توصیه \f[I]نمی‌شود\f[R] و ممکن است برخی پس‌پردازش‌ها را با شکست مواجه کند). .PP با این حال، الگو ممکن است شامل دنباله‌های خاصی نیز باشد که هنگام دانلود هر ویدیو جایگزین می‌شوند. این دنباله‌های خاص ممکن است بر اساس عملیات قالب‌بندی رشته در پایتون (https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting) قالب‌بندی شوند، مانند \f[V]%(NAME)s\f[R] یا \f[V]%(NAME)05d\f[R]. برای وضوح بیشتر، این الگو شامل یک علامت درصد است که در پی آن نامی درون پرانتز و سپس عملیات قالب‌بندی می‌آید. .PP خود نام‌های فیلد (بخش داخل پرانتز) نیز می‌توانند قالب‌بندی‌های خاصی داشته باشند: .IP "1." 3 \f[B]پیمایش اشیاء (Object traversal)\f[R]: دیکشنری‌ها و لیست‌های موجود در متادیتا را می‌توان با استفاده از جداکنندهٔ نقطه \f[V].\f[R] پیمایش کرد؛ مانند \f[V]%(tags.0)s\f[R]، \f[V]%(subtitles.en.-1.ext)s\f[R]. می‌توانید با استفاده از دو‌نقطه \f[V]:\f[R] برش‌زنی (slicing) پایتون را انجام دهید؛ مانند \f[V]%(id.3:7)s\f[R]، \f[V]%(id.6:2:-1)s\f[R]، \f[V]%(formats.:.format_id)s\f[R]. از آکوالاد \f[V]{}\f[R] می‌توان برای ساخت دیکشنری‌هایی فقط با کلیدهای مشخص استفاده کرد؛ مانند \f[V]%(formats.:.{format_id,height})#j\f[R]. نام فیلد خالی \f[V]%()s\f[R] به کل infodict اشاره دارد؛ مانند \f[V]%(.{id,title})s\f[R]. توجه داشته باشید که تمام فیلدهایی که با این روش در دسترس قرار می‌گیرند در زیر فهرست نشده‌اند. برای مشاهدهٔ چنین فیلدهایی از \f[V]-j\f[R] استفاده کنید. .IP "2." 3 \f[B]محاسبات حسابی (Arithmetic)\f[R]: محاسبات حسابی ساده را می‌توان روی فیلدهای عددی با استفاده از \f[V]+\f[R]، \f[V]-\f[R] و \f[V]*\f[R] انجام داد. مانند \f[V]%(playlist_index+10)03d\f[R]، \f[V]%(n_entries+1-playlist_index)d\f[R] .IP "3." 3 \f[B]قالب‌بندی تاریخ/زمان (Date/time Formatting)\f[R]: فیلدهای تاریخ/زمان را می‌توان بر اساس قالب‌بندی strftime (https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes) با تعیین آن به صورت جدا شده از نام فیلد با یک \f[V]>\f[R] قالب‌بندی کرد. مانند \f[V]%(duration>%H-%M-%S)s\f[R]، \f[V]%(upload_date>%Y-%m-%d)s\f[R]، \f[V]%(epoch-3600>%H-%M-%S)s\f[R] .IP "4." 3 \f[B]گزینه‌های جایگزین (Alternatives)\f[R]: فیلدهای جایگزین را می‌توان با جداکنندهٔ \f[V],\f[R] مشخص کرد. مانند \f[V]%(release_date>%Y,upload_date>%Y|Unknown)s\f[R] .IP "5." 3 \f[B]جایگزینی (Replacement)\f[R]: یک مقدار جایگزین را می‌توان با استفاده از جداکنندهٔ \f[V]&\f[R] و مطابق با ریززبان \f[V]str.format\f[R] (https://docs.python.org/3/library/string.html#format-specification-mini-language) مشخص کرد. اگر فیلد خالی \f[I]نباشد\f[R]، این مقدار جایگزین به جای محتوای واقعی فیلد استفاده خواهد شد. این کار پس از بررسی فیلدهای جایگزین انجام می‌شود؛ بنابراین در صورتی که \f[I]هر کدام\f[R] از فیلدهای جایگزین خالی \f[I]نباشد\f[R]، جایگزینی اعمال می‌شود. مانند \f[V]%(chapters&has chapters|no chapters)s\f[R]، \f[V]%(title&TITLE={:>20}|NO TITLE)s\f[R] .IP "6." 3 \f[B]پیش‌فرض (Default)\f[R]: می‌توان با استفاده از جداکنندهٔ \f[V]|\f[R] یک مقدار پیش‌فرض لفظی را برای مواقعی که فیلد خالی است تعیین کرد. این مقدار بر \f[V]--output-na-placeholder\f[R] اولویت دارد. مانند \f[V]%(uploader|Unknown)s\f[R] .IP "7." 3 \f[B]تبدیل‌های بیشتر (More Conversions)\f[R]: علاوه بر انواع قالب‌های معمول \f[V]diouxXeEfFgGcrs\f[R]، برنامهٔ yt-dlp افزون بر این تبدیل به موارد زیر را پشتیبانی می‌کند: \f[V]B\f[R] = بایت‌ها (\f[B]B\f[R]ytes)، \f[V]j\f[R] = خروجی \f[B]j\f[R]son (پرچم \f[V]#\f[R] برای چاپ زیبا، \f[V]+\f[R] برای Unicode)، \f[V]h\f[R] = گریزدهی به HTML، \f[V]l\f[R] = یک لیست (\f[B]l\f[R]ist) جدا شده با کاما (پرچم \f[V]#\f[R] برای جداسازی با خط جدید \f[V]\[rs]n\f[R])، \f[V]q\f[R] = رشتهٔ نقل‌قول شده (\f[B]q\f[R]uoted) برای ترمینال (پرچم \f[V]#\f[R] برای تقسیم یک لیست به آرگومان‌های مختلف)، \f[V]D\f[R] = افزودن پسوندهای دهدهی (\f[B]D\f[R]ecimal) (مانند 10M) (پرچم \f[V]#\f[R] برای استفاده از ۱۰۲۴ به عنوان فاکتور)، و \f[V]S\f[R] = پاکسازی (\f[B]S\f[R]anitize) به عنوان نام فایل (پرچم \f[V]#\f[R] برای حالت محدود). .IP "8." 3 \f[B]عادی‌سازی یونیکد (Unicode normalization)\f[R]: نوع قالب \f[V]U\f[R] می‌تواند برای عادی‌سازی NFC یونیکد (https://docs.python.org/3/library/unicodedata.html#unicodedata.normalize) استفاده شود. پرچم فرم متناوب (\f[V]#\f[R]) عادی‌سازی را به NFD تغییر می‌دهد و پرچم تبدیل \f[V]+\f[R] را می‌توان برای عادی‌سازی برابری سازگاری NFKC/NFKD به کار برد. مانند \f[V]%(title)+.100U\f[R] که NFKC است. .PP به طور خلاصه، نحو کلی برای یک فیلد به این صورت است: .IP .nf \f[C] %(name[.keys][addition][>strf][,alternate][&replacement][|default])[flags][width][.precision][length]type \f[R] .fi .PP علاوه بر این، می‌توانید الگوهای خروجی متفاوتی را برای فایل‌های گوناگون متادیتا جدا از الگوی خروجی عمومی تنظیم کنید؛ این کار با مشخص کردن نوع فایل و در پی آن الگو با جداکنندهٔ دو‌نقطه \f[V]:\f[R] انجام می‌شود. انواع مختلف فایل‌های پشتیبانی‌شده عبارتند از \f[V]subtitle\f[R]، \f[V]thumbnail\f[R]، \f[V]description\f[R]، \f[V]annotation\f[R] (منسوخ‌شده)، \f[V]infojson\f[R]، \f[V]link\f[R]، \f[V]pl_thumbnail\f[R]، \f[V]pl_description\f[R]، \f[V]pl_infojson\f[R]، \f[V]chapter\f[R]، \f[V]pl_video\f[R]. مانند \f[V]-o \[dq]%(title)s.%(ext)s\[dq] -o \[dq]thumbnail:%(title)s/%(title)s.%(ext)s\[dq]\f[R] که تصویر بندانگشتی را در پوشه‌ای هم‌نام با ویدیو قرار می‌دهد. اگر هر یک از الگوها خالی باشد، آن نوع فایل نوشته نخواهد شد. مانند \f[V]--write-thumbnail -o \[dq]thumbnail:\[dq]\f[R] که تصاویر بندانگشتی را فقط برای فهرست‌های پخش می‌نویسد و نه برای ویدیو. .PP .PP \f[B]نکته\f[R]: به دلیل پس‌پردازش (مانند ادغام کردن و غیره)، نام فایل خروجی واقعی ممکن است متفاوت باشد. از \f[V]--print after_move:filepath\f[R] برای دریافت نام فایل پس از اتمام کامل پس‌پردازش استفاده کنید. .PP فیلدهای موجود عبارتند از: .IP \[bu] 2 \f[V]id\f[R] (string): شناسهٔ ویدیو .IP \[bu] 2 \f[V]title\f[R] (string): عنوان ویدیو .IP \[bu] 2 \f[V]fulltitle\f[R] (string): عنوان ویدیو بدون در نظر گرفتن برچسب زمانی زنده و عنوان عمومی .IP \[bu] 2 \f[V]ext\f[R] (string): پسوند نام فایل ویدیو .IP \[bu] 2 \f[V]alt_title\f[R] (string): عنوان ثانویهٔ ویدیو .IP \[bu] 2 \f[V]description\f[R] (string): توضیحات ویدیو .IP \[bu] 2 \f[V]display_id\f[R] (string): شناسهٔ جایگزین برای ویدیو .IP \[bu] 2 \f[V]uploader\f[R] (string): نام کامل بارگذاری‌کنندهٔ ویدیو .IP \[bu] 2 \f[V]uploader_id\f[R] (string): نام مستعار یا شناسهٔ بارگذاری‌کنندهٔ ویدیو .IP \[bu] 2 \f[V]uploader_url\f[R] (string): نشانی (URL) پروفایل بارگذاری‌کنندهٔ ویدیو .IP \[bu] 2 \f[V]license\f[R] (string): نام مجوزی که ویدیو تحت آن منتشر شده است .IP \[bu] 2 \f[V]creators\f[R] (list): سازندگان ویدیو .IP \[bu] 2 \f[V]creator\f[R] (string): سازندگان ویدیو؛ جدا شده با کاما .IP \[bu] 2 \f[V]timestamp\f[R] (numeric): برچسب زمانی یونیکس (UNIX timestamp) لحظه‌ای که ویدیو در دسترس قرار گرفت .IP \[bu] 2 \f[V]upload_date\f[R] (string): تاریخ بارگذاری ویدیو در ساعت هماهنگ جهانی (UTC) به صورت YYYYMMDD .IP \[bu] 2 \f[V]release_timestamp\f[R] (numeric): برچسب زمانی یونیکس لحظه‌ای که ویدیو منتشر شد .IP \[bu] 2 \f[V]release_date\f[R] (string): تاریخ (YYYYMMDD) انتشار ویدیو در ساعت هماهنگ جهانی (UTC) .IP \[bu] 2 \f[V]release_year\f[R] (numeric): سال (YYYY) انتشار ویدیو یا آلبوم .IP \[bu] 2 \f[V]modified_timestamp\f[R] (numeric): برچسب زمانی یونیکس لحظه‌ای که ویدیو آخرین بار تغییر یافت .IP \[bu] 2 \f[V]modified_date\f[R] (string): تاریخ (YYYYMMDD) آخرین تغییر ویدیو در ساعت هماهنگ جهانی (UTC) .IP \[bu] 2 \f[V]channel\f[R] (string): نام کامل کانالی که ویدیو در آن بارگذاری شده است.IP \[bu] 2 \f[V]channel_id\f[R] (string): شناسه کانال .IP \[bu] 2 \f[V]channel_url\f[R] (string): نشانی اینترنتی (URL) کانال .IP \[bu] 2 \f[V]channel_follower_count\f[R] (numeric): تعداد دنبال‌کنندگان کانال .IP \[bu] 2 \f[V]channel_is_verified\f[R] (boolean): این‌که آیا کانال در پلتفرم تأیید شده (verified) است یا خیر .IP \[bu] 2 \f[V]location\f[R] (string): مکان فیزیکی که ویدیو در آن فیلم‌برداری شده است .IP \[bu] 2 \f[V]duration\f[R] (numeric): مدت‌زمان ویدیو به ثانیه .IP \[bu] 2 \f[V]duration_string\f[R] (string): مدت‌زمان ویدیو (HH:mm:ss) .IP \[bu] 2 \f[V]view_count\f[R] (numeric): تعداد کاربرانی که ویدیو را در پلتفرم تماشا کرده‌اند .IP \[bu] 2 \f[V]concurrent_view_count\f[R] (numeric): تعداد کاربرانی که در حال حاضر ویدیو را در پلتفرم تماشا می‌کنند .IP \[bu] 2 \f[V]like_count\f[R] (numeric): تعداد امتیازهای مثبت (لایک‌های) ویدیو .IP \[bu] 2 \f[V]dislike_count\f[R] (numeric): تعداد امتیازهای منفی (دیس‌لایک‌های) ویدیو .IP \[bu] 2 \f[V]repost_count\f[R] (numeric): تعداد بازنشرهای ویدیو .IP \[bu] 2 \f[V]average_rating\f[R] (numeric): میانگین امتیاز داده‌شده توسط کاربران؛ مقیاس مورد استفاده به صفحه وب بستگی دارد .IP \[bu] 2 \f[V]comment_count\f[R] (numeric): تعداد دیدگاه‌های ویدیو (برای برخی استخراج‌کننده‌ها، دیدگاه‌ها فقط در پایان بارگیری می‌شوند و در نتیجه این فیلد قابل استفاده نیست) .IP \[bu] 2 \f[V]save_count\f[R] (numeric): تعداد دفعاتی که ویدیو ذخیره یا نشانه‌گذاری شده است .IP \[bu] 2 \f[V]age_limit\f[R] (numeric): محدودیت سنی برای ویدیو (به سال) .IP \[bu] 2 \f[V]live_status\f[R] (string): یکی از موارد \[dq]not_live\[dq]، \[dq]is_live\[dq]، \[dq]is_upcoming\[dq]، \[dq]was_live\[dq]، \[dq]post_live\[dq] (پخش زنده بوده، اما VOD هنوز پردازش نشده است) .IP \[bu] 2 \f[V]is_live\f[R] (boolean): این‌که آیا این ویدیو یک پخش زنده است یا یک ویدیوی با طول ثابت .IP \[bu] 2 \f[V]was_live\f[R] (boolean): این‌که آیا این ویدیو در اصل یک پخش زنده بوده است یا خیر .IP \[bu] 2 \f[V]playable_in_embed\f[R] (string): این‌که آیا پخش این ویدیو در پخش‌کننده‌های جاسازی‌شده (embedded) در دیگر سایت‌ها مجاز است یا خیر .IP \[bu] 2 \f[V]availability\f[R] (string): وضعیت دسترسی به ویدیو که یکی از مقادیر \[dq]private\[dq]، \[dq]premium_only\[dq]، \[dq]subscriber_only\[dq]، \[dq]needs_auth\[dq]، \[dq]unlisted\[dq] یا \[dq]public\[dq] است .IP \[bu] 2 \f[V]media_type\f[R] (string): نوع رسانه طبق دسته‌بندی سایت، مانند \[dq]episode\[dq]، \[dq]clip\[dq]، \[dq]trailer\[dq] .IP \[bu] 2 \f[V]start_time\f[R] (numeric): زمان به ثانیه که پخش باید از آنجا آغاز شود، همان‌طور که در URL مشخص شده است .IP \[bu] 2 \f[V]end_time\f[R] (numeric): زمان به ثانیه که پخش باید در آن پایان یابد، همان‌طور که در URL مشخص شده است .IP \[bu] 2 \f[V]extractor\f[R] (string): نام استخراج‌کننده .IP \[bu] 2 \f[V]extractor_key\f[R] (string): نام کلید استخراج‌کننده .IP \[bu] 2 \f[V]epoch\f[R] (numeric): زمان بر مبنای مبدأ یونیکس (Unix epoch) هنگام تکمیل استخراج اطلاعات .IP \[bu] 2 \f[V]autonumber\f[R] (numeric): عددی که با هر بارگیری افزایش می‌یابد، با شروع از \f[V]--autonumber-start\f[R]، تکمیل‌شده با صفرهای پیشین تا ۵ رقم .IP \[bu] 2 \f[V]video_autonumber\f[R] (numeric): عددی که با هر ویدیو افزایش می‌یابد .IP \[bu] 2 \f[V]n_entries\f[R] (numeric): تعداد کل موارد استخراج‌شده در فهرست پخش .IP \[bu] 2 \f[V]playlist_id\f[R] (string): شناسه فهرست پخشی که شامل ویدیو است .IP \[bu] 2 \f[V]playlist_title\f[R] (string): نام فهرست پخشی که شامل ویدیو است .IP \[bu] 2 \f[V]playlist\f[R] (string): مقدار \f[V]playlist_title\f[R] در صورت وجود، وگرنه \f[V]playlist_id\f[R] .IP \[bu] 2 \f[V]playlist_count\f[R] (numeric): تعداد کل موارد موجود در فهرست پخش. اگر کل فهرست پخش استخراج نشده باشد، ممکن است ناشناخته باشد .IP \[bu] 2 \f[V]playlist_index\f[R] (numeric): نمایه (شاخص) ویدیو در فهرست پخش، تکمیل‌شده با صفرهای پیشین بر اساس نمایه نهایی .IP \[bu] 2 \f[V]playlist_autonumber\f[R] (numeric): موقعیت ویدیو در صف بارگیری فهرست پخش، تکمیل‌شده با صفرهای پیشین بر اساس طول کل فهرست پخش .IP \[bu] 2 \f[V]playlist_uploader\f[R] (string): نام کامل بارگذاری‌کننده فهرست پخش .IP \[bu] 2 \f[V]playlist_uploader_id\f[R] (string): نام مستعار یا شناسه بارگذاری‌کننده فهرست پخش .IP \[bu] 2 \f[V]playlist_channel\f[R] (string): نام نمایشی کانالی که فهرست پخش را بارگذاری کرده است .IP \[bu] 2 \f[V]playlist_channel_id\f[R] (string): شناسه کانالی که فهرست پخش را بارگذاری کرده است .IP \[bu] 2 \f[V]playlist_webpage_url\f[R] (string): نشانی اینترنتی (URL) صفحه وب فهرست پخش .IP \[bu] 2 \f[V]webpage_url\f[R] (string): نشانی اینترنتی (URL) صفحه وب ویدیو که اگر به yt-dlp داده شود، باید همان نتیجه را دوباره حاصل کند .IP \[bu] 2 \f[V]webpage_url_basename\f[R] (string): نام پایه (basename) نشانی اینترنتی صفحه وب .IP \[bu] 2 \f[V]webpage_url_domain\f[R] (string): دامنه (domain) نشانی اینترنتی صفحه وب .IP \[bu] 2 \f[V]original_url\f[R] (string): نشانی اینترنتی (URL) ارائه‌شده توسط کاربر (یا همان \f[V]webpage_url\f[R] برای موارد فهرست پخش) .IP \[bu] 2 \f[V]categories\f[R] (list): فهرستی از دسته‌هایی که ویدیو به آن‌ها تعلق دارد .IP \[bu] 2 \f[V]tags\f[R] (list): فهرستی از برچسب‌های اختصاص‌یافته به ویدیو .IP \[bu] 2 \f[V]cast\f[R] (list): فهرستی از اعضای گروه بازیگران یا عوامل .PP تمام فیلدهای بخش Filtering Formats نیز قابل استفاده هستند .PP در دسترس برای ویدیویی که به یک فصل یا بخش منطقی تعلق دارد: .IP \[bu] 2 \f[V]chapter\f[R] (string): نام یا عنوان فصلی که ویدیو به آن تعلق دارد .IP \[bu] 2 \f[V]chapter_number\f[R] (numeric): شماره فصلی که ویدیو به آن تعلق دارد .IP \[bu] 2 \f[V]chapter_id\f[R] (string): شناسه فصلی که ویدیو به آن تعلق دارد .PP در دسترس برای ویدیویی که یک قسمت از یک سریال یا برنامه است: .IP \[bu] 2 \f[V]series\f[R] (string): عنوان سریال یا برنامه‌ای که قسمت ویدیو به آن تعلق دارد .IP \[bu] 2 \f[V]series_id\f[R] (string): شناسه سریال یا برنامه‌ای که قسمت ویدیو به آن تعلق دارد .IP \[bu] 2 \f[V]season\f[R] (string): عنوان فصلی که قسمت ویدیو به آن تعلق دارد .IP \[bu] 2 \f[V]season_number\f[R] (numeric): شماره فصلی که قسمت ویدیو به آن تعلق دارد .IP \[bu] 2 \f[V]season_id\f[R] (string): شناسه فصلی که قسمت ویدیو به آن تعلق دارد .IP \[bu] 2 \f[V]episode\f[R] (string): عنوان قسمت ویدیو .IP \[bu] 2 \f[V]episode_number\f[R] (numeric): شماره قسمت ویدیو در یک فصل .IP \[bu] 2 \f[V]episode_id\f[R] (string): شناسه قسمت ویدیو .PP در دسترس برای رسانه‌ای که یک قطعه یا بخشی از یک آلبوم موسیقی است: .IP \[bu] 2 \f[V]track\f[R] (string): عنوان قطعه .IP \[bu] 2 \f[V]track_number\f[R] (numeric): شماره قطعه در یک آلبوم یا دیسک .IP \[bu] 2 \f[V]track_id\f[R] (string): شناسه قطعه.IP \[bu] 2 \f[V]artists\f[R] (فهرست): هنرمند(های) قطعه .IP \[bu] 2 \f[V]artist\f[R] (رشته): هنرمند(های) قطعه؛ جداشده با ویرگول .IP \[bu] 2 \f[V]genres\f[R] (فهرست): سبک(های) قطعه .IP \[bu] 2 \f[V]genre\f[R] (رشته): سبک(های) قطعه؛ جداشده با ویرگول .IP \[bu] 2 \f[V]composers\f[R] (فهرست): آهنگساز(های) اثر .IP \[bu] 2 \f[V]composer\f[R] (رشته): آهنگساز(های) اثر؛ جداشده با ویرگول .IP \[bu] 2 \f[V]album\f[R] (رشته): عنوان آلبومی که قطعه به آن تعلق دارد .IP \[bu] 2 \f[V]album_type\f[R] (رشته): نوع آلبوم .IP \[bu] 2 \f[V]album_artists\f[R] (فهرست): تمامی هنرمندانی که در آلبوم حضور دارند .IP \[bu] 2 \f[V]album_artist\f[R] (رشته): تمامی هنرمندانی که در آلبوم حضور دارند؛ جداشده با ویرگول .IP \[bu] 2 \f[V]disc_number\f[R] (عددی): شماره دیسک یا سایر رسانه‌های فیزیکی که قطعه به آن تعلق دارد .PP تنها هنگام استفاده از \f[V]--download-sections\f[R] و برای پیشوند \f[V]chapter:\f[R] هنگام استفاده از \f[V]--split-chapters\f[R] برای ویدیوهای دارای فصل‌های داخلی در دسترس است: .IP \[bu] 2 \f[V]section_title\f[R] (رشته): عنوان فصل .IP \[bu] 2 \f[V]section_number\f[R] (عددی): شماره فصل درون فایل .IP \[bu] 2 \f[V]section_start\f[R] (عددی): زمان آغاز فصل به ثانیه .IP \[bu] 2 \f[V]section_end\f[R] (عددی): زمان پایان فصل به ثانیه .PP تنها هنگام استفاده در \f[V]--print\f[R] در دسترس است: .IP \[bu] 2 \f[V]urls\f[R] (رشته): نشانی‌های وب (URL) همه فرمت‌های درخواست‌شده، هر کدام در یک خط .IP \[bu] 2 \f[V]filename\f[R] (رشته): نام فایل ویدیو. توجه داشته باشید که نام واقعی فایل ممکن است متفاوت باشد .IP \[bu] 2 \f[V]formats_table\f[R] (جدول): جدول فرمت‌های ویدیو همان‌گونه که توسط \f[V]--list-formats\f[R] چاپ می‌شود .IP \[bu] 2 \f[V]thumbnails_table\f[R] (جدول): جدول فرمت‌های بندانگشتی همان‌گونه که توسط \f[V]--list-thumbnails\f[R] چاپ می‌شود .IP \[bu] 2 \f[V]subtitles_table\f[R] (جدول): جدول فرمت‌های زیرنویس همان‌گونه که توسط \f[V]--list-subs\f[R] چاپ می‌شود .IP \[bu] 2 \f[V]automatic_captions_table\f[R] (جدول): جدول فرمت‌های زیرنویس خودکار همان‌گونه که توسط \f[V]--list-subs\f[R] چاپ می‌شود .PP تنها پس از دانلود ویدیو (\f[V]post_process\f[R]/\f[V]after_move\f[R]) در دسترس است: .IP \[bu] 2 \f[V]filepath\f[R]: مسیر واقعی فایل ویدیوی دانلودشده .PP تنها در \f[V]--sponsorblock-chapter-title\f[R] در دسترس است: .IP \[bu] 2 \f[V]start_time\f[R] (عددی): زمان آغاز فصل به ثانیه .IP \[bu] 2 \f[V]end_time\f[R] (عددی): زمان پایان فصل به ثانیه .IP \[bu] 2 \f[V]categories\f[R] (فهرست): دسته‌های SponsorBlock (https://wiki.sponsor.ajay.app/w/Types#Category) که فصل به آن‌ها تعلق دارد .IP \[bu] 2 \f[V]category\f[R] (رشته): کوچک‌ترین دسته SponsorBlock که فصل به آن تعلق دارد .IP \[bu] 2 \f[V]category_names\f[R] (فهرست): نام‌های کاربرپسند دسته‌ها .IP \[bu] 2 \f[V]name\f[R] (رشته): نام کاربرپسند کوچک‌ترین دسته .IP \[bu] 2 \f[V]type\f[R] (رشته): نوع اقدام SponsorBlock (https://wiki.sponsor.ajay.app/w/Types#Action_Type) برای فصل .PP هر یک از توالی‌های یادشده هنگام استفاده در یک الگوی خروجی، با مقدار واقعی متناظر با نام توالی جایگزین خواهند شد. برای نمونه، برای \f[V]-o %(title)s-%(id)s.%(ext)s\f[R] و یک ویدیوی mp4 با عنوان \f[V]yt-dlp test video\f[R] و شناسه \f[V]YE7VzlLtp-4\f[R]، این مورد منجر به ایجاد فایل \f[V]yt-dlp test video-YE7VzlLtp-4.mp4\f[R] در دایرکتوری جاری خواهد شد. .PP \f[B]نکته\f[R]: وجود برخی از توالی‌ها تضمین‌شده نیست، زیرا به فراداده‌های به‌دست‌آمده توسط یک استخراج‌کننده خاص وابسته هستند. چنین توالی‌هایی با مقدار جای‌نگه‌دار مشخص‌شده با \f[V]--output-na-placeholder\f[R] (به‌طور پیش‌فرض \f[V]NA\f[R]) جایگزین خواهند شد. .PP \f[B]راهنمایی\f[R]: خروجی \f[V]-j\f[R] را بررسی کنید تا مشخص شود کدام فیلدها برای آن URL خاص در دسترس هستند .PP برای توالی‌های عددی، می‌توانید از قالب‌بندی‌های مرتبط با اعداد (https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting) استفاده کنید؛ برای نمونه، \f[V]%(view_count)05d\f[R] منجر به رشته‌ای با تعداد بازدید پرشده با صفر تا ۵ نویسه می‌شود، مانند \f[V]00042\f[R]. .PP الگوهای خروجی همچنین می‌توانند شامل مسیر سلسله‌مراتبی دلخواه باشند، مانند \f[V]-o \[dq]%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s\[dq]\f[R] که منجر به دانلود هر ویدیو در دایرکتوری متناظر با این الگوی مسیر خواهد شد. هرگونه دایرکتوری ناموجود به‌طور خودکار برای شما ایجاد خواهد شد. .PP برای استفاده از نویسه درصد لفظی در یک الگوی خروجی، از \f[V]%%\f[R] استفاده کنید. برای ارسال خروجی به stdout از \f[V]-o -\f[R] استفاده کنید. .PP الگوی پیش‌فرض فعلی \f[V]%(title)s [%(id)s].%(ext)s\f[R] است. .PP در برخی موارد، ممکن است نویسه‌های خاصی مانند 中، فاصله‌ها، یا & را نخواهید، مانند زمانی که نام فایل دانلودشده را به یک سیستم Windows یا نام فایل را از طریق کانالی ناامن برای داده‌های ۸ بیتی منتقل می‌کنید. در این موارد، پرچم \f[V]--restrict-filenames\f[R] را اضافه کنید تا عنوان کوتاه‌تری دریافت کنید..SS "مثال‌های الگوی خروجی (Output template examples)" .IP .nf \f[C] $ yt-dlp --print filename -o \[dq]test video.%(ext)s\[dq] ptd1NN40vMw test video.webm # نام صریح با پسوند صحیح $ yt-dlp --print filename -o \[dq]%(title)s.%(ext)s\[dq] ptd1NN40vMw To\[aq]y!🤯😂🤦🏻‍♂️.webm # انواع نویسه‌های نامتعارف $ yt-dlp --print filename -o \[dq]%(title)s.%(ext)s\[dq] ptd1NN40vMw --restrict-filenames To_y.webm # نام فایل محدودشده # بارگیری ویدیوهای فهرست‌پخش یوتیوب در پوشه‌ای جداگانه بر پایه ترتیب ویدیو در فهرست‌پخش $ yt-dlp -o \[dq]%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s\[dq] \[dq]https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re\[dq] # بارگیری ویدیوهای فهرست‌پخش یوتیوب در پوشه‌های جداگانه بر اساس سال بارگذاری آن‌ها $ yt-dlp -o \[dq]%(upload_date>%Y)s/%(title)s.%(ext)s\[dq] \[dq]https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re\[dq] # افزودن نمایه فهرست‌پخش با جداکننده \[dq] - \[dq] به عنوان پیشوند، تنها در صورت موجود بودن $ yt-dlp -o \[dq]%(playlist_index&{} - |)s%(title)s.%(ext)s\[dq] YE7VzlLtp-4 \[dq]https://www.youtube.com/user/TheLinuxFoundation/playlists\[dq] # بارگیری تمام فهرست‌های پخش کانال/کاربر یوتیوب با نگهداری هر فهرست‌پخش در پوشه‌ای جداگانه: $ yt-dlp -o \[dq]%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s\[dq] \[dq]https://www.youtube.com/user/TheLinuxFoundation/playlists\[dq] # بارگیری دوره Udemy با نگهداری هر فصل در پوشه‌ای جداگانه زیر پوشه MyVideos در دایرکتوری خانگی شما $ yt-dlp -u user -p password -P \[dq]\[ti]/MyVideos\[dq] -o \[dq]%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s\[dq] \[dq]https://www.udemy.com/java-tutorial\[dq] # بارگیری کل فصل یک سریال با نگهداری هر سریال و هر فصل در پوشه‌ای جداگانه زیر C:/MyVideos $ yt-dlp -P \[dq]C:/MyVideos\[dq] -o \[dq]%(series)s/%(season_number)s - %(season)s/%(episode_number)s - %(episode)s.%(ext)s\[dq] \[dq]https://videomore.ru/kino_v_detalayah/5_sezon/367617\[dq] # بارگیری ویدیو به صورت \[dq]C:\[rs]MyVideos\[rs]uploader\[rs]title.ext\[dq]، زیرنویس‌ها به صورت \[dq]C:\[rs]MyVideos\[rs]subs\[rs]uploader\[rs]title.ext\[dq] # و قرار دادن تمام فایل‌های موقت در \[dq]C:\[rs]MyVideos\[rs]tmp\[dq] $ yt-dlp -P \[dq]C:/MyVideos\[dq] -P \[dq]temp:tmp\[dq] -P \[dq]subtitle:subs\[dq] -o \[dq]%(uploader)s/%(title)s.%(ext)s\[dq] YE7VzlLtp-4 --write-subs # بارگیری ویدیو به صورت \[dq]C:\[rs]MyVideos\[rs]uploader\[rs]title.ext\[dq] و زیرنویس‌ها به صورت \[dq]C:\[rs]MyVideos\[rs]uploader\[rs]subs\[rs]title.ext\[dq] $ yt-dlp -P \[dq]C:/MyVideos\[dq] -o \[dq]%(uploader)s/%(title)s.%(ext)s\[dq] -o \[dq]subtitle:%(uploader)s/subs/%(title)s.%(ext)s\[dq] YE7VzlLtp-4 --write-subs # ارسال جریانی ویدیوی در حال بارگیری به خروجی استاندارد (stdout) $ yt-dlp -o - YE7VzlLtp-4 \f[R] .fi .SH "انتخاب قالب (FORMAT SELECTION)" .PP به‌طور پیش‌فرض، اگر هیچ گزینه‌ای را تعیین \f[B]نکنید\f[R]، yt-dlp تلاش می‌کند بهترین کیفیت موجود را بارگیری کند. این رفتار معمولاً معادل استفاده از \f[V]-f bestvideo*+bestaudio/best\f[R] است. با این حال، اگر چند جریانی صوتی فعال شده باشد (\f[V]--audio-multistreams\f[R])، قالب پیش‌فرض به \f[V]-f bestvideo+bestaudio/best\f[R] تغییر می‌یابد. به همین ترتیب، اگر ffmpeg در دسترس نباشد، یا اگر از yt-dlp برای ارسال جریان به \f[V]stdout\f[R] (\f[V]-o -\f[R]) استفاده کنید، مقدار پیش‌فرض به \f[V]-f best/bestvideo+bestaudio\f[R] تغییر می‌کند. .PP \f[B]هشدار منسوخ‌شدن\f[R]: نگارش‌های اخیر yt-dlp می‌توانند با استفاده از ffmpeg چندین قالب را هم‌زمان به stdout پخش جریانی کنند. بنابراین، در نگارش‌های آینده، مقدار پیش‌فرض برای این حالت همانند بارگیری‌های معمولی روی \f[V]-f bv*+ba/b\f[R] تنظیم خواهد شد. اگر می‌خواهید تنظیم \f[V]-f b/bv+ba\f[R] را حفظ کنید، پیشنهاد می‌شود آن را به صراحت در گزینه‌های پیکربندی مشخص نمایید. .PP نحو کلی برای انتخاب قالب، \f[V]-f FORMAT\f[R] (یا \f[V]--format FORMAT\f[R]) است که در آن \f[V]FORMAT\f[R] یک \f[I]عبارت انتخابگر\f[R] است؛ یعنی عبارتی که قالب یا قالب‌هایی را که مایل به بارگیری آن‌ها هستید توصیف می‌کند. .PP ساده‌ترین حالت، درخواست یک قالب خاص است؛ برای نمونه با \f[V]-f 22\f[R] می‌توانید قالبی را بارگیری کنید که کد قالب آن برابر با ۲۲ است. می‌توانید با استفاده از \f[V]--list-formats\f[R] یا \f[V]-F\f[R] فهرست کدهای قالب موجود برای یک ویدیوی مشخص را دریافت کنید. توجه داشته باشید که این کدهای قالب وابسته به استخراج‌کننده هستند. .PP همچنین می‌توانید از یک پسوند فایل استفاده کنید (در حال حاضر از \f[V]3gp\f[R]، \f[V]aac\f[R]، \f[V]flv\f[R]، \f[V]m4a\f[R]، \f[V]mp3\f[R]، \f[V]mp4\f[R]، \f[V]ogg\f[R]، \f[V]wav\f[R] و \f[V]webm\f[R] پشتیبانی می‌شود) تا بهترین کیفیت قالبی را بارگیری کنید که با پسوند مشخص‌شده به صورت یک تک‌فایل ارائه می‌شود؛ برای نمونه، \f[V]-f webm\f[R] بهترین کیفیت قالبی را که با پسوند \f[V]webm\f[R] به صورت یک فایل منفرد ارائه شده است، بارگیری خواهد کرد. .PP می‌توانید از \f[V]-f -\f[R] برای ارائه تعاملی انتخابگر قالب \f[I]برای هر ویدیو\f[R] استفاده کنید. .PP همچنین می‌توانید از نام‌های ویژه برای انتخاب قالب‌های خاص در شرایط مرزی استفاده کنید: .IP \[bu] 2 \f[V]all\f[R]: انتخاب \f[B]تمام قالب‌ها\f[R] به صورت جداگانه .IP \[bu] 2 \f[V]mergeall\f[R]: انتخاب و \f[B]ادغام تمام قالب‌ها\f[R] (باید با \f[V]--audio-multistreams\f[R]، \f[V]--video-multistreams\f[R] یا هر دو استفاده شود) .IP \[bu] 2 \f[V]b*\f[R]، \f[V]best*\f[R]: انتخاب قالبی با بهترین کیفیت که \f[B]حاوی ویدیو یا صوت یا هر دو باشد\f[R] (یعنی \f[V]vcodec!=none or acodec!=none\f[R]) .IP \[bu] 2 \f[V]b\f[R]، \f[V]best\f[R]: انتخاب قالبی با بهترین کیفیت که \f[B]شامل هر دو\f[R] جریان ویدیویی و صوتی باشد. معادل \f[V]best*[vcodec!=none][acodec!=none]\f[R] .IP \[bu] 2 \f[V]bv\f[R]، \f[V]bestvideo\f[R]: انتخاب قالبی با بهترین کیفیت به صورت \f[B]فقط ویدیو\f[R]. معادل \f[V]best*[acodec=none]\f[R] .IP \[bu] 2 \f[V]bv*\f[R]، \f[V]bestvideo*\f[R]: انتخاب قالبی با بهترین کیفیت که \f[B]شامل ویدیو باشد\f[R]. ممکن است شامل صوت نیز باشد. معادل \f[V]best*[vcodec!=none]\f[R] .IP \[bu] 2 \f[V]ba\f[R]، \f[V]bestaudio\f[R]: انتخاب قالبی با بهترین کیفیت به صورت \f[B]فقط صوت\f[R]. معادل \f[V]best*[vcodec=none]\f[R] .IP \[bu] 2 \f[V]ba*\f[R]، \f[V]bestaudio*\f[R]: انتخاب قالبی با بهترین کیفیت که \f[B]شامل صوت باشد\f[R]. ممکن است شامل ویدیو نیز باشد. معادل \f[V]best*[acodec!=none]\f[R] (استفاده نکنید! (https://github.com/yt-dlp/yt-dlp/issues/979#issuecomment-919629354)) .IP \[bu] 2 \f[V]w*\f[R]، \f[V]worst*\f[R]: انتخاب کم‌کیفیت‌ترین قالبی که شامل ویدیو یا صوت باشد .IP \[bu] 2 \f[V]w\f[R]، \f[V]worst\f[R]: انتخاب کم‌کیفیت‌ترین قالبی که هم شامل ویدیو و هم صوت باشد. معادل \f[V]worst*[vcodec!=none][acodec!=none]\f[R] .IP \[bu] 2 \f[V]wv\f[R]، \f[V]worstvideo\f[R]: انتخاب کم‌کیفیت‌ترین قالبِ فقط ویدیو. معادل \f[V]worst*[acodec=none]\f[R] .IP \[bu] 2 \f[V]wv*\f[R]، \f[V]worstvideo*\f[R]: انتخاب کم‌کیفیت‌ترین قالبی که شامل ویدیو باشد. ممکن است شامل صوت نیز باشد. معادل \f[V]worst*[vcodec!=none]\f[R] .IP \[bu] 2 \f[V]wa\f[R]، \f[V]worstaudio\f[R]: انتخاب کم‌کیفیت‌ترین قالبِ فقط صوت. معادل \f[V]worst*[vcodec=none]\f[R] .IP \[bu] 2 \f[V]wa*\f[R]، \f[V]worstaudio*\f[R]: انتخاب کم‌کیفیت‌ترین قالبی که شامل صوت باشد. ممکن است شامل ویدیو نیز باشد. معادل \f[V]worst*[acodec!=none]\f[R] .PP برای نمونه، برای بارگیری کم‌کیفیت‌ترین قالبی که فقط ویدیو باشد می‌توانید از \f[V]-f worstvideo\f[R] استفاده کنید. با این وجود، توصیه می‌شود از \f[V]worst\f[R] و گزینه‌های مرتبط با آن استفاده نکنید. وقتی انتخابگر قالب شما \f[V]worst\f[R] باشد، قالبی انتخاب می‌شود که از هر جهت بدترین کیفیت را دارد. در بیشتر مواقع، چیزی که در واقع به دنبال آن هستید ویدیویی با کمترین حجم فایل است. بنابراین عموماً بهتر است به جای \f[V]-f worst\f[R]، از \f[V]-S +size\f[R] یا با دقت بیشتر، از \f[V]-S +size,+br,+res,+fps\f[R] استفاده کنید. برای جزئیات بیشتر بخش «مرتب‌سازی قالب‌ها» (Sorting Formats) را ببینید. .PP می‌توانید n-اُمین قالب برتر از یک نوع را با استفاده از \f[V]best.\f[R] انتخاب کنید. برای نمونه، \f[V]best.2\f[R] دومین قالب برتر ترکیبی را انتخاب خواهد کرد. به همین ترتیب، \f[V]bv*.3\f[R] سومین قالب برتری را که شامل یک جریان ویدیویی باشد انتخاب می‌کند. .PP اگر می‌خواهید چندین ویدیو بارگیری کنید و قالب‌های موجود آن‌ها یکسان نیستند، می‌توانید اولویت مورد نظر را با استفاده از ممیز (اسلش) مشخص کنید. توجه داشته باشید که اولویت با قالب‌های سمت چپ است؛ برای نمونه \f[V]-f 22/17/18\f[R] در صورت موجود بودن قالب ۲۲، آن را بارگیری می‌کند؛ در غیر این صورت اگر قالب ۱۷ موجود باشد آن را بارگیری می‌کند؛ در غیر این صورت اگر قالب ۱۸ موجود باشد آن را بارگیری خواهد کرد؛ و در غیر این صورت اعلام می‌کند که هیچ قالب مناسبی برای بارگیری در دسترس نیست. .PP اگر می‌خواهید چندین قالب از یک ویدیو را بارگیری کنید، از کاما به عنوان جداکننده استفاده نمایید؛ برای نمونه \f[V]-f 22,17,18\f[R] هر سه قالب را (البته در صورت موجود بودن) بارگیری خواهد کرد. یا نمونه‌ای پیچیده‌تر که با قابلیت اولویت‌بندی ترکیب شده است: \f[V]-f 136/137/mp4/bestvideo,140/m4a/bestaudio\f[R]. .PP می‌توانید با استفاده از \f[V]-f ++...\f[R] جریان‌های ویدیویی و صوتی چندین قالب را در یک فایل ادغام کنید (نیازمند نصب بودن ffmpeg است)؛ برای نمونه، \f[V]-f bestvideo+bestaudio\f[R] باکیفیت‌ترین قالبِ فقط ویدیو و باکیفیت‌ترین قالبِ فقط صوت را بارگیری کرده و آن‌ها را با استفاده از ffmpeg با یکدیگر ادغام (mux) می‌کند..PP \f[B]هشدار منسوخ‌شدگی\f[R]: از آنجا که رفتار شرح‌داده‌شده در \f[I]ادامه\f[R] پیچیده و خلاف شهود است، این رفتار حذف خواهد شد و در آینده قابلیت multistreams به‌طور پیش‌فرض فعال می‌شود. در عوض، یک عملگر جدید برای محدود کردن قالب‌ها به یک صوت/تصویر تکی اضافه خواهد شد. .PP مگر اینکه از \f[V]--video-multistreams\f[R] استفاده شود، همهٔ قالب‌های دارای جریان ویدیویی به‌جز اولین مورد نادیده گرفته می‌شوند. مشابهاً، مگر اینکه از \f[V]--audio-multistreams\f[R] استفاده شود، همهٔ قالب‌های دارای جریان صوتی به‌جز مورد اول نادیده گرفته می‌شوند. برای نمونه: \f[V]-f bestvideo+best+bestaudio --video-multistreams --audio-multistreams\f[R] هر ۳ قالب ارائه‌شده را بارگیری و ادغام خواهد کرد. فایل خروجی دارای ۲ جریان ویدیویی و ۲ جریان صوتی خواهد بود. اما \f[V]-f bestvideo+best+bestaudio --no-video-multistreams\f[R] فقط \f[V]bestvideo\f[R] و \f[V]bestaudio\f[R] را بارگیری و ادغام می‌کند. قالب \f[V]best\f[R] نادیده گرفته می‌شود زیرا قالب دیگری که حاوی جریان ویدیویی است (\f[V]bestvideo\f[R]) از پیش انتخاب شده است. بنابراین ترتیب قالب‌ها حائز اهمیت است. دستور \f[V]-f best+bestaudio --no-audio-multistreams\f[R] تنها \f[V]best\f[R] را بارگیری می‌کند، در حالی که \f[V]-f bestaudio+best --no-audio-multistreams\f[R] از \f[V]best\f[R] چشم‌پوشی کرده و فقط \f[V]bestaudio\f[R] را بارگیری خواهد کرد. .SS "فیلتر کردن قالب‌ها (Filtering Formats)" .PP شما همچنین می‌توانید قالب‌های ویدیو را با قرار دادن یک شرط درون کروشه‌ها فیلتر کنید، مانند \f[V]-f \[dq]best[height=720]\[dq]\f[R] (یا \f[V]-f \[dq][filesize>10M]\[dq]\f[R] چرا که فیلترهای بدون انتخاب‌گر به عنوان \f[V]best\f[R] تفسیر می‌شوند). .PP فیلدهای فرادادهٔ عددی زیر می‌توانند با مقایسه‌های \f[V]<\f[R]، \f[V]<=\f[R]، \f[V]>\f[R]، \f[V]>=\f[R]، \f[V]=\f[R] (برابر) و \f[V]!=\f[R] (نابرابر) استفاده شوند: .IP \[bu] 2 \f[V]filesize\f[R]: تعداد بایت‌ها، اگر از پیش مشخص باشد .IP \[bu] 2 \f[V]filesize_approx\f[R]: تخمینی از تعداد بایت‌ها .IP \[bu] 2 \f[V]width\f[R]: پهنای ویدیو، در صورت مشخص بودن .IP \[bu] 2 \f[V]height\f[R]: ارتفاع ویدیو، در صورت مشخص بودن .IP \[bu] 2 \f[V]aspect_ratio\f[R]: نسبت ابعاد تصویر ویدیو، در صورت مشخص بودن .IP \[bu] 2 \f[V]tbr\f[R]: میانگین بیت‌ریت صوت و تصویر بر حسب kbps .IP \[bu] 2 \f[V]abr\f[R]: میانگین بیت‌ریت صوت بر حسب kbps .IP \[bu] 2 \f[V]vbr\f[R]: میانگین بیت‌ریت ویدیو بر حسب kbps .IP \[bu] 2 \f[V]asr\f[R]: نرخ نمونه‌برداری صوت بر حسب هرتز .IP \[bu] 2 \f[V]fps\f[R]: نرخ فریم .IP \[bu] 2 \f[V]audio_channels\f[R]: تعداد کانال‌های صوتی .IP \[bu] 2 \f[V]stretched_ratio\f[R]: نسبت \f[V]width:height\f[R] پیکسل‌های ویدیو، در صورتی که مربعی نباشند .PP همچنین فیلتر کردن برای مقایسه‌های \f[V]=\f[R] (برابر)، \f[V]\[ha]=\f[R] (شروع با)، \f[V]$=\f[R] (پایان با)، \f[V]*=\f[R] (شامل)، \f[V]\[ti]=\f[R] (مطابق با عبارت باقاعده) و فیلدهای فرادادهٔ رشته‌ای زیر کار می‌کند: .IP \[bu] 2 \f[V]url\f[R]: نشانی اینترنتی (URL) ویدیو .IP \[bu] 2 \f[V]ext\f[R]: پسوند فایل .IP \[bu] 2 \f[V]acodec\f[R]: نام کدک صوتی مورد استفاده .IP \[bu] 2 \f[V]vcodec\f[R]: نام کدک ویدیویی مورد استفاده .IP \[bu] 2 \f[V]container\f[R]: نام قالب ظرف (container) .IP \[bu] 2 \f[V]protocol\f[R]: پروتکلی که برای بارگیری واقعی استفاده خواهد شد، با حروف کوچک (\f[V]http\f[R]، \f[V]https\f[R]، \f[V]rtmp\f[R]، \f[V]rtmpe\f[R]، \f[V]f4m\f[R]، \f[V]ism\f[R]، \f[V]http_dash_segments\f[R]، \f[V]m3u8\f[R] یا \f[V]m3u8_native\f[R]) .IP \[bu] 2 \f[V]language\f[R]: کد زبان .IP \[bu] 2 \f[V]dynamic_range\f[R]: دامنهٔ پویای (dynamic range) ویدیو .IP \[bu] 2 \f[V]format_id\f[R]: توصیف کوتاهی از قالب .IP \[bu] 2 \f[V]format\f[R]: توصیف خوانا برای انسان از قالب .IP \[bu] 2 \f[V]format_note\f[R]: اطلاعات اضافی دربارهٔ قالب .IP \[bu] 2 \f[V]resolution\f[R]: توصیف متنی پهنا و ارتفاع .PP هر مقایسهٔ رشته‌ای می‌تواند با نقیض \f[V]!\f[R] پیشوندگذاری شود تا مقایسهٔ معکوس تولید گردد، برای نمونه \f[V]!*=\f[R] (شامل نمی‌شود). طرف مقایسه در یک مقایسهٔ رشته‌ای در صورتی که شامل فاصله یا نویسه‌های خاصی به‌جز \f[V]._-\f[R] باشد، باید درون علامت‌های نقل‌قول تکی یا دوتایی قرار گیرد. .PP \f[B]نکته\f[R]: وجود هیچ‌یک از فیلدهای فرادادهٔ یادشده تضمین نمی‌شود، زیرا این امر صرفاً به فراداده‌های به‌دست‌آمده توسط استخراج‌کنندهٔ مربوطه، یعنی فراداده‌های ارائه‌شده از سوی وب‌گاه بستگی دارد. هر فیلد دیگری که توسط استخراج‌کننده ارائه شود نیز می‌تواند برای فیلتر کردن مورد استفاده قرار گیرد. .PP قالب‌هایی که مقدار آن‌ها مشخص نیست کنار گذاشته می‌شوند مگر اینکه یک علامت سؤال (\f[V]?\f[R]) بعد از عملگر قرار دهید. می‌توانید فیلترهای قالب را ترکیب کنید، بنابراین \f[V]-f \[dq]bv[height<=?720][tbr>500]\[dq]\f[R] ویدیوهای تا کیفیت 720p (یا ویدیوهایی که ارتفاع آن‌ها نامشخص است) را با بیت‌ریت بالاتر از 500 kbps انتخاب می‌کند. همچنین می‌توانید از فیلترها همراه با \f[V]all\f[R] برای بارگیری تمام قالب‌هایی که شرط فیلتر را برآورده می‌کنند استفاده کنید، برای نمونه \f[V]-f \[dq]all[vcodec=none]\[dq]\f[R] تمام قالب‌های فقط‌صوتی را انتخاب می‌کند. .PP انتخاب‌گرهای قالب را می‌توان با پرانتز نیز گروه‌بندی کرد؛ مانند \f[V]-f \[dq](mp4,webm)[height<480]\[dq]\f[R] که بهترین قالب‌های از پیش ادغام‌شدهٔ mp4 و webm را با ارتفاع کمتر از 480 بارگیری خواهد کرد..SS مرتب‌سازی قالب‌ها .PP می‌توانید با استفاده از \f[V]-S\f[R] (\f[V]--format-sort\f[R])، معیارهای در نظر گرفته شدن به عنوان \f[V]best\f[R] را تغییر دهید. ساختار کلی برای این کار \f[V]--format-sort field1,field2...\f[R] است. .PP فیلدهای موجود عبارتند از: .IP \[bu] 2 \f[V]hasvid\f[R]: اولویت را به قالب‌هایی می‌دهد که جریان ویدیویی دارند .IP \[bu] 2 \f[V]hasaud\f[R]: اولویت را به قالب‌هایی می‌دهد که جریان صوتی دارند .IP \[bu] 2 \f[V]ie_pref\f[R]: اولویت قالب .IP \[bu] 2 \f[V]lang\f[R]: اولویت زبان بر اساس آنچه توسط استخراج‌کننده تعیین شده است (به عنوان مثال، زبان اصلی نسبت به توضیحات صوتی ترجیح داده می‌شود) .IP \[bu] 2 \f[V]quality\f[R]: کیفیت قالب .IP \[bu] 2 \f[V]source\f[R]: اولویت منبع .IP \[bu] 2 \f[V]proto\f[R]: پروتکل استفاده‌شده برای دانلود (\f[V]https\f[R]/\f[V]ftps\f[R] > \f[V]http\f[R]/\f[V]ftp\f[R] > \f[V]m3u8_native\f[R]/\f[V]m3u8\f[R] > \f[V]http_dash_segments\f[R]> \f[V]websocket_frag\f[R] > \f[V]f4f\f[R]/\f[V]f4m\f[R]) .IP \[bu] 2 \f[V]vcodec\f[R]: کدک ویدیو (\f[V]av01\f[R] > \f[V]vp9.2\f[R] > \f[V]vp9\f[R] > \f[V]h265\f[R] > \f[V]h264\f[R] > \f[V]vp8\f[R] > \f[V]h263\f[R] > \f[V]theora\f[R] > سایر) .IP \[bu] 2 \f[V]acodec\f[R]: کدک صوتی (\f[V]flac\f[R]/\f[V]alac\f[R] > \f[V]wav\f[R]/\f[V]aiff\f[R] > \f[V]opus\f[R] > \f[V]vorbis\f[R] > \f[V]aac\f[R] > \f[V]mp4a\f[R] > \f[V]mp3\f[R] > \f[V]ac4\f[R] > \f[V]eac3\f[R] > \f[V]ac3\f[R] > \f[V]dts\f[R] > سایر) .IP \[bu] 2 \f[V]codec\f[R]: معادل \f[V]vcodec,acodec\f[R] .IP \[bu] 2 \f[V]vext\f[R]: پسوند ویدیو (\f[V]mp4\f[R] > \f[V]mov\f[R] > \f[V]webm\f[R] > \f[V]flv\f[R] > سایر). در صورت استفاده از \f[V]--prefer-free-formats\f[R]، پسوند \f[V]webm\f[R] ترجیح داده می‌شود. .IP \[bu] 2 \f[V]aext\f[R]: پسوند صوتی (\f[V]m4a\f[R] > \f[V]aac\f[R] > \f[V]mp3\f[R] > \f[V]ogg\f[R] > \f[V]opus\f[R] > \f[V]webm\f[R] > سایر). در صورت استفاده از \f[V]--prefer-free-formats\f[R]، ترتیب به این صورت تغییر می‌کند: \f[V]ogg\f[R] > \f[V]opus\f[R] > \f[V]webm\f[R] > \f[V]mp3\f[R] > \f[V]m4a\f[R] > \f[V]aac\f[R] .IP \[bu] 2 \f[V]ext\f[R]: معادل \f[V]vext,aext\f[R] .IP \[bu] 2 \f[V]filesize\f[R]: حجم دقیق فایل، در صورتی که از قبل مشخص باشد .IP \[bu] 2 \f[V]fs_approx\f[R]: حجم تقریبی فایل .IP \[bu] 2 \f[V]size\f[R]: حجم دقیق فایل در صورت در دسترس بودن، در غیر این صورت حجم تقریبی فایل .IP \[bu] 2 \f[V]height\f[R]: ارتفاع ویدیو .IP \[bu] 2 \f[V]width\f[R]: عرض ویدیو .IP \[bu] 2 \f[V]res\f[R]: تفکیک‌پذیری ویدیو، محاسبه‌شده بر اساس کوچک‌ترین بُعد. .IP \[bu] 2 \f[V]fps\f[R]: نرخ فریم ویدیو .IP \[bu] 2 \f[V]hdr\f[R]: محدوده دینامیکی ویدیو (\f[V]DV\f[R] > \f[V]HDR12\f[R] > \f[V]HDR10+\f[R] > \f[V]HDR10\f[R] > \f[V]HLG\f[R] > \f[V]SDR\f[R]) .IP \[bu] 2 \f[V]channels\f[R]: تعداد کانال‌های صوتی .IP \[bu] 2 \f[V]tbr\f[R]: نرخ بیت میانگین کل بر حسب kbps .IP \[bu] 2 \f[V]vbr\f[R]: نرخ بیت میانگین ویدیو بر حسب kbps .IP \[bu] 2 \f[V]abr\f[R]: نرخ بیت میانگین صدا بر حسب kbps .IP \[bu] 2 \f[V]br\f[R]: نرخ بیت میانگین بر حسب kbps، \f[V]tbr\f[R]/\f[V]vbr\f[R]/\f[V]abr\f[R] .IP \[bu] 2 \f[V]asr\f[R]: نرخ نمونه‌برداری صوتی بر حسب Hz .PP \f[B]هشدار منسوخ‌شدگی\f[R]: بسیاری از این فیلدها نام‌های مستعاری دارند (که در حال حاضر مستند نشده‌اند) که ممکن است در نگارش‌های بعدی حذف شوند. توصیه می‌شود تنها از نام فیلدهای مستندشده استفاده کنید. .PP همهٔ فیلدها، مگر اینکه خلاف آن مشخص شده باشد، به ترتیب نزولی مرتب می‌شوند. برای معکوس کردن این حالت، فیلد را با یک پیشوند \f[V]+\f[R] همراه کنید. به عنوان مثال، \f[V]+res\f[R] قالبی با کمترین تفکیک‌پذیری را ترجیح می‌دهد. علاوه بر این، می‌توانید مقدار ترجیحی فیلدها را با استفاده از \f[V]:\f[R] به عنوان پسوند اضافه کنید. به عنوان مثال، \f[V]res:720\f[R] ویدیوهای با وضوح بالاتر اما نه بیشتر از 720p را ترجیح می‌دهد، و در صورتی که ویدیویی با وضوح کمتر از 720p وجود نداشته باشد، کوچک‌ترین ویدیو را انتخاب می‌کند. برای \f[V]codec\f[R] و \f[V]ext\f[R]، می‌توانید دو مقدار ترجیحی مشخص کنید؛ اولی برای ویدیو و دومی برای صدا. به عنوان مثال، \f[V]+codec:avc:m4a\f[R] (معادل \f[V]+vcodec:avc,+acodec:m4a\f[R]) اولویت کدک ویدیو را روی \f[V]h264\f[R] > \f[V]h265\f[R] > \f[V]vp9\f[R] > \f[V]vp9.2\f[R] > \f[V]av01\f[R] > \f[V]vp8\f[R] > \f[V]h263\f[R] > \f[V]theora\f[R] و اولویت کدک صوتی را روی \f[V]mp4a\f[R] > \f[V]aac\f[R] > \f[V]vorbis\f[R] > \f[V]opus\f[R] > \f[V]mp3\f[R] > \f[V]ac3\f[R] > \f[V]dts\f[R] تنظیم می‌کند. همچنین می‌توانید با استفاده از \f[V]\[ti]\f[R] به عنوان جداکننده، کاری کنید که مرتب‌سازی نزدیک‌ترین مقادیر به مقدار داده‌شده را ترجیح دهد. به عنوان مثال، \f[V]filesize\[ti]1G\f[R] قالبی را ترجیح می‌دهد که اندازهٔ فایل آن نزدیک‌ترین به 1 GiB باشد. .PP فیلدهای \f[V]hasvid\f[R] و \f[V]ie_pref\f[R] همیشه و بدون در نظر گرفتن ترتیب مشخص‌شده توسط کاربر، بالاترین اولویت را در مرتب‌سازی دارند. این رفتار را می‌توان با استفاده از \f[V]--format-sort-force\f[R] تغییر داد. به غیر از این موارد، ترتیب پیش‌فرض استفاده‌شده عبارت است از: \f[V]lang,quality,res,fps,hdr:12,vcodec,channels,acodec,size,br,asr,proto,ext,hasaud,source,id\f[R]. استخراج‌کننده‌ها ممکن است این ترتیب پیش‌فرض را بازنویسی کنند، اما نمی‌توانند ترتیب ارائه‌شده توسط کاربر را نادیده بگیرند. .PP توجه داشته باشید که مقدار پیش‌فرض برای hdr برابر با \f[V]hdr:12\f[R] است؛ یعنی Dolby Vision ترجیح داده نمی‌شود. این انتخاب به این دلیل انجام شده که قالب‌های DV هنوز به طور کامل با بیشتر دستگاه‌ها سازگار نیستند. این مورد ممکن است در آینده تغییر کند. .PP اگر انتخاب‌گر قالب شما \f[V]worst\f[R] باشد، پس از مرتب‌سازی، آخرین مورد انتخاب می‌شود. این به این معنی است که قالبی انتخاب خواهد شد که از تمام جهات بدترین است. در اکثر مواقع، چیزی که واقعاً می‌خواهید ویدیویی با کمترین اندازهٔ فایل است. بنابراین عموماً بهتر است از دستور زیر استفاده کنید: \f[V]-f best -S +size,+br,+res,+fps\f[R]. .PP اگر از گزینهٔ \f[V]-S\f[R]/\f[V]--format-sort\f[R] چندین بار استفاده کنید، هر آرگومان مرتب‌سازی بعدی به ابتدای آرگومان قبلی اضافه می‌شود، و در صورت وجود هر فیلد تکراری، تنها ورودی با بالاترین اولویت حفظ خواهد شد. به عنوان مثال، \f[V]-S proto -S res\f[R] معادل \f[V]-S res,proto\f[R] است، و \f[V]-S res:720,fps -S vcodec,res:1080\f[R] معادل \f[V]-S vcodec,res:1080,fps\f[R] است. می‌توانید از \f[V]--format-sort-reset\f[R] برای نادیده گرفتن تمام آرگومان‌های ارائه‌شدهٔ قبلی \f[V]-S\f[R]/\f[V]--format-sort\f[R] و بازنشانی به ترتیب پیش‌فرض استفاده کنید. .PP \f[B]نکته\f[R]: می‌توانید از \f[V]-v -F\f[R] برای مشاهدهٔ چگونگی مرتب‌سازی قالب‌ها (از بدترین به بهترین) استفاده کنید..SS "مثال‌های انتخاب فرمت (Format Selection examples)" .IP .nf \f[C] # بارگیری و ادغام بهترین فرمت فقط-ویدیو با بهترین فرمت فقط-صوت، # یا بارگیری بهترین فرمت ترکیبی در صورت عدم دسترسی به فرمت فقط-ویدیو $ yt-dlp -f \[dq]bv+ba/b\[dq] # بارگیری بهترین فرمت حاوی ویدیو، # و در صورتی که فاقد جریان صوتی باشد، ادغام آن با بهترین فرمت فقط-صوت $ yt-dlp -f \[dq]bv*+ba/b\[dq] # مشابه مورد بالا $ yt-dlp # بارگیری بهترین فرمت فقط-ویدیو و بهترین فرمت فقط-صوت بدون ادغام آن‌ها # برای این حالت باید از یک الگوی خروجی استفاده شود چرا که # به‌طور پیش‌فرض، bestvideo و bestaudio نام فایل یکسانی خواهند داشت. $ yt-dlp -f \[dq]bv,ba\[dq] -o \[dq]%(title)s.f%(format_id)s.%(ext)s\[dq] # بارگیری و ادغام بهترین فرمت دارای جریان ویدیو، # و تمامی فرمت‌های فقط-صوت در یک فایل $ yt-dlp -f \[dq]bv*+mergeall[vcodec=none]\[dq] --audio-multistreams # بارگیری و ادغام بهترین فرمت دارای جریان ویدیو، # و ۲ تا از بهترین فرمت‌های فقط-صوت در یک فایل $ yt-dlp -f \[dq]bv*+ba+ba.2\[dq] --audio-multistreams # مثال‌های زیر روش قدیمی انتخاب فرمت (بدون -S) # و نحوه استفاده از -S برای رسیدن به نتیجه‌ای مشابه اما (عموماً) بهتر را نشان می‌دهند # بارگیری بدترین ویدیوی موجود (روش قدیمی) $ yt-dlp -f \[dq]wv*+wa/w\[dq] # بارگیری بهترین ویدیوی موجود اما با کمترین تفکیک‌پذیری (رزولوشن) $ yt-dlp -S \[dq]+res\[dq] # بارگیری کم‌حجم‌ترین ویدیوی موجود $ yt-dlp -S \[dq]+size,+br\[dq] # بارگیری بهترین ویدیوی mp4 موجود، یا بهترین ویدیو در صورت نبود mp4 $ yt-dlp -f \[dq]bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b\[dq] # بارگیری بهترین ویدیو با بهترین پسوند # (برای ویدیو، mp4 > mov > webm > flv. برای صوت، m4a > aac > mp3 ...) $ yt-dlp -S \[dq]ext\[dq] # بارگیری بهترین ویدیوی موجود اما نه بالاتر از 480p، # یا بدترین ویدیو در صورتی که هیچ ویدیویی زیر 480p نباشد $ yt-dlp -f \[dq]bv*[height<=480]+ba/b[height<=480] / wv*+ba/w\[dq] # بارگیری بهترین ویدیوی موجود با بیشترین ارتفاع اما نه بالاتر از 480p، # یا بهترین ویدیو با کمترین تفکیک‌پذیری در صورت نبود ویدیو زیر 480p $ yt-dlp -S \[dq]height:480\[dq] # بارگیری بهترین ویدیوی موجود با بالاترین تفکیک‌پذیری اما نه بالاتر از 480p، # یا بهترین ویدیو با کمترین تفکیک‌پذیری در صورت نبود ویدیوی زیر 480p # تفکیک‌پذیری بر اساس کوچک‌ترین بُعد سنجیده می‌شود؛ # بنابراین برای ویدیوهای عمودی نیز به‌درستی کار می‌کند $ yt-dlp -S \[dq]res:480\[dq] # بارگیری بهترین ویدیو (دارای صدا) اما نه بزرگ‌تر از 50 MB، # یا بدترین ویدیو (دارای صدا) در صورتی که ویدیویی زیر 50 MB نباشد $ yt-dlp -f \[dq]b[filesize<50M] / w\[dq] # بارگیری حجیم‌ترین ویدیو (دارای صدا) اما نه بزرگ‌تر از 50 MB، # یا کم‌حجم‌ترین ویدیو (دارای صدا) در صورتی که ویدیویی زیر 50 MB نباشد $ yt-dlp -f \[dq]b\[dq] -S \[dq]filesize:50M\[dq] # بارگیری بهترین ویدیو (دارای صدا) با اندازه‌ای که به 50 MB نزدیک‌ترین باشد $ yt-dlp -f \[dq]b\[dq] -S \[dq]filesize\[ti]50M\[dq] # بارگیری بهترین ویدیوی موجود از طریق پیوند مستقیم بر بستر پروتکل HTTP/HTTPS، # یا بهترین ویدیوی موجود از طریق هر پروتکلی اگر چنین ویدیویی موجود نباشد $ yt-dlp -f \[dq](bv*+ba/b)[protocol\[ha]=http][protocol!*=dash] / (bv*+ba/b)\[dq] # بارگیری بهترین ویدیوی موجود از طریق بهترین پروتکل # (https/ftps > http/ftp > m3u8_native > m3u8 > http_dash_segments ...) $ yt-dlp -S \[dq]proto\[dq] # بارگیری بهترین ویدیو با یکی از کُدک‌های h264 یا h265، # یا بهترین ویدیو اگر چنین ویدیویی موجود نباشد $ yt-dlp -f \[dq](bv*[vcodec\[ti]=\[aq]\[ha]((he|a)vc|h26[45])\[aq]]+ba) / (bv*+ba/b)\[dq] # بارگیری بهترین ویدیو با بهترین کُدکی که بهتر از h264 نباشد، # یا بهترین ویدیو با بدترین کُدک اگر چنین ویدیویی موجود نباشد $ yt-dlp -S \[dq]codec:h264\[dq] # بارگیری بهترین ویدیو با بدترین کُدکی که بدتر از h264 نباشد، # یا بهترین ویدیو با بهترین کُدک اگر چنین ویدیویی موجود نباشد $ yt-dlp -S \[dq]+codec:h264\[dq] # مثال‌های پیچیده‌تر # بارگیری بهترین ویدیو نه بالاتر از 720p با اولویت نرخ فریم بیشتر از ۳۰، # یا بدترین ویدیو (همچنان با اولویت نرخ فریم بیشتر از ۳۰) اگر چنین ویدیویی نباشد $ yt-dlp -f \[dq]((bv*[fps>30]/bv*)[height<=720]/(wv*[fps>30]/wv*)) + ba / (b[fps>30]/b)[height<=720]/(w[fps>30]/w)\[dq] # بارگیری ویدیو با بالاترین تفکیک‌پذیری نه بالاتر از 720p، # یا ویدیو با کمترین تفکیک‌پذیری موجود در صورت عدم وجود چنین ویدیویی، # با اولویت نرخ فریم بالاتر برای فرمت‌هایی با تفکیک‌پذیری یکسان $ yt-dlp -S \[dq]res:720,fps\[dq] # بارگیری ویدیو با کمترین تفکیک‌پذیری نه بدتر از 480p، # یا ویدیو با بالاترین تفکیک‌پذیری موجود در صورت عدم وجود چنین ویدیویی، # با اولویت کُدک بهتر و سپس نرخ بیت کل بالاتر برای تفکیک‌پذیری یکسان $ yt-dlp -S \[dq]+res:480,codec,br\[dq] \f[R] .fi.SH "تغییر متادیتا (MODIFYING METADATA)" .PP متادیتای به‌دست‌آمده توسط استخراج‌کننده‌ها را می‌توان با استفاده از \f[V]--parse-metadata\f[R] و \f[V]--replace-in-metadata\f[R] تغییر داد. .PP گزینهٔ \f[V]--replace-in-metadata FIELDS REGEX REPLACE\f[R] برای جایگزینی متن در هر یک از فیلدهای متادیتا با استفاده از عبارات باقاعده پایتون (https://docs.python.org/3/library/re.html#regular-expression-syntax) استفاده می‌شود. برای کاربردهای پیشرفته‌تر می‌توان از پس‌ارجاع‌ها (https://docs.python.org/3/library/re.html?highlight=backreferences#re.sub) در رشتهٔ جایگزینی استفاده کرد. .PP نحو کلی \f[V]--parse-metadata FROM:TO\f[R] بدین صورت است که نام یک فیلد یا یک الگوی خروجی برای استخراج داده از آن، و قالبی برای تفسیر آن، با یک دونقطه \f[V]:\f[R] جدا می‌شوند. برای \f[V]TO\f[R] می‌توان از یک عبارت باقاعده پایتون (https://docs.python.org/3/library/re.html#regular-expression-syntax) با گروه‌های تطابق نام‌دار، یک نام فیلد تکی، یا نحوی مشابه با الگوی خروجی (تنها قالب‌بندی \f[V]%(field)s\f[R] پشتیبانی می‌شود) استفاده کرد. این گزینه را می‌توان چندین بار برای تجزیه و تغییر فیلدهای مختلف به کار برد. .PP توجه داشته باشید که این گزینه‌ها ترتیب نسبی خود را حفظ می‌کنند، که امکان انجام جایگزینی‌ها را در فیلدهای تجزیه‌شده و بالعکس فراهم می‌سازد. همچنین، هر فیلدی که بدین ترتیب ایجاد شود می‌تواند در الگوی خروجی استفاده شود و بر متادیتای افزوده شده به فایل رسانه هنگام استفاده از \f[V]--embed-metadata\f[R] نیز تأثیر خواهد گذاشت. .PP این گزینه کاربردهای ویژه دیگری نیز دارد: .IP \[bu] 2 می‌توانید بر اساس متادیتای ویدیوی در حال دانلود، یک نشانی (URL) اضافی را دانلود کنید. برای این کار، فیلد \f[V]additional_urls\f[R] را روی نشانی اینترنتی مورد نظر برای دانلود تنظیم کنید. برای مثال: \f[V]--parse-metadata \[dq]description:(?Phttps?://www\[rs].vimeo\[rs].com/\[rs]d+)\[dq]\f[R] اولین ویدیوی vimeo یافت‌شده در توضیحات را دانلود خواهد کرد. .IP \[bu] 2 می‌توانید از این گزینه برای تغییر متادیتایی که در فایل رسانه جاسازی می‌شود استفاده کنید. برای این کار، مقدار فیلد مربوطه را با یک پیشوند \f[V]meta_\f[R] مشخص کنید. برای نمونه، هر مقداری که برای فیلد \f[V]meta_description\f[R] تعیین کنید، به فیلد \f[V]description\f[R] در فایل اضافه خواهد شد \- می‌توانید از این روش برای تنظیم مقادیر متفاوت برای \[dq]description\[dq] و \[dq]synopsis\[dq] استفاده کنید. برای تغییر متادیتای هر استریم به صورت جداگانه، از پیشوند \f[V]meta_\f[R] استفاده کنید (مانند \f[V]meta1_language\f[R]). هر مقداری که در فیلد \f[V]meta_\f[R] تنظیم شود، تمام مقادیر پیش‌فرض را بازنویسی خواهد کرد. .PP \f[B]نکته\f[R]: تغییر متادیتا پیش از انتخاب قالب، پس‌استخراج و سایر عملیات پس‌پردازش انجام می‌شود. ممکن است برخی فیلدها در طول این مراحل اضافه یا تغییر داده شوند و تغییرات شما را بازنویسی کنند. .PP جهت ارجاع، این‌ها فیلدهایی هستند که yt-dlp به‌طور پیش‌فرض به متادیتای فایل اضافه می‌کند: .PP .TS tab(@); lw(24.9n) lw(45.1n). T{ فیلدهای متادیتا T}@T{ برگرفته از T} _ T{ \f[V]title\f[R] T}@T{ \f[V]track\f[R] یا \f[V]title\f[R] T} T{ \f[V]date\f[R] T}@T{ \f[V]upload_date\f[R] T} T{ \f[V]description\f[R]، \f[V]synopsis\f[R] T}@T{ \f[V]description\f[R] T} T{ \f[V]purl\f[R]، \f[V]comment\f[R] T}@T{ \f[V]webpage_url\f[R] T} T{ \f[V]track\f[R] T}@T{ \f[V]track_number\f[R] T} T{ \f[V]artist\f[R] T}@T{ \f[V]artist\f[R]، \f[V]artists\f[R]، \f[V]creator\f[R]، \f[V]creators\f[R]، \f[V]uploader\f[R] یا \f[V]uploader_id\f[R] T} T{ \f[V]composer\f[R] T}@T{ \f[V]composer\f[R] یا \f[V]composers\f[R] T} T{ \f[V]genre\f[R] T}@T{ \f[V]genre\f[R]، \f[V]genres\f[R]، \f[V]categories\f[R] یا \f[V]tags\f[R] T} T{ \f[V]album\f[R] T}@T{ \f[V]album\f[R] یا \f[V]series\f[R] T} T{ \f[V]album_artist\f[R] T}@T{ \f[V]album_artist\f[R] یا \f[V]album_artists\f[R] T} T{ \f[V]disc\f[R] T}@T{ \f[V]disc_number\f[R] T} T{ \f[V]show\f[R] T}@T{ \f[V]series\f[R] T} T{ \f[V]season_number\f[R] T}@T{ \f[V]season_number\f[R] T} T{ \f[V]episode_id\f[R] T}@T{ \f[V]episode\f[R] یا \f[V]episode_id\f[R] T} T{ \f[V]episode_sort\f[R] T}@T{ \f[V]episode_number\f[R] T} T{ \f[V]language\f[R] هر استریم T}@T{ \f[V]language\f[R] قالب T} .TE .PP \f[B]نکته\f[R]: قالب فایل ممکن است از برخی از این فیلدها پشتیبانی نکند.SS "مثال‌های اصلاح فراداده (Modifying metadata examples)" .IP .nf \f[C] # تفسیر عنوان به صورت \[dq]Artist - Title\[dq] $ yt-dlp --parse-metadata \[dq]title:%(artist)s - %(title)s\[dq] # مثال عبارت منظم (Regex) $ yt-dlp --parse-metadata \[dq]description:Artist - (?P.+)\[dq] # کپی فیلد episode به فیلد title (با مبدا و مقصد به عنوان تک‌فیلد) $ yt-dlp --parse-metadata \[dq]episode:title\[dq] # تنظیم عنوان به صورت \[dq]Series name S01E05\[dq] $ yt-dlp --parse-metadata \[dq]%(series)s S%(season_number)02dE%(episode_number)02d:%(title)s\[dq] # اولویت دادن به uploader به عنوان فیلد \[dq]artist\[dq] در فراداده ویدیو $ yt-dlp --parse-metadata \[dq]%(uploader|)s:%(meta_artist)s\[dq] --embed-metadata # تنظیم فیلد \[dq]comment\[dq] در فراداده ویدیو با استفاده از description به جای webpage_url، # با مدیریت صحیح چندخطی‌ها $ yt-dlp --parse-metadata \[dq]description:(?s)(?P.+)\[dq] --embed-metadata # عدم تنظیم هیچ فیلد \[dq]synopsis\[dq] در فراداده ویدیو $ yt-dlp --parse-metadata \[dq]:(?P)\[dq] # حذف فیلد \[dq]formats\[dq] از infojson با مقداردهی آن به یک رشته خالی $ yt-dlp --parse-metadata \[dq]video::(?P)\[dq] --write-info-json # جایگزینی همه فاصله‌ها و \[dq]_\[dq] در title و uploader با یک \[ga]-\[ga] $ yt-dlp --replace-in-metadata \[dq]title,uploader\[dq] \[dq][ _]\[dq] \[dq]-\[dq] \f[R] .fi .SH "آرگومان‌های استخراج‌کننده (EXTRACTOR ARGUMENTS)" .PP برخی استخراج‌کننده‌ها آرگومان‌های اضافی را می‌پذیرند که می‌توان آن‌ها را با استفاده از \f[V]--extractor-args KEY:ARGS\f[R] ارسال کرد. \f[V]ARGS\f[R] رشته‌ای جداشده با \f[V];\f[R] (نقطه‌ویرگول) از \f[V]ARG=VAL1,VAL2\f[R] است؛ به عنوان مثال: \f[V]--extractor-args \[dq]youtube:player-client=tv,mweb;formats=incomplete\[dq] --extractor-args \[dq]twitter:api=syndication\[dq]\f[R] .PP نکته: در CLI، \f[V]ARG\f[R] می‌تواند به جای \f[V]_\f[R] از \f[V]-\f[R] استفاده کند؛ به عنوان مثال \f[V]youtube:player-client\[dq]\f[R] تبدیل به \f[V]youtube:player_client\[dq]\f[R] می‌شود. .PP استخراج‌کننده‌های زیر از این ویژگی استفاده می‌کنند: .SS youtube .IP \[bu] 2 \f[V]lang\f[R]: فراداده ترجمه‌شده (\f[V]title\f[R]، \f[V]description\f[R] و غیره) مربوط به این کد زبان (حساس به بزرگی و کوچکی حروف) را ترجیح می‌دهد. به‌طور پیش‌فرض، فراداده زبان اصلی ویدیو ترجیح داده می‌شود و در صورت نبود، به نسخه ترجمه‌شده \f[V]en\f[R] بازمی‌گردد. برای فهرست کدهای زبان محتوای پشتیبانی‌شده، youtube/_base.py (https://github.com/yt-dlp/yt-dlp/blob/415b4c9f955b1a0391204bd24a7132590e7b3bdb/yt_dlp/extractor/youtube/_base.py#L402-L409) را ببینید. .IP \[bu] 2 \f[V]skip\f[R]: یک یا چند مورد از \f[V]hls\f[R]، \f[V]dash\f[R] یا \f[V]translated_subs\f[R] جهت صرف‌نظر کردن از استخراج به ترتیب مانیفست‌های m3u8، مانیفست‌های dash و زیرنویس‌های خودکار ترجمه‌شده (https://github.com/yt-dlp/yt-dlp/issues/4090#issuecomment-1158102032). .IP \[bu] 2 \f[V]player_client\f[R]: کلاینت‌هایی که داده‌های ویدیو از آن‌ها استخراج می‌شود. کلاینت‌های در دسترس در حال حاضر عبارتند از: \f[V]web\f[R]، \f[V]web_safari\f[R]، \f[V]web_embedded\f[R]، \f[V]web_music\f[R]، \f[V]web_creator\f[R]، \f[V]mweb\f[R]، \f[V]ios\f[R]، \f[V]visionos\f[R]، \f[V]android\f[R]، \f[V]android_vr\f[R]، \f[V]tv\f[R]، \f[V]tv_downgraded\f[R] و \f[V]tv_simply\f[R]. به‌طور پیش‌فرض، از \f[V]visionos,web\f[R] استفاده می‌شود. اگر هیچ موتور/محیط اجرای JavaScript در دسترس نباشد، \f[V]web\f[R] حذف می‌شود. اگر کوکی‌های حساب واردشده به yt-dlp داده شود، برای حساب‌های رایگان از \f[V]web_embedded,tv_downgraded,web\f[R] و برای حساب‌های ویژه (premium) از \f[V]web_creator,tv_downgraded,web\f[R] استفاده می‌شود. کلاینت \f[V]web_music\f[R] هنگام استفاده از کوکی‌های حساب واردشده، برای نشانی‌های \f[V]music.youtube.com\f[R] اضافه می‌شود. کلاینت \f[V]web_embedded\f[R] برای ویدیوهای دارای محدودیت سنی اضافه می‌شود، اما فقط گاهی اوقات می‌تواند محدودیت سنی را با موفقیت دور بزند (مثلاً اگر ویدیو قابلیت جاسازی داشته باشد). کلاینت‌های \f[V]tv_downgraded\f[R] و \f[V]web_embedded\f[R] ممکن است در صورت عدم دسترسی \f[V]android_vr\f[R] یا \f[V]visionos\f[R] به یک ویدیو، به عنوان جایگزین اضطراری (fallback) اضافه شوند. کلاینت \f[V]web_creator\f[R] در صورتی که تأیید سن حساب برای ویدیوهای دارای محدودیت سنی لازم باشد، اضافه می‌شود. برخی کلاینت‌ها مانند \f[V]web_creator\f[R] و \f[V]web_music\f[R] برای اینکه فرمت‌های آن‌ها قابل بارگیری باشند نیازمند \f[V]po_token\f[R] هستند. برخی کلاینت‌ها مانند \f[V]web_creator\f[R] تنها با احراز هویت کار می‌کنند. همه کلاینت‌ها از احراز هویت از طریق کوکی‌ها پشتیبانی نمی‌کنند. می‌توانید از \f[V]default\f[R] برای کلاینت‌های پیش‌فرض، یا از \f[V]all\f[R] برای همه کلاینت‌ها (توصیه نمی‌شود) استفاده کنید. می‌توانید با قرار دادن پیشوند \f[V]-\f[R] قبل از نام یک کلاینت، آن را مستثنی کنید؛ مثلاً: \f[V]youtube:player_client=default,-web\f[R] .IP \[bu] 2 \f[V]player_skip\f[R]: صرف‌نظر کردن از برخی درخواست‌های شبکه که عموماً برای استخراج پایدار ضروری هستند. یک یا چند مورد از \f[V]configs\f[R] (صرف‌نظر از پیکربندی‌های کلاینت)، \f[V]webpage\f[R] (صرف‌نظر از صفحه وب اولیه)، \f[V]js\f[R] (صرف‌نظر از پخش‌کننده جاوااسکریپت)، \f[V]initial_data\f[R] (صرف‌نظر از داده‌های اولیه / درخواست قسمت بعدی). اگرچه این گزینه‌ها می‌توانند به کاهش تعداد درخواست‌های مورد نیاز یا جلوگیری از برخی محدودیت‌های نرخ درخواست (rate-limiting) کمک کنند، اما ممکن است مشکلاتی مانند مفقود شدن فرمت‌ها یا فراداده ایجاد کنند. برای جزئیات بیشتر، #860 (https://github.com/yt-dlp/yt-dlp/pull/860) و #12826 (https://github.com/yt-dlp/yt-dlp/issues/12826) را ببینید. .IP \[bu] 2 \f[V]webpage_skip\f[R]: صرف‌نظر کردن از استخراج داده‌های جاسازی‌شده صفحه وب. یک یا هر دو مورد از \f[V]player_response\f[R]، \f[V]initial_data\f[R]. این گزینه‌ها برای اهداف آزمایشی هستند و از هیچ درخواست شبکه‌ای صرف‌نظر نمی‌کنند. به‌طور پیش‌فرض از هیچ‌کدام صرف‌نظر نمی‌شود؛ اما اگر مقداری غیر از \f[V]actual\f[R] برای \f[V]player_js_version\f[R] استفاده شود، مقدار \f[V]webpage_skip=player_response\f[R] به صورت ضمنی در نظر گرفته می‌شود. .IP \[bu] 2 \f[V]webpage_client\f[R]: کلاینتی که برای درخواست صفحه وب ویدیو استفاده می‌شود. یکی از مقادیر \f[V]web\f[R] (پیش‌فرض) یا \f[V]web_safari\f[R] .IP \[bu] 2 \f[V]player_params\f[R]: پارامترهای پخش‌کننده YouTube برای استفاده در درخواست‌های پخش‌کننده. هرگونه مقدار پیش‌فرض تنظیم‌شده توسط yt-dlp را بازنویسی می‌کند. .IP \[bu] 2 \f[V]player_js_variant\f[R]: نگارش جاوااسکریپت پخش‌کننده جهت استفاده در رمزگشایی n/sig. نگارش‌های شناخته‌شده عبارتند از: \f[V]main\f[R]، \f[V]tcc\f[R]، \f[V]tce\f[R]، \f[V]es5\f[R]، \f[V]es6\f[R]، \f[V]es6_tcc\f[R]، \f[V]es6_tce\f[R]، \f[V]tv\f[R]، \f[V]tv_es6\f[R]، \f[V]phone\f[R]، \f[V]house\f[R]. مقدار پیش‌فرض \f[V]main\f[R] است و موارد دیگر برای مقاصد اشکال‌زدایی هستند. می‌توانید از \f[V]actual\f[R] برای استفاده از آنچه توسط سایت تجویز شده است استفاده کنید. .IP \[bu] 2 \f[V]player_js_version\f[R]: نسخه جاوااسکریپت پخش‌کننده برای رمزگشایی n/sig، در قالب \f[V]signature_timestamp\[at]hash\f[R] (مانند \f[V]20348\[at]0004de42\f[R]). پیش‌فرض استفاده از نسخه تعیین‌شده توسط سایت است و با \f[V]actual\f[R] قابل انتخاب می‌باشد. استفاده از هر مقدار دیگری به معنی اعمال \f[V]webpage_skip=player_response\f[R] خواهد بود. .IP \[bu] 2 \f[V]comment_sort\f[R]: \f[V]top\f[R] یا \f[V]new\f[R] (پیش‌فرض) \- انتخاب حالت مرتب‌سازی دیدگاه‌ها (در سمت YouTube) .IP \[bu] 2 \f[V]max_comments\f[R]: محدود کردن تعداد دیدگاه‌های گردآوری‌شده. فهرستی از اعداد صحیح جداشده با کاما به صورت \f[V]max-comments,max-parents,max-replies,max-replies-per-thread,max-depth\f[R]. پیش‌فرض \f[V]all,all,all,all,all\f[R] است. .RS 2 .IP \[bu] 2 مقدار \f[V]1\f[R] برای \f[V]max-depth\f[R] تمام پاسخ‌ها را صرف‌نظر از مقادیر ارائه‌شده برای \f[V]max-replies\f[R] یا \f[V]max-replies-per-thread\f[R] نادیده می‌گیرد. .IP \[bu] 2 به عنوان مثال، \f[V]all,all,1000,10,2\f[R] حداکثر ۱۰۰۰ پاسخ در کل، با حداکثر ۱۰ پاسخ در هر رشته (thread)، و تنها ۲ سطح عمق (یعنی دیدگاه‌های سطح اول به اضافه پاسخ‌های مستقیم آن‌ها) را دریافت می‌کند. \f[V]1000,all,100\f[R] حداکثر ۱۰۰۰ دیدگاه با حداکثر ۱۰۰ پاسخ در کل دریافت می‌کند. .RE .IP \[bu] 2 \f[V]formats\f[R]: تغییر انواع فرمت‌های بازگردانده‌شده. \f[V]dashy\f[R] (تبدیل HTTP به DASH)، \f[V]duplicate\f[R] (محتوای یکسان با نشانی‌ها یا پروتکل‌های متفاوت؛ شامل \f[V]dashy\f[R])، \f[V]incomplete\f[R] (فرمت‌هایی که نمی‌توانند به‌طور کامل بارگیری شوند \- لایو و پس از لایو dash، پس از لایو m3u8، و https تطبیقی لایو بدون --live-from-start)، \f[V]missing_pot\f[R] (شامل فرمت‌هایی که نیازمند PO Token هستند اما فاقد آن می‌باشند) .IP \[bu] 2 \f[V]innertube_host\f[R]: میزبان Innertube API برای استفاده در تمام درخواست‌های API؛ مانند \f[V]studio.youtube.com\f[R]، \f[V]youtubei.googleapis.com\f[R]. توجه داشته باشید که کوکی‌های صادرشده از یک زیردامنه روی سایر زیردامنه‌ها کار نخواهند کرد. .IP \[bu] 2 \f[V]innertube_key\f[R]: کلید Innertube API برای استفاده در تمام درخواست‌های API. به‌طور پیش‌فرض، هیچ کلید API استفاده نمی‌شود. .IP \[bu] 2 \f[V]raise_incomplete_data\f[R]: اعلام خطا به جای نمایش هشدار در صورت رخداد \f[V]Incomplete Data Received\f[R] .IP \[bu] 2 \f[V]data_sync_id\f[R]: بازنویسی Data Sync ID حساب کاربری مورد استفاده در درخواست‌های Innertube API. این گزینه در صورتی که از حسابی با \f[V]youtube:player_skip=webpage,configs\f[R] یا \f[V]youtubetab:skip=webpage\f[R] استفاده می‌کنید، ممکن است لازم باشد..IP \[bu] 2 \f[V]visitor_data\f[R]: بازنویسی (Override) داده‌های بازدیدکننده (Visitor Data) مورد استفاده در درخواست‌های Innertube API. این مورد باید به همراه \f[V]player_skip=webpage,configs\f[R] و بدون کوکی‌ها استفاده شود. نکته: در صورت استفاده نادرست ممکن است اثرات نامطلوبی داشته باشد. اگر نشستی از یک مرورگر مورد نظر است، باید در عوض کوکی‌ها را ارسال کنید (که حاوی Visitor ID هستند) .IP \[bu] 2 \f[V]po_token\f[R]: توکن(های) اثبات مبدأ (Proof of Origin / PO) مورد استفاده. فهرستی از توکن‌های PO که با کاما از هم جدا شده‌اند در قالب \f[V]CLIENT.CONTEXT+PO_TOKEN\f[R]، مانند: \f[V]youtube:po_token=web.gvs+XXX,web.player=XXX,web_safari.gvs+YYY\f[R]. کانتکست می‌تواند هر یک از \f[V]gvs\f[R] (نشانی‌های وب Google Video Server)، \f[V]player\f[R] (درخواست پخش‌کننده Innertube) یا \f[V]subs\f[R] (زیرنویس‌ها) باشد .IP \[bu] 2 \f[V]pot_trace\f[R]: فعال‌سازی ثبت وقایع اشکال‌زدایی (debug logging) برای واکشی PO Token. یا \f[V]true\f[R] یا \f[V]false\f[R] (پیش‌فرض) .IP \[bu] 2 \f[V]fetch_pot\f[R]: خط‌مشی مورد استفاده برای واکشی PO Token از ارائه‌دهندگان. یکی از مقادیر \f[V]always\f[R] (تلاش همیشگی برای واکشی PO Token صرف نظر از اینکه کلاینت برای کانتکست داده‌شده به آن نیاز دارد یا خیر)، \f[V]never\f[R] (هرگز PO Token را واکشی نکن)، یا \f[V]auto\f[R] (پیش‌فرض؛ تنها در صورتی PO Token را واکشی کن که کلاینت برای کانتکست داده‌شده به آن نیاز داشته باشد) .IP \[bu] 2 \f[V]jsc_trace\f[R]: فعال‌سازی ثبت وقایع اشکال‌زدایی برای واکشی JS Challenge. یا \f[V]true\f[R] یا \f[V]false\f[R] (پیش‌فرض) .IP \[bu] 2 \f[V]use_ad_playback_context\f[R]: رد کردن تبلیغات ابتدایی (preroll) برای حذف زمان انتظار اجباری پیش از بارگیری. هنگام ارسال کوکی‌های حساب ویژه (premium) به yt-dlp از این گزینه استفاده نکنید، زیرا منجر به از دست رفتن فرمت‌های ویژه خواهد شد. تنها با کلاینت‌های پخش‌کننده \f[V]mweb\f[R] و \f[V]web_music\f[R] مؤثر است. یا \f[V]true\f[R] یا \f[V]false\f[R] (پیش‌فرض) .SS youtube-ejs .IP \[bu] 2 \f[V]jitless\f[R]: اجرای موتورهای جاوااسکریپتِ پشتیبانی‌شده در حالت بدون JIT (JIT-less). محیط‌های زمان اجرای پشتیبانی‌شده عبارتند از \f[V]deno\f[R]، \f[V]node\f[R] و \f[V]bun\f[R]. امنیت بهتری را به بهای کاهش کارایی/سرعت فراهم می‌کند. توجه داشته باشید که \f[V]node\f[R] و \f[V]bun\f[R] همچنان ناامن در نظر گرفته می‌شوند. یا \f[V]true\f[R] یا \f[V]false\f[R] (پیش‌فرض) .SS youtubepot-webpo .IP \[bu] 2 \f[V]bind_to_visitor_id\f[R]: تعیین اینکه آیا به جای Visitor Data از Visitor ID برای کش کردن (ذخیره‌سازی موقت) توکن‌های WebPO استفاده شود یا خیر. یا \f[V]true\f[R] (پیش‌فرض) یا \f[V]false\f[R] .SS youtubetab (فهرست‌های پخش، کانال‌ها، فیدهای YouTube و غیره) .IP \[bu] 2 \f[V]skip\f[R]: یک یا چند مورد از \f[V]webpage\f[R] (رد کردن بارگیری اولیه صفحه وب)، \f[V]authcheck\f[R] (اجازه دادن به بارگیری فهرست‌های پخشی که نیاز به احراز هویت دارند در زمانی که صفحه وب اولیه بارگیری نشده است. این کار ممکن است رفتارهای ناخواسته‌ای ایجاد کند، برای جزئیات بیشتر به #1122 (https://github.com/yt-dlp/yt-dlp/pull/1122) مراجعه کنید) .IP \[bu] 2 \f[V]approximate_date\f[R]: استخراج تقریبی \f[V]upload_date\f[R] و \f[V]timestamp\f[R] در flat-playlist. این امر ممکن است باعث شود فیلترهای مبتنی بر تاریخ کمی دچار خطا شوند .SS generic .IP \[bu] 2 \f[V]fragment_query\f[R]: انتقال مستقیم هرگونه پرسمان (query) در نشانی‌های مانیفست mpd/m3u8 به قطعات (fragments) آن‌ها در صورتی که مقداری ارائه نشود، یا در غیر این صورت اعمال رشته پرسمان داده‌شده به صورت \f[V]fragment_query=VALUE\f[R]. توجه داشته باشید که اگر جریان دارای یک کلید HLS AES-128 باشد، پارامترهای پرسمان به URI کلید نیز منتقل خواهند شد، مگر اینکه آرگومان استخراج‌کننده \f[V]key_query\f[R] ارسال شده باشد، یا یک URI کلید خارجی از طریق آرگومان استخراج‌کننده \f[V]hls_key\f[R] ارائه گردد. روی ffmpeg اعمال نمی‌شود .IP \[bu] 2 \f[V]variant_query\f[R]: انتقال مستقیم پرسمان URL اصلی (master) m3u8 به نشانی‌های فهرست پخش متغیر (variant playlist) در صورتی که مقداری ارائه نشود، یا در غیر این صورت اعمال رشته پرسمان داده‌شده به صورت \f[V]variant_query=VALUE\f[R] .IP \[bu] 2 \f[V]key_query\f[R]: انتقال مستقیم پرسمان URL اصلی m3u8 به URI کلید رمزگشایی HLS AES-128 در صورتی که مقداری ارائه نشود، یا در غیر این صورت اعمال رشته پرسمان داده‌شده به صورت \f[V]key_query=VALUE\f[R]. توجه داشته باشید که اگر URI کلید از طریق آرگومان استخراج‌کننده \f[V]hls_key\f[R] ارائه شود، این گزینه هیچ اثری نخواهد داشت. روی ffmpeg اعمال نمی‌شود .IP \[bu] 2 \f[V]hls_key\f[R]: یک کلید URI مربوط به HLS AES-128 \f[I]یا\f[R] خود کلید (به صورت هگز)، و به صورت اختیاری بردار راه‌انداز IV (به صورت هگز)، در قالب \f[V](URI|KEY)[,IV]\f[R]؛ مانند: \f[V]generic:hls_key=ABCDEF1234567980,0xFEDCBA0987654321\f[R]. ارسال هر یک از این مقادیر، استفاده از بارگیری‌کننده بومی HLS را اجباری کرده و مقادیر متناظر یافت‌شده در فهرست پخش m3u8 را بازنویسی می‌کند .IP \[bu] 2 \f[V]is_live\f[R]: دور زدن تشخیص پخش زنده HLS و تنظیم دستی \f[V]live_status\f[R] \- مقدار \f[V]false\f[R] آن را برابر با \f[V]not_live\f[R] قرار می‌دهد، و هر مقدار دیگر (یا بدون مقدار) آن را برابر با \f[V]is_live\f[R] قرار خواهد داد .IP \[bu] 2 \f[V]impersonate\f[R]: هدف(هایی) برای تلاش و جعل هویت در درخواست اولیه صفحه وب؛ مانند: \f[V]generic:impersonate=safari,chrome-110\f[R]. از \f[V]generic:impersonate\f[R] برای جعل هر هدف موجود، و از \f[V]generic:impersonate=false\f[R] برای غیرفعال کردن جعل هویت استفاده کنید (پیش‌فرض).SS vikichannel .IP \[bu] 2 \f[V]video_types\f[R]: انواع ویدیوها برای بارگیری \- یک یا چند مورد از \f[V]episodes\f[R]، \f[V]movies\f[R]، \f[V]clips\f[R]، \f[V]trailers\f[R] .SS youtubewebarchive .IP \[bu] 2 \f[V]check_all\f[R]: تلاش برای بررسی بیشتر به بهای درخواست‌های بیشتر. یک یا چند مورد از \f[V]thumbnails\f[R]، \f[V]captures\f[R] .SS gamejolt .IP \[bu] 2 \f[V]comment_sort\f[R]: \f[V]hot\f[R] (پیش‌فرض)، \f[V]you\f[R] (نیازمند کوکی)، \f[V]top\f[R]، \f[V]new\f[R] \- انتخاب حالت مرتب‌سازی دیدگاه‌ها (از سمت GameJolt) .SS hotstar .IP \[bu] 2 \f[V]res\f[R]: وضوح تصویر جهت نادیده‌گرفتن \- یک یا چند مورد از \f[V]sd\f[R]، \f[V]hd\f[R]، \f[V]fhd\f[R] .IP \[bu] 2 \f[V]vcodec\f[R]: کُدک ویدیویی برای نادیده‌گرفتن \- یک یا چند مورد از \f[V]h264\f[R]، \f[V]h265\f[R]، \f[V]dvh265\f[R] .IP \[bu] 2 \f[V]dr\f[R]: دامنه دینامیکی برای نادیده‌گرفتن \- یک یا چند مورد از \f[V]sdr\f[R]، \f[V]hdr10\f[R]، \f[V]dv\f[R] .SS instagram .IP \[bu] 2 \f[V]app_id\f[R]: مقدار هدر \f[V]X-IG-App-ID\f[R] مورد استفاده برای درخواست‌های API. می‌تواند شماره شناسه واقعی، \f[V]ios\f[R] یا \f[V]web\f[R] (پیش‌فرض) باشد .SS niconicochannelplus .IP \[bu] 2 \f[V]max_comments\f[R]: بیشینه تعداد دیدگاه‌ها برای استخراج \- پیش‌فرض \f[V]120\f[R] است .SS tiktok .IP \[bu] 2 \f[V]api_hostname\f[R]: نام میزبان مورد استفاده برای فراخوانی‌های API تلفن همراه، مانند \f[V]api22-normal-c-alisg.tiktokv.com\f[R] .IP \[bu] 2 \f[V]app_name\f[R]: نام پیش‌فرض برنامه برای استفاده با فراخوانی‌های API تلفن همراه، مانند \f[V]trill\f[R] .IP \[bu] 2 \f[V]app_version\f[R]: نسخه پیش‌فرض برنامه برای استفاده با فراخوانی‌های API تلفن همراه \- باید همراه با \f[V]manifest_app_version\f[R] تنظیم شود، مانند \f[V]34.1.2\f[R] .IP \[bu] 2 \f[V]manifest_app_version\f[R]: نسخه عددی پیش‌فرض برنامه جهت استفاده با فراخوانی‌های API تلفن همراه، مانند \f[V]2023401020\f[R] .IP \[bu] 2 \f[V]aid\f[R]: شناسه برنامه پیش‌فرض جهت استفاده با فراخوانی‌های API تلفن همراه، مانند \f[V]1180\f[R] .IP \[bu] 2 \f[V]app_info\f[R]: فعال‌سازی استخراج با API تلفن همراه از طریق یک یا چند رشته اطلاعات برنامه در قالب \f[V]/[app_name]/[app_version]/[manifest_app_version]/[aid]\f[R]، که در آن \f[V]iid\f[R] شناسه یکتای نصب برنامه است. تنها مقدار الزامی \f[V]iid\f[R] است؛ سایر مقادیر و جداکننده‌های \f[V]/\f[R] آن‌ها را می‌توان حذف کرد، مانند \f[V]tiktok:app_info=1234567890123456789\f[R] یا \f[V]tiktok:app_info=123,456/trill///1180,789//34.0.1/340001\f[R] .IP \[bu] 2 \f[V]device_id\f[R]: فعال‌سازی استخراج با API تلفن همراه با یک شناسه دستگاه واقعی جهت استفاده در فراخوانی‌های API تلفن همراه. پیش‌فرض یک رشته تصادفی ۱۹ رقمی است .SS rokfinchannel .IP \[bu] 2 \f[V]tab\f[R]: کدام برگه بارگیری شود \- یکی از \f[V]new\f[R]، \f[V]top\f[R]، \f[V]videos\f[R]، \f[V]podcasts\f[R]، \f[V]streams\f[R]، \f[V]stacks\f[R] .SS twitter .IP \[bu] 2 \f[V]api\f[R]: انتخاب یکی از گزینه‌های \f[V]graphql\f[R] (پیش‌فرض)، \f[V]legacy\f[R] یا \f[V]syndication\f[R] به عنوان API برای استخراج توییت. در صورت ورود به حساب کاربری هیچ تاثیری ندارد .SS stacommu, wrestleuniverse .IP \[bu] 2 \f[V]device_id\f[R]: مقدار UUID اختصاص‌یافته توسط وبگاه و مورد استفاده برای اعمال محدودیت‌های دستگاه جهت محتوای پخش زنده پولی. در حافظه محلی مرورگر (local storage) قابل یافتن است.SS twitch .IP \[bu] 2 \f[V]client_id\f[R]: مقدار Client ID برای ارسال به همراه درخواست‌های GraphQL، برای مثال: \f[V]twitch:client_id=kimne78kx3ncx6brgo4mv6wki5h1ko\f[R] .SS nhkradirulive (NHK らじる★らじる LIVE) .IP \[bu] 2 \f[V]area\f[R]: کدام نسخهٔ منطقه‌ای استخراج شود. مناطق معتبر عبارتند از: \f[V]sapporo\f[R]، \f[V]sendai\f[R]، \f[V]tokyo\f[R]، \f[V]nagoya\f[R]، \f[V]osaka\f[R]، \f[V]hiroshima\f[R]، \f[V]matsuyama\f[R]، \f[V]fukuoka\f[R]. پیش‌فرض \f[V]tokyo\f[R] است .SS nflplusreplay .IP \[bu] 2 \f[V]type\f[R]: نوع (یا انواع) بازپخش مسابقه برای استخراج. انواع معتبر عبارتند از: \f[V]full_game\f[R]، \f[V]full_game_spanish\f[R]، \f[V]condensed_game\f[R] و \f[V]all_22\f[R]. می‌توانید برای استخراج همهٔ انواع بازپخش‌های موجود از \f[V]all\f[R] استفاده کنید، که پیش‌فرض است .SS jiocinema .IP \[bu] 2 \f[V]refresh_token\f[R]: مقدار شناسهٔ یکتا (UUID) مربوط به \f[V]refreshToken\f[R] از حافظهٔ محلی مرورگر (local storage) می‌تواند برای تمدید طول عمر نشست ورود، هنگام ورود با \f[V]token\f[R] به عنوان نام کاربری و \f[V]accessToken\f[R] از حافظهٔ محلی مرورگر به عنوان گذرواژه، ارسال شود .SS jiosaavn .IP \[bu] 2 \f[V]bitrate\f[R]: بیت‌ریت‌های صوتی درخواستی. یک یا چند مورد از \f[V]16\f[R]، \f[V]32\f[R]، \f[V]64\f[R]، \f[V]128\f[R]، \f[V]320\f[R]. پیش‌فرض \f[V]128,320\f[R] است .SS afreecatvlive .IP \[bu] 2 \f[V]cdn\f[R]: یک یا چند شناسهٔ CDN برای استفاده با فراخوانی API جهت نشانی‌های وب جریان پخش (stream)، مانند: \f[V]gcp_cdn\f[R]، \f[V]gs_cdn_pc_app\f[R]، \f[V]gs_cdn_mobile_web\f[R]، \f[V]gs_cdn_pc_web\f[R] .SS soundcloud .IP \[bu] 2 \f[V]formats\f[R]: قالب‌های درخواستی از API. مقادیر درخواستی باید در ساختار \f[V]{protocol}_{codec}\f[R] باشند، مانند: \f[V]hls_opus,http_aac\f[R]. نویسهٔ \f[V]*\f[R] به عنوان نویسهٔ عام (wildcard) عمل می‌کند، مانند: \f[V]*_mp3\f[R]، و همچنین می‌تواند به تنهایی برای درخواست همهٔ قالب‌ها ارسال شود. پروتکل‌های شناخته‌شده عبارتند از \f[V]http\f[R]، \f[V]hls\f[R] و \f[V]hls-aes\f[R]؛ کدک‌های شناخته‌شده شامل \f[V]aac\f[R]، \f[V]opus\f[R] و \f[V]mp3\f[R] هستند. قالب‌های اصلی \f[V]download\f[R] همواره استخراج می‌شوند. پیش‌فرض عبارت است از: \f[V]http_aac,hls_aac,http_opus,hls_opus,http_mp3,hls_mp3\f[R] .SS orfon (orf:on) .IP \[bu] 2 \f[V]prefer_segments_playlist\f[R]: در صورت موجود بودن، فهرست پخشی از بخش‌های برنامه به جای یک ویدیوی کامل ترجیح داده می‌شود. اگر بخش‌های جداگانه مورد نیاز است، از این گزینه استفاده کنید: \f[V]--concat-playlist never --extractor-args \[dq]orfon:prefer_segments_playlist\[dq]\f[R] .SS bilibili .IP \[bu] 2 \f[V]prefer_multi_flv\f[R]: ترجیح دادن استخراج قالب‌های flv به mp4 برای ویدیوهای قدیمی‌تری که همچنان قالب‌های قدیمی (legacy) را ارائه می‌دهند .SS sonylivseries .IP \[bu] 2 \f[V]sort_order\f[R]: ترتیب مرتب‌سازی قسمت‌ها برای استخراج سریال \- یکی از مقادیر \f[V]asc\f[R] (صعودی، قدیمی‌ترین در ابتدا) یا \f[V]desc\f[R] (نزولی، جدیدترین در ابتدا). پیش‌فرض \f[V]asc\f[R] است .SS streaks .IP \[bu] 2 \f[V]api_key\f[R]: کلید API برای سرآیند \f[V]X-Streaks-Api-Key\f[R] .SS tver .IP \[bu] 2 \f[V]backend\f[R]: ای‌پی‌آی Backend مورد استفاده برای استخراج \- یکی از \f[V]streaks\f[R] (پیش‌فرض) یا \f[V]brightcove\f[R] (منسوخ‌شده) .SS vimeo .IP \[bu] 2 \f[V]client\f[R]: کلاینتی که داده‌های ویدیو از آن استخراج می‌شود. کلاینت‌های در دسترس در حال حاضر \f[V]android\f[R] و \f[V]web\f[R] هستند. تنها از یک کلاینت می‌توان استفاده کرد. کلاینت \f[V]web\f[R] به صورت پیش‌فرض استفاده می‌شود و تنها با کوکی‌های حساب کاربری یا اطلاعات ورود (اعتبارنامه‌ها) کار می‌کند. کلاینت \f[V]android\f[R] تنها با توکن‌های OAuth که از قبل کش شده‌اند کار می‌کند .IP \[bu] 2 \f[V]original_format_policy\f[R]: سیاست مربوط به زمان تلاش برای استخراج قالب‌های اصلی. یکی از مقادیر \f[V]always\f[R]، \f[V]never\f[R] یا \f[V]auto\f[R]. سیاست پیش‌فرض \f[V]auto\f[R] با ایجاد درخواست اضافی تنها در زمانی که Vimeo امکان بارگیری ویدیو را اعلام کرده باشد، تلاش می‌کند از فراتر رفتن از حد مجاز نرخ درخواست‌های API (rate-limit) کلاینت وب جلوگیری کند.SS zan .IP \[bu] 2 \f[V]split_angles\f[R]: جریان‌های چندزاویه‌ای را به قالب‌های زاویه مجزا تقسیم می‌کند. کدگذاری مجدد جریان ویدیویی را در طول بارگیری تحمیل می‌کند و به ffmpeg نیاز دارد. یا \f[V]true\f[R] یا \f[V]false\f[R] (پیش‌فرض) .PP \f[B]نکته\f[R]: این گزینه‌ها ممکن است در آینده بدون توجه به سازگاری با نسخه‌های پیشین تغییر کرده یا حذف شوند .SH "نصب (INSTALLATION)" .PP می‌توانید yt-dlp را با استفاده از باینری‌ها، pip (https://pypi.org/project/yt-dlp) یا با استفاده از یک مدیر بسته شخص ثالث نصب کنید. برای دستورالعمل‌های دقیق به ویکی (https://github.com/yt-dlp/yt-dlp/wiki/Installation) مراجعه کنید .PP \f[B]نکته\f[R]: صفحات راهنما (manpages)، فایل‌های تکمیل خودکار پوسته (autocomplete) و غیره درون tarball کد منبع (https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.tar.gz) در دسترس هستند .SS "به‌روزرسانی (UPDATE)" .PP اگر از باینری‌های انتشار رسمی استفاده می‌کنید، می‌توانید از \f[V]yt-dlp -U\f[R] برای به‌روزرسانی استفاده کنید .PP اگر با pip (https://github.com/yt-dlp/yt-dlp/wiki/Installation#with-pip) نصب کرده‌اید، کافی است همان دستوری را که برای نصب برنامه استفاده شده بود دوباره اجرا کنید .PP برای سایر مدیر بسته‌های شخص ثالث، به ویکی (https://github.com/yt-dlp/yt-dlp/wiki/Installation#third-party-package-managers) مراجعه کرده یا مستندات آن‌ها را بررسی نمایید .PP .PP در حال حاضر سه کانال انتشار برای فایل‌های باینری وجود دارد: \f[V]stable\f[R]، \f[V]nightly\f[R] و \f[V]master\f[R]. .IP \[bu] 2 \f[V]stable\f[R] کانال پیش‌فرض است که انتشارهایی با برنامه زمانی (عمدتاً) ماهانه ارائه می‌دهد. اگرچه این کانال به دلیل این‌که بسیاری از تغییرات آن توسط کاربران کانال‌های انتشار \f[V]nightly\f[R] یا \f[V]master\f[R] آزمایش شده‌اند، \f[V]stable\f[R] نامیده می‌شود، اما آخرین انتشار \f[V]stable\f[R] اغلب \[dq]کهنه\[dq] بوده و مستعد خرابی‌های ناشی از عوامل خارجی است (یعنی سایت‌ها مواردی را در سمت خود تغییر می‌دهند و کارکرد yt-dlp مختل می‌شود). .IP \[bu] 2 کانال \f[V]nightly\f[R] انتشارهایی ارائه می‌دهد که اندکی قبل از نیمه‌شب به وقت UTC در هر روزی که تغییراتی در پایگاه‌کد رخ داده باشد، منتشر می‌شوند. این کانال به‌منزله تصویری لحظه‌ای از روند توسعه پروژه عمل می‌کند و \f[B]کانال توصیه‌شده برای کاربران عادی\f[R] yt-dlp است. انتشارهای \f[V]nightly\f[R] از طریق yt-dlp/yt-dlp-nightly-builds (https://github.com/yt-dlp/yt-dlp-nightly-builds/releases) یا به‌صورت انتشارهای توسعه‌ای بسته PyPI به نام \f[V]yt-dlp\f[R] (که با پرچم \f[V]--pre\f[R] در pip قابل نصب است) در دسترس هستند. .IP \[bu] 2 کانال \f[V]master\f[R] انتشارهای آزمایشی (\[dq]canary\[dq]) را ارائه می‌دهد که پس از هر push به شاخه master منتشر می‌شوند. این کانال همواره جدیدترین اصلاحات و ویژگی‌ها را فراهم می‌کند، اما ممکن است مستعد باگ‌ها یا پس‌رفت‌ها (regressions) باشد. انتشارهای \f[V]master\f[R] از طریق yt-dlp/yt-dlp-master-builds (https://github.com/yt-dlp/yt-dlp-master-builds/releases) در دسترس هستند. .PP هنگام استفاده از \f[V]--update\f[R]/\f[V]-U\f[R]، یک باینری انتشار فقط به کانال فعلی خود به‌روزرسانی می‌شود. از \f[V]--update-to CHANNEL\f[R] می‌توان برای تغییر به یک کانال متفاوت در صورت در دسترس بودن نسخه جدیدتر استفاده کرد. همچنین می‌توان از \f[V]--update-to [CHANNEL\[at]]TAG\f[R] برای ارتقا یا تنزل به برچسب‌های خاص از یک کانال استفاده نمود. .PP شما همچنین می‌توانید از \f[V]--update-to \f[R] (\f[V]/\f[R]) برای به‌روزرسانی به یک کانال در مخزنی کاملاً متفاوت استفاده کنید. با این حال، مراقب باشید که به چه مخزنی به‌روزرسانی می‌کنید، چرا که هیچ اعتبارسنجی‌ای برای باینری‌های مخازن متفاوت انجام نمی‌شود. .PP نمونه کاربرد: .IP \[bu] 2 \f[V]yt-dlp --update-to master\f[R] تغییر به کانال \f[V]master\f[R] و به‌روزرسانی به جدیدترین انتشار آن .IP \[bu] 2 \f[V]yt-dlp --update-to stable\[at]2023.07.06\f[R] ارتقا/تنزل به انتشار برچسب \f[V]2023.07.06\f[R] از کانال \f[V]stable\f[R] .IP \[bu] 2 \f[V]yt-dlp --update-to 2023.10.07\f[R] ارتقا/تنزل به برچسب \f[V]2023.10.07\f[R] در صورت وجود در کانال فعلی .IP \[bu] 2 \f[V]yt-dlp --update-to example/yt-dlp\[at]2023.09.24\f[R] ارتقا/تنزل به انتشار از مخزن \f[V]example/yt-dlp\f[R]، برچسب \f[V]2023.09.24\f[R] .PP \f[B]مهم\f[R]: هر کاربری که با نسخه انتشار \f[V]stable\f[R] دچار مشکل است باید قبل از ارسال گزارش باگ، نسخه \f[V]nightly\f[R] را نصب کرده یا به آن به‌روزرسانی کند: .IP .nf \f[C] # To update to nightly from stable executable/binary: yt-dlp --update-to nightly # To install nightly with pip: python -m pip install -U --pre \[dq]yt-dlp[default]\[dq] \f[R] .fi .PP هنگام اجرای نسخه‌ای از yt-dlp که قدیمی‌تر از ۹۰ روز باشد، یک پیام هشدار مبنی بر پیشنهاد به‌روزرسانی به آخرین نسخه مشاهده خواهید کرد. می‌توانید با افزودن \f[V]--no-update\f[R] به دستور یا فایل پیکربندی خود، از نمایش این هشدار جلوگیری کنید..SS "وابستگی‌ها (DEPENDENCIES)" .PP نسخه‌های 3.10 به بالای Python (CPython) و 3.11 به بالای آن (PyPy) پشتیبانی می‌شوند. سایر نسخه‌ها و پیاده‌سازی‌ها ممکن است به درستی کار کنند یا نکنند. .PP در حالی که سایر وابستگی‌ها اختیاری هستند، استفاده از \f[V]ffmpeg\f[R]، \f[V]ffprobe\f[R]، \f[V]yt-dlp-ejs\f[R] و یک زمان‌اجرا/موتور JavaScript پشتیبانی‌شده اکیداً توصیه می‌شود. .SS "شدیداً توصیه‌شده (Strongly recommended)" .IP \[bu] 2 \f[B]ffmpeg\f[R] و \f[B]ffprobe\f[R] (https://www.ffmpeg.org) \- برای ادغام فایل‌های جداگانهٔ ویدیو و صدا، و همچنین برای انجام وظایف مختلف پس‌پردازش لازم است. مجوز به نوع بیلد بستگی دارد (https://www.ffmpeg.org/legal.html) .RS 2 .PP از آنجا که 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) مراجعه کنید. .PP \f[B]مهم\f[R]: آنچه به آن نیاز دارید \f[I]باینری\f[R] ffmpeg است، \f[B]نه\f[R] بستهٔ Python با همین نام (https://pypi.org/project/ffmpeg) .RE .IP \[bu] 2 \f[B]yt-dlp-ejs\f[R] (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) می‌باشد. .RS 2 .PP یک زمان‌اجرا/موتور JavaScript مانند \f[B]deno\f[R] (https://deno.land) (توصیه‌شده)، \f[B]node.js\f[R] (https://nodejs.org)، \f[B]bun\f[R] (https://bun.sh) یا \f[B]QuickJS\f[R] (https://bellard.org/quickjs) نیز برای اجرای yt-dlp-ejs مورد نیاز است. ویکی (https://github.com/yt-dlp/yt-dlp/wiki/EJS) را ببینید. .RE .SS "شبکه (Networking)" .IP \[bu] 2 \f[B]certifi\f[R] (https://github.com/certifi/python-certifi)* \- مجموعه گواهی‌های ریشهٔ Mozilla را فراهم می‌کند. تحت مجوز MPLv2 (https://github.com/certifi/python-certifi/blob/master/LICENSE) .IP \[bu] 2 \f[B]brotli\f[R] (https://github.com/google/brotli)* یا \f[B]brotlicffi\f[R] (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) .IP \[bu] 2 \f[B]websockets\f[R] (https://github.com/aaugustin/websockets)* \- برای دانلود از طریق websocket. تحت مجوز BSD-3-Clause (https://github.com/aaugustin/websockets/blob/main/LICENSE) .IP \[bu] 2 \f[B]requests\f[R] (https://github.com/psf/requests)* \- کتابخانهٔ HTTP. برای پشتیبانی از پراکسی HTTPS و اتصالات پایدار (persistent connections). تحت مجوز Apache-2.0 (https://github.com/psf/requests/blob/main/LICENSE) .SS "جعل هویت (Impersonation)" .PP موارد زیر امکان جعل هویت درخواست‌های مرورگر را فراهم می‌کنند. این قابلیت ممکن است برای برخی از سایت‌هایی که از انگشت‌نگاری TLS (TLS fingerprinting) استفاده می‌کنند لازم باشد. .IP \[bu] 2 \f[B]curl_cffi\f[R] (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) .RS 2 .IP \[bu] 2 می‌تواند همراه با افزونهٔ اختیاری \f[V]curl-cffi\f[R] نصب شود، مانند: \f[V]pip install \[dq]yt-dlp[default,curl-cffi]\[dq]\f[R] .IP \[bu] 2 در حال حاضر در بیشتر بیلدها گنجانده شده است \f[I]به‌جز\f[R] \f[V]yt-dlp\f[R] (باینری zipimport در Unix) و \f[V]yt-dlp_x86\f[R] (نسخهٔ ۳۲ بیتی Windows) .RE.SS "فراداده (Metadata)" .IP \[bu] 2 \f[B]mutagen\f[R] (https://github.com/quodlibet/mutagen)* \- برای \f[V]--embed-thumbnail\f[R] در قالب‌های خاص. تحت مجوز GPLv2+ (https://github.com/quodlibet/mutagen/blob/master/COPYING) .IP \[bu] 2 \f[B]AtomicParsley\f[R] (https://github.com/wez/atomicparsley) \- برای \f[V]--embed-thumbnail\f[R] در فایل‌های \f[V]mp4\f[R]/\f[V]m4a\f[R] هنگامی که \f[V]mutagen\f[R]/\f[V]ffmpeg\f[R] قادر به انجام آن نیستند. تحت مجوز GPLv2+ (https://github.com/wez/atomicparsley/blob/master/COPYING) .IP \[bu] 2 \f[B]xattr\f[R] (https://github.com/xattr/xattr)، \f[B]pyxattr\f[R] (https://github.com/iustin/pyxattr) یا \f[B]setfattr\f[R] (http://savannah.nongnu.org/projects/attr) \- برای نوشتن فراداده‌های xattr (\f[V]--xattrs\f[R]) روی \f[B]Mac\f[R] و \f[B]BSD\f[R]. به‌ترتیب تحت مجوزهای 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) .SS "متفرقه (Misc)" .IP \[bu] 2 \f[B]pycryptodomex\f[R] (https://github.com/Legrandin/pycryptodome)* \- برای رمزگشایی جریان‌های AES-128 HLS و داده‌های مختلف دیگر. تحت مجوز BSD-2-Clause (https://github.com/Legrandin/pycryptodome/blob/master/LICENSE.rst) .IP \[bu] 2 \f[B]phantomjs\f[R] (https://github.com/ariya/phantomjs) \- در برخی استخراج‌کننده‌ها که نیاز به اجرای JavaScript دارند استفاده می‌شود. دیگر برای YouTube استفاده نمی‌شود. در آینده نزدیک منسوخ خواهد شد. تحت مجوز BSD-3-Clause (https://github.com/ariya/phantomjs/blob/master/LICENSE.BSD) .IP \[bu] 2 \f[B]secretstorage\f[R] (https://github.com/mitya57/secretstorage)* \- برای \f[V]--cookies-from-browser\f[R] جهت دسترسی به دسته‌کلید (keyring) \f[B]Gnome\f[R] هنگام رمزگشایی کوکی‌های مرورگرهای مبتنی بر \f[B]Chromium\f[R] روی \f[B]Linux\f[R]. تحت مجوز BSD-3-Clause (https://github.com/mitya57/secretstorage/blob/master/LICENSE) .IP \[bu] 2 هر بارگیری‌کننده خارجی که می‌خواهید با \f[V]--downloader\f[R] استفاده کنید .SS "منسوخ‌شده (Deprecated)" .IP \[bu] 2 \f[B]rtmpdump\f[R] (http://rtmpdump.mplayerhq.hu) \- برای بارگیری جریان‌های \f[V]rtmp\f[R]. می‌توان به‌جای آن از ffmpeg با \f[V]--downloader ffmpeg\f[R] استفاده کرد. تحت مجوز GPLv2+ (http://rtmpdump.mplayerhq.hu) .PP برای استفاده یا توزیع مجدد وابستگی‌ها، باید با شرایط مجوز مربوط به هرکدام موافقت کنید. .PP باینری‌های انتشار مستقل (standalone) همراه با مفسر Python و بسته‌های مشخص‌شده با علامت \f[B]*\f[R] ساخته شده‌اند. .PP اگر وابستگی‌های لازم را برای کاری که انجام می‌دهید نداشته باشید، yt-dlp به شما هشدار خواهد داد. تمام وابستگی‌های در دسترس فعلی در بالای خروجی \f[V]--verbose\f[R] قابل مشاهده هستند. .SS "کامپایل (COMPILE)" .SS "ساخت‌های مستقل PyInstaller (Standalone PyInstaller Builds)" .PP برای ساخت فایل اجرایی مستقل، باید Python و \f[V]pyinstaller\f[R] (به همراه هر یک از وابستگی‌های اختیاری yt-dlp در صورت نیاز) را در دسترس داشته باشید. فایل اجرایی برای همان معماری پردازنده‌ای ساخته خواهد شد که در Python استفاده شده است. .PP می‌توانید دستورهای زیر را اجرا کنید: .IP .nf \f[C] python devscripts/install_deps.py --include-group pyinstaller python devscripts/make_lazy_extractors.py python -m bundle.pyinstaller \f[R] .fi .PP در برخی سیستم‌ها، ممکن است لازم باشد به‌جای \f[V]python\f[R] از \f[V]py\f[R] یا \f[V]python3\f[R] استفاده کنید. .PP دستور \f[V]python -m bundle.pyinstaller\f[R] هر آرگومانی را که بتوان به \f[V]pyinstaller\f[R] ارسال کرد می‌پذیرد، مانند \f[V]--onefile/-F\f[R] یا \f[V]--onedir/-D\f[R]، که اطلاعات بیشتر در اینجا (https://pyinstaller.org/en/stable/usage.html#what-to-generate) مستند شده است. .PP \f[B]نکته\f[R]: نسخه‌های پایین‌تر از 4.4 ابزار Pyinstaller از Python نصب‌شده از Windows Store بدون استفاده از یک محیط مجازی پشتیبانی نمی‌کنند (https://github.com/pyinstaller/pyinstaller#requirements-and-tested-platforms). .PP \f[B]مهم\f[R]: اجرای مستقیم \f[V]pyinstaller\f[R] \f[B]به‌جای\f[R] استفاده از \f[V]python -m bundle.pyinstaller\f[R] به‌صورت رسمی پشتیبانی \f[B]نمی‌شود\f[R]. این کار ممکن است به درستی عمل کند یا نکند..SS باینری مستقل از پلتفرم (UNIX) .PP شما به ابزارهای ساخت \f[V]python\f[R] (نسخهٔ ۳.۱۰ به بالا)، \f[V]zip\f[R]، \f[V]make\f[R] (نسخهٔ GNU)، \f[V]pandoc\f[R]* و \f[V]pytest\f[R]* نیاز خواهید داشت. .PP پس از نصب این موارد، تنها کافی است \f[V]make\f[R] را اجرا کنید. .PP همچنین می‌توانید به جای آن \f[V]make yt-dlp\f[R] را اجرا کنید تا فقط فایل باینری بدون به‌روزرسانی هیچ‌کدام از فایل‌های اضافی کامپایل شود. (ابزارهای ساختی که با علامت \f[B]*\f[R] مشخص شده‌اند برای این کار لازم نیستند) .SS اسکریپت‌های مرتبط .IP \[bu] 2 \f[B]\f[VB]devscripts/install_deps.py\f[B]\f[R] \- نصب وابستگی‌ها برای yt-dlp. .IP \[bu] 2 \f[B]\f[VB]devscripts/update-version.py\f[B]\f[R] \- به‌روزرسانی شمارهٔ نسخه بر اساس تاریخ جاری. .IP \[bu] 2 \f[B]\f[VB]devscripts/set-variant.py\f[B]\f[R] \- تنظیم گونهٔ ساخت (variant) فایل اجرایی. .IP \[bu] 2 \f[B]\f[VB]devscripts/make_changelog.py\f[B]\f[R] \- ایجاد یک گزارش تغییرات markdown با استفاده از پیام‌های کوتاه کامیت و به‌روزرسانی فایل \f[V]CONTRIBUTORS\f[R]. .IP \[bu] 2 \f[B]\f[VB]devscripts/make_lazy_extractors.py\f[B]\f[R] \- ساخت استخراج‌کننده‌های تنبل (lazy extractors). اجرای این اسکریپت پیش از ساخت باینری‌ها (هر گونه‌ای) کارایی راه‌اندازی آن‌ها را بهبود می‌بخشد. برای غیرفعال‌سازی اجباری بارگذاری استخراج‌کننده‌های تنبل، متغیر محیطی \f[V]YTDLP_NO_LAZY_EXTRACTORS\f[R] را روی مقداری غیرخالی تنظیم کنید. .PP نکته: برای اطلاعات بیشتر گزینهٔ \f[V]--help\f[R] آن‌ها را ببینید. .SS فورک کردن پروژه .PP اگر پروژه را در GitHub فورک کنید، می‌توانید گردش‌کار ساخت (build workflow) فورک خود را اجرا کنید تا نسخه(های) انتخاب‌شده به‌طور خودکار به عنوان artifact ساخته شوند. همچنین می‌توانید گردش‌کار انتشار (release workflow) را اجرا کنید یا گردش‌کار nightly را فعال نمایید تا نسخه‌های کامل (پیش‌)انتشار ایجاد شوند. .SH "پلاگین‌ها (PLUGINS)" .PP توجه داشته باشید که \f[B]تمام\f[R] پلاگین‌ها حتی اگر فراخوانی نشوند وارد (import) می‌شوند، و \f[B]هیچ بررسی‌ای\f[R] روی کد پلاگین انجام نمی‌گیرد. \f[B]مسئولیت استفاده از پلاگین‌ها بر عهدهٔ خود شماست و تنها در صورتی که به کد اعتماد دارید از آن‌ها استفاده کنید!\f[R] .PP پلاگین‌ها می‌توانند از \f[V]\f[R]های \f[V]extractor\f[R] یا \f[V]postprocessor\f[R] باشند. \- پلاگین‌های استخراج‌کننده نیازی به فعال‌سازی از طریق خط فرمان (CLI) ندارند و هنگامی که URL ورودی برای آن‌ها مناسب باشد به‌طور خودکار فراخوانی می‌شوند. \- پلاگین‌های استخراج‌کننده نسبت به استخراج‌کننده‌های داخلی اولویت دارند. \- پلاگین‌های پس‌پردازشگر را می‌توان با استفاده از \f[V]--use-postprocessor NAME\f[R] فراخوانی کرد. .PP پلاگین‌ها از بسته‌های فضای‌نام \f[V]yt_dlp_plugins.extractor\f[R] و \f[V]yt_dlp_plugins.postprocessor\f[R] بارگذاری می‌شوند. .PP به عبارت دیگر، ساختار فایل‌ها روی دیسک چیزی شبیه به این است: .IP .nf \f[C] yt_dlp_plugins/ extractor/ myplugin.py postprocessor/ myplugin.py \f[R] .fi .PP ابزار yt-dlp این پوشه‌های فضای‌نام \f[V]yt_dlp_plugins\f[R] را در مکان‌های متعددی جستجو می‌کند (به بخش زیر مراجعه کنید) و پلاگین‌ها را از \f[B]همهٔ\f[R] آن‌ها بارگذاری می‌نماید. برای غیرفعال‌سازی کامل بارگذاری پلاگین‌ها، متغیر محیطی \f[V]YTDLP_NO_PLUGINS\f[R] را روی مقداری غیرخالی تنظیم کنید. .PP برای مشاهدهٔ برخی از پلاگین‌های شناخته‌شده به ویکی مراجعه کنید: (https://github.com/yt-dlp/yt-dlp/wiki/Plugins) .SS نصب پلاگین‌ها .PP پلاگین‌ها را می‌توان با استفاده از روش‌ها و در مکان‌های گوناگونی نصب کرد. .IP "1." 3 \f[B]دایرکتوری‌های پیکربندی\f[R]: بسته‌های پلاگین (حاوی یک پوشهٔ فضای‌نام \f[V]yt_dlp_plugins\f[R]) را می‌توان در مکان‌های پیکربندی استاندارد زیر قرار داد: .RS 4 .IP \[bu] 2 \f[B]پلاگین‌های کاربر\f[R] .RS 2 .IP \[bu] 2 \f[V]${XDG_CONFIG_HOME}/yt-dlp/plugins//yt_dlp_plugins/\f[R] (در Linux/macOS توصیه می‌شود) .IP \[bu] 2 \f[V]${XDG_CONFIG_HOME}/yt-dlp-plugins//yt_dlp_plugins/\f[R] .IP \[bu] 2 \f[V]${APPDATA}/yt-dlp/plugins//yt_dlp_plugins/\f[R] (در Windows توصیه می‌شود) .IP \[bu] 2 \f[V]${APPDATA}/yt-dlp-plugins//yt_dlp_plugins/\f[R] .IP \[bu] 2 \f[V]\[ti]/.yt-dlp/plugins//yt_dlp_plugins/\f[R] .IP \[bu] 2 \f[V]\[ti]/yt-dlp-plugins//yt_dlp_plugins/\f[R] .RE .IP \[bu] 2 \f[B]پلاگین‌های سیستم\f[R] .RS 2 .IP \[bu] 2 \f[V]/etc/yt-dlp/plugins//yt_dlp_plugins/\f[R] .IP \[bu] 2 \f[V]/etc/yt-dlp-plugins//yt_dlp_plugins/\f[R] .RE .RE .IP "2." 3 \f[B]مکان فایل اجرایی\f[R]: بسته‌های پلاگین را می‌توان به‌طور مشابه در یک دایرکتوری \f[V]yt-dlp-plugins\f[R] زیر مکان فایل اجرایی نصب کرد (برای نصب‌های پرتابل توصیه می‌شود): .RS 4 .IP \[bu] 2 باینری: جایی که \f[V]/yt-dlp.exe\f[R] قرار دارد، \f[V]/yt-dlp-plugins//yt_dlp_plugins/\f[R] .IP \[bu] 2 سورس‌کد: جایی که \f[V]/yt_dlp/__main__.py\f[R] قرار دارد، \f[V]/yt-dlp-plugins//yt_dlp_plugins/\f[R] .RE .IP "3." 3 \f[B]ابزار pip و دیگر مکان‌ها در \f[VB]PYTHONPATH\f[B]\f[R] .RS 4 .IP \[bu] 2 بسته‌های پلاگین را می‌توان با استفاده از \f[V]pip\f[R] نصب و مدیریت کرد. برای مشاهدهٔ یک نمونه، yt-dlp-sample-plugins (https://github.com/yt-dlp/yt-dlp-sample-plugins) را ببینید. .RS 2 .IP \[bu] 2 نکته: فایل‌های پلاگین بین بسته‌های پلاگینِ نصب‌شده با pip باید نام فایل یکتا داشته باشند. .RE .IP \[bu] 2 هر مسیری در \f[V]PYTHONPATH\f[R] برای یافتن پوشهٔ فضای‌نام \f[V]yt_dlp_plugins\f[R] جستجو می‌شود. .RS 2 .IP \[bu] 2 نکته: این مورد برای ساخت‌های Pyinstaller صدق نمی‌کند. .RE .RE .PP بایگانی‌های \f[V].zip\f[R]، \f[V].egg\f[R] و \f[V].whl\f[R] که شامل یک پوشهٔ فضای‌نام \f[V]yt_dlp_plugins\f[R] در ریشهٔ خود هستند نیز به عنوان بسته‌های پلاگین پشتیبانی می‌شوند. .IP \[bu] 2 برای مثال: \f[V]${XDG_CONFIG_HOME}/yt-dlp/plugins/mypluginpkg.zip\f[R] جایی که \f[V]mypluginpkg.zip\f[R] حاوی \f[V]yt_dlp_plugins//myplugin.py\f[R] است. .PP برای بررسی اینکه آیا پلاگین بارگذاری شده است یا خیر، yt-dlp را با \f[V]--verbose\f[R] اجرا کنید..SS "توسعه افزونه‌ها (Developing Plugins)" .PP برای بسته افزونه نمونه، مخزن 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) در ویکی را ببینید. .PP تمام کلاس‌های عمومی که نام آن‌ها به \f[V]IE\f[R]/\f[V]PP\f[R] ختم می‌شود، از هر فایل به‌ترتیب برای استخراج‌کننده‌ها (extractors) و پس‌پردازنده‌ها (postprocessors) وارد (import) می‌شوند. این فرایند پیشوند خط تیره زیرین (برای نمونه \f[V]_MyBasePluginIE\f[R] که خصوصی است) و \f[V]__all__\f[R] را رعایت می‌کند. همچنین می‌توان با افزودن پیشوند خط تیره زیرین به نام ماژول، آن را مستثنی کرد (مانند \f[V]_myplugin.py\f[R]). .PP برای جایگزین کردن یک استخراج‌کننده موجود با زیرکلاسی از آن، آرگومان کلیدواژه‌ای کلاسیِ \f[V]plugin_name\f[R] را تنظیم کنید (برای نمونه \f[V]class MyPluginIE(ABuiltInIE, plugin_name=\[aq]myplugin\[aq])\f[R] کلاس \f[V]ABuiltInIE\f[R] را با \f[V]MyPluginIE\f[R] جایگزین خواهد کرد). از آنجا که استخراج‌کننده جایگزین والد می‌شود، باید با خصوصی کردن استخراج‌کننده زیرکلاس با استفاده از یکی از روش‌های توضیح‌داده‌شده در بالا، از وارد شدن جداگانه آن جلوگیری کنید. .PP اگر نویسنده افزونه هستید، جهت قابلیت دیده‌شدن و کشف آسان‌تر، موضوع (topic) yt-dlp-plugins (https://github.com/topics/yt-dlp-plugins) را به مخزن خود اضافه کنید. .PP برای چگونگی نوشتن و آزمایش یک استخراج‌کننده، Developer Instructions (https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#developer-instructions) را ببینید. .SH "تعبیه YT-DLP (EMBEDDING YT-DLP)" .PP برنامه yt-dlp نهایت تلاش خود را می‌کند تا یک برنامه خط فرمانی مناسب باشد، و بنابراین باید از هر زبان برنامه‌نویسی قابل فراخوانی باشد. .PP برنامه شما باید از پردازش و تجزیه خروجی استاندارد معمول (stdout) خودداری کند زیرا ممکن است در نسخه‌های آینده تغییر یابد. در عوض، باید از گزینه‌هایی مانند \f[V]-J\f[R]، \f[V]--print\f[R]، \f[V]--progress-template\f[R]، \f[V]--exec\f[R] و غیره استفاده کند تا خروجی کنسولی ایجاد نماید که بتوانید آن را به‌طور قابل اطمینانی بازتولید و تجزیه کنید. .PP از داخل یک برنامه پایتون، می‌توانید yt-dlp را به روشی قدرتمندتر تعبیه کنید، مانند: .IP .nf \f[C] from yt_dlp import YoutubeDL URLS = [\[aq]https://www.youtube.com/watch?v=YE7VzlLtp-4\[aq]] with YoutubeDL() as ydl: ydl.download(URLS) \f[R] .fi .PP به احتمال زیاد مایل خواهید بود از گزینه‌های گوناگون استفاده کنید. برای فهرستی از گزینه‌های موجود، نگاهی به \f[V]yt_dlp/YoutubeDL.py\f[R] یا \f[V]help(yt_dlp.YoutubeDL)\f[R] در پوسته پایتون بیندازید. اگر پیش از این با واسط خط فرمان (CLI) آشنایی دارید، می‌توانید از \f[V]devscripts/cli_to_api.py\f[R] (https://github.com/yt-dlp/yt-dlp/blob/master/devscripts/cli_to_api.py) برای ترجمه سوئیچ‌های خط فرمان به پارامترهای \f[V]YoutubeDL\f[R] بهره ببرید. .PP \f[B]نکته\f[R]: اگر کد خود را از youtube-dl به yt-dlp انتقال می‌دهید، یک نکته مهم که باید مد نظر داشته باشید این است که ما تضمین نمی‌کنیم مقدار بازگشتی \f[V]YoutubeDL.extract_info\f[R] قابل سریال‌سازی به json یا حتی یک دیکشنری باشد. این مقدار شبه‌دیکشنری خواهد بود، اما اگر می‌خواهید مطمئن شوید که یک دیکشنری قابل سریال‌سازی است، آن را همان‌طور که در مثال زیر نشان داده شده از \f[V]YoutubeDL.sanitize_info\f[R] عبور دهید. .SS "مثال‌های تعبیه (Embedding examples)" .SS "استخراج اطلاعات (Extracting information)" .IP .nf \f[C] import json import yt_dlp URL = \[aq]https://www.youtube.com/watch?v=YE7VzlLtp-4\[aq] # ℹ️ 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))) \f[R] .fi.SS دانلود با استفاده از info-json .IP .nf \f[C] import yt_dlp INFO_FILE = \[aq]path/to/video.info.json\[aq] with yt_dlp.YoutubeDL() as ydl: error_code = ydl.download_with_info_file(INFO_FILE) print(\[aq]Some videos failed to download\[aq] if error_code else \[aq]All videos successfully downloaded\[aq]) \f[R] .fi .SS استخراج صدا .IP .nf \f[C] import yt_dlp URLS = [\[aq]https://www.youtube.com/watch?v=YE7VzlLtp-4\[aq]] ydl_opts = { \[aq]format\[aq]: \[aq]m4a/bestaudio/best\[aq], # ℹ️ See help(yt_dlp.postprocessor) for a list of available Postprocessors and their arguments \[aq]postprocessors\[aq]: [{ # Extract audio using ffmpeg \[aq]key\[aq]: \[aq]FFmpegExtractAudio\[aq], \[aq]preferredcodec\[aq]: \[aq]m4a\[aq], }] } with yt_dlp.YoutubeDL(ydl_opts) as ydl: error_code = ydl.download(URLS) \f[R] .fi .SS فیلتر کردن ویدیوها .IP .nf \f[C] import yt_dlp URLS = [\[aq]https://www.youtube.com/watch?v=YE7VzlLtp-4\[aq]] def longer_than_a_minute(info, *, incomplete): \[dq]\[dq]\[dq]Download only videos longer than a minute (or with unknown duration)\[dq]\[dq]\[dq] duration = info.get(\[aq]duration\[aq]) if duration and duration < 60: return \[aq]The video is too short\[aq] ydl_opts = { \[aq]match_filter\[aq]: longer_than_a_minute, } with yt_dlp.YoutubeDL(ydl_opts) as ydl: error_code = ydl.download(URLS) \f[R] .fi .SS افزودن لاگر و قلاب پیشرفت .IP .nf \f[C] import yt_dlp URLS = [\[aq]https://www.youtube.com/watch?v=YE7VzlLtp-4\[aq]] 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 \[aq][debug] \[aq] if msg.startswith(\[aq][debug] \[aq]): pass else: self.info(msg) def info(self, msg): pass def warning(self, msg): pass def error(self, msg): print(msg) # ℹ️ See \[dq]progress_hooks\[dq] in help(yt_dlp.YoutubeDL) def my_hook(d): if d[\[aq]status\[aq]] == \[aq]finished\[aq]: print(\[aq]Done downloading, now post-processing ...\[aq]) ydl_opts = { \[aq]logger\[aq]: MyLogger(), \[aq]progress_hooks\[aq]: [my_hook], } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(URLS) \f[R] .fi.SS افزودن یک PostProcessor سفارشی .IP .nf \f[C] import yt_dlp URLS = [\[aq]https://www.youtube.com/watch?v=YE7VzlLtp-4\[aq]] # ℹ️ See help(yt_dlp.postprocessor.PostProcessor) class MyCustomPP(yt_dlp.postprocessor.PostProcessor): def run(self, info): self.to_screen(\[aq]Doing stuff\[aq]) return [], info with yt_dlp.YoutubeDL() as ydl: # ℹ️ \[dq]when\[dq] can take any value in yt_dlp.utils.POSTPROCESS_WHEN ydl.add_post_processor(MyCustomPP(), when=\[aq]pre_process\[aq]) ydl.download(URLS) \f[R] .fi .SS استفاده از یک انتخاب‌گر قالب سفارشی .IP .nf \f[C] import yt_dlp URLS = [\[aq]https://www.youtube.com/watch?v=YE7VzlLtp-4\[aq]] def format_selector(ctx): \[dq]\[dq]\[dq] Select the best video and the best audio that won\[aq]t result in an mkv. NOTE: This is just an example and does not handle all cases \[dq]\[dq]\[dq] # formats are already sorted worst to best formats = ctx.get(\[aq]formats\[aq])[::-1] # acodec=\[aq]none\[aq] means there is no audio best_video = next(f for f in formats if f[\[aq]vcodec\[aq]] != \[aq]none\[aq] and f[\[aq]acodec\[aq]] == \[aq]none\[aq]) # find compatible audio extension audio_ext = {\[aq]mp4\[aq]: \[aq]m4a\[aq], \[aq]webm\[aq]: \[aq]webm\[aq]}[best_video[\[aq]ext\[aq]]] # vcodec=\[aq]none\[aq] means there is no video best_audio = next(f for f in formats if ( f[\[aq]acodec\[aq]] != \[aq]none\[aq] and f[\[aq]vcodec\[aq]] == \[aq]none\[aq] and f[\[aq]ext\[aq]] == audio_ext)) # These are the minimum required fields for a merged format yield { \[aq]format_id\[aq]: f\[aq]{best_video[\[dq]format_id\[dq]]}+{best_audio[\[dq]format_id\[dq]]}\[aq], \[aq]ext\[aq]: best_video[\[aq]ext\[aq]], \[aq]requested_formats\[aq]: [best_video, best_audio], # Must be + separated list of protocols \[aq]protocol\[aq]: f\[aq]{best_video[\[dq]protocol\[dq]]}+{best_audio[\[dq]protocol\[dq]]}\[aq] } ydl_opts = { \[aq]format\[aq]: format_selector, } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(URLS) \f[R] .fi .SH "تغییرات نسبت به YOUTUBE-DL (CHANGES FROM YOUTUBE-DL)" .SS قابلیت‌های جدید .IP \[bu] 2 انشعاب‌یافته از \f[B]yt-dlc\[at]f9401f2\f[R] (https://github.com/blackjack4494/yt-dlc/commit/f9401f2a91987068139c5f757b12fc711d4c0cee) و ادغام‌شده با \f[B]youtube-dl\[at]a08f2b7\f[R] (https://github.com/ytdl-org/youtube-dl/commit/a08f2b7e4567cdc50c0614ee0a4ffdff49b8b6e6) (موارد استثنا (https://github.com/yt-dlp/yt-dlp/issues/21)) .IP \[bu] 2 \f[B]یکپارچه‌سازی با SponsorBlock\f[R]: می‌توانید با بهره‌گیری از API سرویس SponsorBlock (https://sponsor.ajay.app) بخش‌های حامی مالی را در ویدیوهای YouTube علامت‌گذاری یا حذف کنید .IP \[bu] 2 \f[B]مرتب‌سازی قالب‌ها\f[R]: گزینه‌های پیش‌فرض مرتب‌سازی قالب‌ها تغییر یافته‌اند تا تفکیک‌پذیری (رزولوشن) بالاتر و کدک‌های بهتر به جای استفاده صِرف از بیت‌ریت بالاتر ترجیح داده شوند. علاوه بر این، اکنون می‌توانید ترتیب مرتب‌سازی را با استفاده از \f[V]-S\f[R] مشخص کنید. این قابلیت انتخاب قالبی بسیار آسان‌تر از آنچه با استفادهٔ ساده از \f[V]--format\f[R] ممکن بود را فراهم می‌کند (مثال‌ها) .IP \[bu] 2 \f[B]ادغام با animelover1984/youtube-dl\f[R]: بیشتر قابلیت‌ها و بهبودها از animelover1984/youtube-dl (https://github.com/animelover1984/youtube-dl) از جمله \f[V]--write-comments\f[R]، \f[V]BiliBiliSearch\f[R]، \f[V]BilibiliChannel\f[R]، جاسازی تصویر بندانگشتی در mp4/ogg/opus، infojson فهرست پخش و غیره را دریافت می‌کنید. برای جزئیات به #31 (https://github.com/yt-dlp/yt-dlp/pull/31) مراجعه کنید. .IP \[bu] 2 \f[B]بهبودهای مربوط به YouTube\f[R]: .RS 2 .IP \[bu] 2 پشتیبانی از Clips، Stories (\f[V]ytstories:\f[R])، جستجو (شامل فیلترها)\f[B]*\f[R]، جستجوی YouTube Music، جستجوی مختص کانال، پیشوند جستجو (\f[V]ytsearch:\f[R])\f[B]*\f[R]، میکس‌ها (Mixes) و فیدها (\f[V]:ytfav\f[R]، \f[V]:ytwatchlater\f[R]، \f[V]:ytsubs\f[R]، \f[V]:ythistory\f[R]، \f[V]:ytrec\f[R]، \f[V]:ytnotif\f[R]) .IP \[bu] 2 رفع مشکل محدودسازی سرعت بر پایهٔ n-sig (https://github.com/ytdl-org/youtube-dl/issues/29326) \f[B]*\f[R] .IP \[bu] 2 بارگیری پخش‌های زنده از ابتدای آن با استفاده از \f[V]--live-from-start\f[R] (\f[I]آزمایشی\f[R]) .IP \[bu] 2 پیوندهای مربوط به کانال‌ها تمام موارد بارگذاری‌شده کانال، شامل shorts و live را بارگیری می‌کنند .RE .IP \[bu] 2 \f[B]کوکی‌ها از مرورگر\f[R]: کوکی‌ها می‌توانند به طور خودکار از تمامی مرورگرهای وب اصلی با استفاده از \f[V]--cookies-from-browser BROWSER[+KEYRING][:PROFILE][::CONTAINER]\f[R] استخراج شوند .IP \[bu] 2 \f[B]بازه زمانی بارگیری\f[R]: ویدیوها می‌توانند بر اساس برچسب‌های زمانی یا فصل‌ها به کمک \f[V]--download-sections\f[R] به صورت جزئی بارگیری شوند .IP \[bu] 2 \f[B]تقسیم ویدیو بر اساس فصل‌ها\f[R]: ویدیوها را می‌توان بر پایهٔ فصل‌ها با استفاده از \f[V]--split-chapters\f[R] به چندین فایل تقسیم کرد .IP \[bu] 2 \f[B]بارگیری قطعات به صورت چندریسمانی\f[R]: بارگیری موازی چندین قطعه از ویدیوهای m3u8/mpd. از گزینهٔ \f[V]--concurrent-fragments\f[R] (\f[V]-N\f[R]) برای تعیین تعداد ریسمان‌های مورد استفاده بهره بگیرید .IP \[bu] 2 \f[B]استخراج‌کننده‌های جدید و اصلاح‌شده\f[R]: استخراج‌کننده‌های جدید بسیاری افزوده شده و شمار زیادی از موارد پیشین اصلاح شده‌اند. گزارش تغییرات (changelog) یا فهرست سایت‌های پشتیبانی‌شده را ببینید .IP \[bu] 2 \f[B]اپراتورهای چندسیستمی (MSO) جدید\f[R]: Philo، Spectrum، SlingTV، Cablevision، RCN و غیره. .IP \[bu] 2 \f[B]استخراج زیرنویس از مانیفست‌ها\f[R]: زیرنویس‌ها را می‌توان از مانیفست‌های رسانه جاری استخراج کرد. برای جزئیات به commit/be6202f (https://github.com/yt-dlp/yt-dlp/commit/be6202f12b97858b9d716e608394b51065d0419f) مراجعه کنید .IP \[bu] 2 \f[B]مسیرها و الگوهای خروجی چندگانه\f[R]: می‌توانید الگوهای خروجی و مسیرهای بارگیری متفاوتی برای انواع گوناگون فایل‌ها تعریف کنید. همچنین می‌توانید با \f[V]--paths\f[R] (\f[V]-P\f[R]) یک مسیر موقت که فایل‌های میانی در آن بارگیری شوند مشخص نمایید .IP \[bu] 2 \f[B]پیکربندی قابل‌حمل\f[R]: فایل‌های پیکربندی به صورت خودکار از دایرکتوری‌های home و root بارگذاری می‌شوند. برای جزئیات بیشتر CONFIGURATION را ببینید .IP \[bu] 2 \f[B]بهبودهای الگوی خروجی\f[R]: الگوهای خروجی اکنون می‌توانند شامل قالب‌بندی تاریخ-زمان، آفست‌های عددی، پیمایش شیء و غیره باشند. برای جزئیات الگوی خروجی را ببینید. عملیات بسیار پیشرفته‌تری نیز به کمک \f[V]--parse-metadata\f[R] و \f[V]--replace-in-metadata\f[R] قابل انجام است .IP \[bu] 2 \f[B]سایر گزینه‌های جدید\f[R]: گزینه‌های جدید متعددی افزوده شده‌اند از جمله \f[V]--alias\f[R]، \f[V]--print\f[R]، \f[V]--concat-playlist\f[R]، \f[V]--wait-for-video\f[R]، \f[V]--retry-sleep\f[R]، \f[V]--sleep-requests\f[R]، \f[V]--convert-thumbnails\f[R]، \f[V]--force-download-archive\f[R]، \f[V]--force-overwrites\f[R]، \f[V]--break-match-filters\f[R] و غیره .IP \[bu] 2 \f[B]بهبودها\f[R]: عبارات باقاعده (Regex) و سایر عملگرها در \f[V]--format\f[R]/\f[V]--match-filters\f[R]، آرگومان‌های چندگانه \f[V]--postprocessor-args\f[R] و \f[V]--downloader-args\f[R]، بررسی سریع‌تر آرشیو، گزینه‌های بیشتر گزینش قالب، ادغام چند ویدیو/صدا، چندین \f[V]--config-locations\f[R]، اجرای \f[V]--exec\f[R] در مراحل مختلف، و غیره .IP \[bu] 2 \f[B]پلاگین‌ها\f[R]: امکان بارگذاری استخراج‌کننده‌ها و پردازشگرهای پسین از یک فایل خارجی وجود دارد. برای جزئیات بیشتر به بخش plugins مراجعه کنید .IP \[bu] 2 \f[B]به‌روزرسان خودکار\f[R]: نگارش‌ها را می‌توان با \f[V]yt-dlp -U\f[R] به‌روزرسانی کرد، و در صورت نیاز با استفاده از \f[V]--update-to\f[R] به نسخه‌های پیشین بازگرداند .IP \[bu] 2 \f[B]ساخت‌های خودکار\f[R]: ساخت‌های nightly/master را می‌توان با \f[V]--update-to nightly\f[R] و \f[V]--update-to master\f[R] به کار برد .PP برای مشاهدهٔ سیاهه کامل دگرگونی‌ها، changelog یا commitها (https://github.com/yt-dlp/yt-dlp/commits) را ببینید.PP قابلیت‌هایی که با \f[B]*\f[R] علامت‌گذاری شده‌اند به youtube-dl بازپورت (back-port) شده‌اند. .SS تفاوت‌ها در رفتار پیش‌فرض .PP برخی از گزینه‌های پیش‌فرض yt-dlp با youtube-dl و youtube-dlc متفاوت هستند: .IP \[bu] 2 برنامه 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) .IP \[bu] 2 گزینه‌های \f[V]--auto-number\f[R] (\f[V]-A\f[R])، \f[V]--title\f[R] (\f[V]-t\f[R]) و \f[V]--literal\f[R] (\f[V]-l\f[R]) دیگر کار نمی‌کنند. برای جزئیات به بخش گزینه‌های حذف‌شده مراجعه کنید .IP \[bu] 2 ابزار \f[V]avconv\f[R] به عنوان جایگزینی برای \f[V]ffmpeg\f[R] پشتیبانی نمی‌شود .IP \[bu] 2 برنامه yt-dlp فایل‌های پیکربندی را در مکان‌هایی اندکی متفاوت نسبت به youtube-dl ذخیره می‌کند. برای فهرست مکان‌های صحیح به CONFIGURATION مراجعه کنید .IP \[bu] 2 الگوی خروجی پیش‌فرض \f[V]%(title)s [%(id)s].%(ext)s\f[R] است. دلیل واقعی برای این تغییر وجود ندارد. این تغییر پیش از عمومی شدن yt-dlp انجام شد و اکنون برنامه‌ای برای بازگرداندن آن به \f[V]%(title)s-%(id)s.%(ext)s\f[R] وجود ندارد. در عوض، می‌توانید از \f[V]--compat-options filename\f[R] استفاده کنید .IP \[bu] 2 مرتب‌سازی پیش‌فرض قالب‌ها با youtube-dl متفاوت است و تفکیک‌پذیری بالاتر و کدک‌های بهتر را به نرخ بیت بالاتر ترجیح می‌دهد. می‌توانید از گزینهٔ \f[V]--format-sort\f[R] برای تغییر آن به هر ترتیبی که ترجیح می‌دهید استفاده کنید، یا از \f[V]--compat-options format-sort\f[R] برای استفاده از ترتیب مرتب‌سازی youtube-dl بهره ببرید. نسخه‌های قدیمی‌تر yt-dlp به دلیل سازگاری گسترده‌تر، VP9 را ترجیح می‌دادند؛ می‌توانید از \f[V]--compat-options prefer-vp9-sort\f[R] برای بازگشت به آن اولویت مرتب‌سازی قالب استفاده کنید. این دو گزینهٔ سازگاری نمی‌توانند با هم استفاده شوند .IP \[bu] 2 انتخاب‌گر قالب پیش‌فرض \f[V]bv*+ba/b\f[R] است. این بدان معناست که اگر یک قالب ترکیبی ویدیو + صدا پیدا شود که بهتر از بهترین قالب فقط-ویدیو باشد، اولی ترجیح داده خواهد شد. برای بازگرداندن این رفتار از \f[V]-f bv+ba/b\f[R] یا \f[V]--compat-options format-spec\f[R] استفاده کنید .IP \[bu] 2 برخلاف youtube-dlc، برنامه yt-dlp به طور پیش‌فرض اجازه ادغام چند جریان صوتی/تصویری را در یک فایل نمی‌دهد (زیرا این کار با استفاده از \f[V]-f bv*+ba\f[R] در تداخل است). در صورت نیاز، این قابلیت باید با استفاده از \f[V]--audio-multistreams\f[R] و \f[V]--video-multistreams\f[R] فعال شود. همچنین می‌توانید از \f[V]--compat-options multistreams\f[R] برای فعال‌سازی هر دو استفاده کنید .IP \[bu] 2 گزینهٔ \f[V]--no-abort-on-error\f[R] به طور پیش‌فرض فعال است. به جای آن از \f[V]--abort-on-error\f[R] یا \f[V]--compat-options abort-on-error\f[R] برای لغو عملیات هنگام بروز خطا استفاده کنید .IP \[bu] 2 هنگام نوشتن فایل‌های متادیتا مانند بندانگشتی‌ها، توضیحات یا infojson، همین اطلاعات (در صورت موجود بودن) برای لیست‌های پخش نیز نوشته می‌شود. از \f[V]--no-write-playlist-metafiles\f[R] یا \f[V]--compat-options no-playlist-metafiles\f[R] برای عدم نگارش این فایل‌ها استفاده کنید .IP \[bu] 2 گزینهٔ \f[V]--add-metadata\f[R] هنگامی که همراه با \f[V]--write-info-json\f[R] استفاده شود، علاوه بر نوشتن متادیتا، \f[V]infojson\f[R] را نیز به فایل‌های \f[V]mkv\f[R] ضمیمه می‌کند. برای بازگرداندن این رفتار از \f[V]--no-embed-info-json\f[R] یا \f[V]--compat-options no-attach-info-json\f[R] استفاده کنید .IP \[bu] 2 هنگام استفاده از \f[V]--add-metadata\f[R] در مقایسه با youtube-dl، برخی از متادیتاها در فیلدهای متفاوتی جاسازی می‌شوند. به طور ویژه، فیلد \f[V]comment\f[R] شامل \f[V]webpage_url\f[R] و فیلد \f[V]synopsis\f[R] شامل \f[V]description\f[R] است. می‌توانید از \f[V]--parse-metadata\f[R] برای تغییر آن به دلخواه خود استفاده کنید یا از \f[V]--compat-options embed-metadata\f[R] برای بازگرداندن این رفتار بهره ببرید .IP \[bu] 2 متغیر \f[V]playlist_index\f[R] هنگام استفاده با گزینه‌هایی مانند \f[V]--playlist-reverse\f[R] و \f[V]--playlist-items\f[R] رفتار متفاوتی دارد. برای جزئیات به #302 (https://github.com/yt-dlp/yt-dlp/issues/302) مراجعه کنید. اگر می‌خواهید رفتار قبلی را حفظ کنید، می‌توانید از \f[V]--compat-options playlist-index\f[R] استفاده کنید .IP \[bu] 2 خروجی \f[V]-F\f[R] در یک قالب جدید فهرست می‌شود. برای بازگرداندن این رفتار از \f[V]--compat-options list-formats\f[R] استفاده کنید .IP \[bu] 2 گفتگوهای زنده (در صورت موجود بودن) به عنوان زیرنویس در نظر گرفته می‌شوند. برای دانلود تمام زیرنویس‌ها به جز گفتگوی زنده، از \f[V]--sub-langs all,-live_chat\f[R] استفاده کنید. همچنین می‌توانید از \f[V]--compat-options no-live-chat\f[R] برای جلوگیری از دانلود هرگونه live chat/danmaku استفاده کنید .IP \[bu] 2 نشانی‌های اینترنتی کانال YouTube تمام ویدیوهای بارگذاری‌شده کانال را دانلود می‌کنند. برای دانلود فقط ویدیوهای یک برگه خاص، نشانی برگه مورد نظر را وارد کنید. اگر کانال برگه درخواستی را نمایش ندهد، یک خطا ایجاد خواهد شد. همچنین، نشانی‌های \f[V]/live\f[R] در صورتی که ویدیوی زنده‌ای وجود نداشته باشد، به جای دانلود بی‌سروصدای کل کانال، یک خطا ایجاد می‌کنند. می‌توانید از \f[V]--compat-options no-youtube-channel-redirect\f[R] برای بازگرداندن تمام این تغییرمسیرها استفاده کنید .IP \[bu] 2 ویدیوهای غیرقابل‌دسترس نیز برای لیست‌های پخش YouTube فهرست می‌شوند. برای حذف این مورد از \f[V]--compat-options no-youtube-unavailable-videos\f[R] استفاده کنید .IP \[bu] 2 تاریخ‌های بارگذاری استخراج‌شده از YouTube بر حسب UTC هستند. .IP \[bu] 2 اگر \f[V]ffmpeg\f[R] به عنوان دانلودکننده استفاده شود، دانلود و ادغام قالب‌ها در صورت امکان در یک مرحله انجام می‌شود. برای بازگرداندن این رفتار از \f[V]--compat-options no-direct-merge\f[R] استفاده کنید .IP \[bu] 2 جاسازی تصویر بندانگشتی در \f[V]mp4\f[R] در صورت امکان با mutagen انجام می‌شود. برای اجبار به استفاده از AtomicParsley به جای آن، از \f[V]--compat-options embed-thumbnail-atomicparsley\f[R] استفاده کنید .IP \[bu] 2 برخی متادیتاهای داخلی مانند نام‌فایل‌ها به طور پیش‌فرض از infojson حذف می‌شوند. برای بازگرداندن این رفتار از \f[V]--no-clean-infojson\f[R] یا \f[V]--compat-options no-clean-infojson\f[R] استفاده کنید .IP \[bu] 2 هنگامی که \f[V]--embed-subs\f[R] و \f[V]--write-subs\f[R] با هم استفاده شوند، زیرنویس‌ها روی دیسک نوشته شده و در فایل رسانه نیز جاسازی می‌شوند. می‌توانید فقط از \f[V]--embed-subs\f[R] برای جاسازی زیرنویس‌ها و حذف خودکار فایل جداگانه استفاده کنید. برای اطلاعات بیشتر به #630 (comment) (https://github.com/yt-dlp/yt-dlp/issues/630#issuecomment-893659460) مراجعه کنید. از \f[V]--compat-options no-keep-subs\f[R] می‌توان برای بازگرداندن این رفتار استفاده کرد .IP \[bu] 2 در صورت نصب بودن، از \f[V]certifi\f[R] برای گواهی‌های ریشه SSL استفاده خواهد شد. اگر می‌خواهید از گواهی‌های سیستم (مانند خودامضا شده) استفاده کنید، از \f[V]--compat-options no-certifi\f[R] استفاده نمایید .IP \[bu] 2 پاک‌سازی نویسه‌های نامعتبر در نام‌فایل‌ها توسط yt-dlp نسبت به youtube-dl متفاوت‌تر/هوشمندانه‌تر است. می‌توانید از \f[V]--compat-options filename-sanitization\f[R] برای بازگشت به رفتار youtube-dl استفاده کنید .IP \[bu] 2 (در حال حاضر پیاده‌سازی نشده است) [STRIKEOUT:yt-dlp در صورت امکان تلاش می‌کند خروجی‌های دانلودکننده خارجی را به خروجی پیشرفت استاندارد تجزیه کند. می‌توانید از \f[V]--compat-options no-external-downloader-progress\f[R] برای دریافت خروجی دانلودکننده به همان صورت دست‌نخورده استفاده کنید] .IP \[bu] 2 نسخه‌های yt-dlp از 2021.09.01 تا 2022.11.11 (شامل هر دو)، گزینهٔ \f[V]--match-filters\f[R] را روی لیست‌های پخش تودرتو اعمال می‌کردند. این یک عارضه جانبی ناخواسته از 8f18ac (https://github.com/yt-dlp/yt-dlp/commit/8f18aca8717bb0dd49054555af8d386e5eda3a88) بود و در d7b460 (https://github.com/yt-dlp/yt-dlp/commit/d7b460d0e5fc710950582baed2e3fc616ed98a80) برطرف شده است. از \f[V]--compat-options playlist-match-filter\f[R] برای بازگرداندن این مورد استفاده کنید .IP \[bu] 2 نسخه‌های yt-dlp از 2021.11.10 تا 2023.06.21 (شامل هر دو)، مقادیر \f[V]filesize_approx\f[R] را برای قالب‌های تکه‌تکه‌شده/مانیفست تخمین می‌زدند. این امکان برای سهولت در f2fe69 (https://github.com/yt-dlp/yt-dlp/commit/f2fe69c7b0d208bdb1f6292b4ae92bc1e1a7444a) اضافه شد، اما در 0dff8e (https://github.com/yt-dlp/yt-dlp/commit/0dff8e4d1e6e9fb938f4256ea9af7d81f42fd54f) به دلیل عدم دقت بالقوه شدید در مقادیر تخمینی بازگردانده شد. برای ادامه استخراج مقادیر تخمینی از \f[V]--compat-options manifest-filesize-approx\f[R] استفاده کنید .IP \[bu] 2 برنامه yt-dlp از backendهای مدرن کلاینت http مانند \f[V]requests\f[R] استفاده می‌کند. از \f[V]--compat-options prefer-legacy-http-handler\f[R] استفاده کنید تا استفاده از هندلر قدیمی http (\f[V]urllib\f[R]) برای درخواست‌های استاندارد http ترجیح داده شود. .IP \[bu] 2 زیرماژول‌های \f[V]swfinterp\f[R] و \f[V]casefold\f[R] حذف شده‌اند. .IP \[bu] 2 ارسال \f[V]--simulate\f[R] (یا فراخوانی \f[V]extract_info\f[R] با \f[V]download=False\f[R]) دیگر انتخاب قالب پیش‌فرض را تغییر نمی‌دهد. برای جزئیات به #9843 (https://github.com/yt-dlp/yt-dlp/issues/9843) مراجعه کنید. .IP \[bu] 2 برنامه yt-dlp دیگر زمان ویرایش سرور را به طور پیش‌فرض روی فایل‌های دانلودشده اعمال نمی‌کند. برای بازگرداندن این رفتار از \f[V]--mtime\f[R] یا \f[V]--compat-options mtime-by-default\f[R] استفاده کنید. .PP برای راحتی، نام‌های مستعار برای گزینه‌های سازگاری جهت استفاده در دسترس هستند: .IP \[bu] 2 \f[V]--compat-options all\f[R]: استفاده از تمام گزینه‌های سازگاری (\f[B]از این گزینه استفاده نکنید!\f[R]).IP \[bu] 2 \f[V]--compat-options youtube-dl\f[R]: معادل با \f[V]--compat-options all,-multistreams,-playlist-match-filter,-manifest-filesize-approx,-allow-unsafe-ext,-prefer-vp9-sort,-allow-unsafe-exec-expansion\f[R] .IP \[bu] 2 \f[V]--compat-options youtube-dlc\f[R]: معادل با \f[V]--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\f[R] .IP \[bu] 2 \f[V]--compat-options 2021\f[R]: معادل با \f[V]--compat-options 2022,no-certifi,filename-sanitization\f[R] .IP \[bu] 2 \f[V]--compat-options 2022\f[R]: معادل با \f[V]--compat-options 2023,playlist-match-filter,no-external-downloader-progress,prefer-legacy-http-handler,manifest-filesize-approx\f[R] .IP \[bu] 2 \f[V]--compat-options 2023\f[R]: معادل با \f[V]--compat-options 2024,prefer-vp9-sort\f[R] .IP \[bu] 2 \f[V]--compat-options 2024\f[R]: معادل با \f[V]--compat-options 2025,mtime-by-default\f[R] .IP \[bu] 2 \f[V]--compat-options 2025\f[R]: در حال حاضر کاری انجام نمی‌دهد. از این گزینه برای فعال‌سازی همهٔ گزینه‌های سازگاری آینده استفاده کنید .PP استفاده از یکی از نام‌های مستعار سالانهٔ گزینهٔ سازگاری، رفتار پیش‌فرض yt-dlp را بر روی آنچه در \f[I]پایان\f[R] آن سال تقویمی بوده است، تثبیت می‌کند. .PP گزینه‌های سازگاری زیر، رفتارهای آسیب‌پذیر پیش از وصله‌های امنیتی را بازمی‌گردانند: .IP \[bu] 2 \f[V]--compat-options allow-unsafe-ext\f[R]: اجازه به دانلود فایل‌ها با هر پسوندی (از جمله پسوندهای ناامن) (GHSA-79w7-vh3h-8g4j (https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-79w7-vh3h-8g4j)) .RS 2 .RS .PP :warning: تنها زمانی استفاده کنید که دانلود یک فایل معتبر به این دلیل که پسوند آن نامتعارف تشخیص داده شده، رد شود .PP \f[B]این گزینه می‌تواند امکان اجرای کد از راه دور را فراهم کند!\f[R] در عوض، باز کردن یک گزارش مشکل (issue) در (https://github.com/yt-dlp/yt-dlp/issues/new/choose) را در نظر بگیرید! .RE .RE .IP \[bu] 2 \f[V]--compat-options allow-unsafe-exec-expansion\f[R]: گزینهٔ \f[V]--exec\f[R] اجازه می‌دهد از نحو الگوی خروجی در دستورهای آن استفاده شود؛ با این حال، به دلایل امنیتی تبدیل‌هایی که می‌توان استفاده کرد به \f[V]i\f[R]/\f[V]d\f[R] (عدد صحیح ده‌دهی علامت‌دار)، \f[V]f\f[R] (عدد اعشاری ممیز شناور) و \f[V]q\f[R] (محصور در نقل‌قول پوسته) محدود شده‌اند. نسخه‌های yt-dlp از 2021.04.11 تا 2026.03.17 (شامل هر دو) این محدودیت را اعمال نمی‌کردند. این گزینه این محدودیت را لغو می‌کند .RS 2 .RS .PP :warning: \f[B]این گزینه می‌تواند امکان اجرای کد از راه دور را فراهم کند!\f[R] استفاده از تبدیل‌های \f[V]%()q\f[R] را در الگوهای دستور exec خود برای هر مقدار رشته‌ای در نظر بگیرید. .RE .RE .SS "گزینه‌های منسوخ‌شده (Deprecated options)" .PP این‌ها تمام گزینه‌های منسوخ‌شده و جایگزین فعلی آن‌ها برای دستیابی به همان نتیجه هستند .SS "گزینه‌های تقریباً زائد (Almost redundant options)" .PP اگرچه این گزینه‌ها تقریباً مشابه همتایان جدید خود هستند، اما تفاوت‌هایی وجود دارد که مانع از زائد بودن آن‌ها می‌شود .IP .nf \f[C] -j, --dump-json --print \[dq]%()j\[dq] -F, --list-formats --print formats_table --list-thumbnails --print thumbnails_table --print playlist:thumbnails_table --list-subs --print automatic_captions_table --print subtitles_table \f[R] .fi .SS "گزینه‌های زائد (Redundant options)" .PP اگرچه این گزینه‌ها زائد هستند، اما به دلیل سهولت در استفاده، همچنان انتظار می‌رود که به کار گرفته شوند .IP .nf \f[C] --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 \[dq]title \[ti]= (?i)REGEX\[dq] --reject-title REGEX --match-filters \[dq]title !\[ti]= (?i)REGEX\[dq] --min-views COUNT --match-filters \[dq]view_count >=? COUNT\[dq] --max-views COUNT --match-filters \[dq]view_count <=? COUNT\[dq] --break-on-reject Use --break-match-filters --user-agent UA --add-headers \[dq]User-Agent:UA\[dq] --referer URL --add-headers \[dq]Referer:URL\[dq] --playlist-start NUMBER -I NUMBER: --playlist-end NUMBER -I :NUMBER --playlist-reverse -I ::-1 --no-playlist-reverse Default --no-colors --color no_color \f[R] .fi.SS توصیه نمی‌شود .PP اگرچه این گزینه‌ها همچنان کار می‌کنند، استفاده از آن‌ها توصیه نمی‌شود زیرا جایگزین‌های دیگری برای دستیابی به همین هدف وجود دارد. .IP .nf \f[C] --force-generic-extractor --ies generic,default --exec-before-download CMD --exec \[dq]before_dl:CMD\[dq] --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 \[dq]%(id)s.%(ext)s\[dq] --metadata-from-title FORMAT --parse-metadata \[dq]%(title)s:FORMAT\[dq] --hls-prefer-native --downloader \[dq]m3u8:native\[dq] --hls-prefer-ffmpeg --downloader \[dq]m3u8:ffmpeg\[dq] --list-formats-old --compat-options list-formats (نام مستعار: --no-list-formats-as-table) --list-formats-as-table --compat-options -list-formats [پیش‌فرض] --geo-bypass --xff \[dq]default\[dq] --no-geo-bypass --xff \[dq]never\[dq] --geo-bypass-country CODE --xff CODE --geo-bypass-ip-block IP_BLOCK --xff IP_BLOCK \f[R] .fi .SS گزینه‌های توسعه‌دهنده .PP این گزینه‌ها برای استفاده توسط کاربر نهایی در نظر گرفته نشده‌اند. .IP .nf \f[C] --test بارگیری تنها بخشی از ویدیو جهت آزمایش استخراج‌کننده‌ها --load-pages بارگذاری صفحه‌های ذخیره‌شده توسط --write-pages --allow-unplayable-formats فهرست کردن فرمت‌های غیرقابل‌پخش نیز --no-allow-unplayable-formats پیش‌فرض \f[R] .fi .SS نام‌های مستعار قدیمی .PP این‌ها نام‌های مستعاری هستند که بنا به دلایل مختلف دیگر مستندسازی نمی‌شوند. .IP .nf \f[C] --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 \f[R] .fi .SS گزینه‌های Sponskrub .PP پشتیبانی از SponSkrub (https://github.com/faissaloo/SponSkrub) به نفع گزینه‌های \f[V]--sponsorblock\f[R] حذف شده است. .IP .nf \f[C] --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 کاربرد ندارد \f[R] .fi .SS دیگر پشتیبانی نمی‌شود .PP این گزینه‌ها ممکن است دیگر مطابق انتظار کار نکنند. .IP .nf \f[C] --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 \[dq]youtube:skip=dash\[dq] (نام مستعار: --no-youtube-include-dash-manifest) --youtube-skip-hls-manifest نام مستعار حذف‌شده برای --extractor-args \[dq]youtube:skip=hls\[dq] (نام مستعار: --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 دیگر پشتیبانی نمی‌شود \f[R] .fi.SS "حذف‌شده (Removed)" .PP این گزینه‌ها از سال ۲۰۱۴ منسوخ شده بودند و اکنون به‌طور کامل حذف شده‌اند. .IP .nf \f[C] -A, --auto-number -o \[dq]%(autonumber)s-%(id)s.%(ext)s\[dq] -t, -l, --title, --literal -o \[dq]%(title)s-%(id)s.%(ext)s\[dq] \f[R] .fi .SH "مشارکت (CONTRIBUTING)" .PP برای دستورالعمل‌های باز کردن گزارش مشکل (Opening an Issue) و مشارکت در کد پروژه، فایل CONTRIBUTING.md را ببینید. .SH "ویکی (WIKI)" .PP برای اطلاعات بیشتر، به ویکی (https://github.com/yt-dlp/yt-dlp/wiki) مراجعه کنید.