yt-dlp عبارة عن أداة تنزيل صوت/فيديو غنية بالميزات مع سطر أوامر مع دعم لآلاف المواقع. المشروع عبارة عن شوكة لـ youtube-dl استنادًا إلى youtube-dlc غير النشط الآن.
تثبيت
تعليمات مفصلة
الافراج عن الملفات
تحديث
التبعيات
تجميع
الاستخدام والخيارات
خيارات عامة
خيارات الشبكة
التقييد الجغرافي
اختيار الفيديو
خيارات التنزيل
خيارات نظام الملفات
خيارات الصورة المصغرة
خيارات اختصارات الإنترنت
خيارات الإسهاب والمحاكاة
الحلول
خيارات تنسيق الفيديو
خيارات الترجمة
خيارات المصادقة
خيارات ما بعد المعالجة
خيارات حظر الراعي
خيارات النازع
إعدادات
ترميز ملف التكوين
المصادقة مع netrc
ملاحظات حول متغيرات البيئة
قالب الإخراج
أمثلة على قوالب الإخراج
اختيار التنسيق
تنسيقات التصفية
فرز التنسيقات
أمثلة على اختيار التنسيق
تعديل البيانات الوصفية
تعديل أمثلة البيانات التعريفية
حجج المستخرج
المكونات الإضافية
تثبيت الإضافات
تطوير الإضافات
تضمين YT-DLP
تضمين الأمثلة
التغييرات من YOUTUBE-DL
ميزات جديدة
الاختلافات في السلوك الافتراضي
الخيارات المهملة
المساهمة
فتح قضية
تعليمات المطور
ويكي
التعليمات
يمكنك تثبيت yt-dlp باستخدام الثنائيات أو النقطة أو واحدة باستخدام مدير حزم تابع لجهة خارجية. راجع الويكي للحصول على تعليمات مفصلة
ملف | وصف |
---|---|
yt-dlp | ثنائي zipimport مستقل عن النظام الأساسي. يحتاج إلى لغة Python (موصى به لنظام التشغيل Linux/BSD ) |
yt-dlp.exe | Windows (Win8+) ثنائي x64 مستقل (موصى به لنظام التشغيل Windows ) |
yt-dlp_macos | Universal MacOS (10.15+) مستقل قابل للتنفيذ (موصى به لنظام التشغيل MacOS ) |
ملف | وصف |
---|---|
yt-dlp_x86.exe | Windows (Win8+) ثنائي مستقل x86 (32 بت). |
yt-dlp_linux | لينكس مستقل x64 ثنائي |
yt-dlp_linux_armv7l | Linux مستقل Armv7l (32 بت) ثنائي |
yt-dlp_linux_aarch64 | Linux مستقل Aarch64 (64 بت) ثنائي |
yt-dlp_win.zip | Windows غير المعبأ قابل للتنفيذ (لا يوجد تحديث تلقائي) |
yt-dlp_macos.zip | MacOS (10.15+) غير المعبأ قابل للتنفيذ (بدون تحديث تلقائي) |
yt-dlp_macos_legacy | MacOS (10.9+) مستقل x64 قابل للتنفيذ |
ملف | وصف |
---|---|
yt-dlp.tar.gz | المصدر القطران |
SHA2-512SUMS | مبالغ SHA512 على غرار جنو |
SHA2-512SUMS.sig | ملف توقيع GPG لمبالغ SHA512 |
SHA2-256SUMS | مبالغ SHA256 على غرار جنو |
SHA2-256SUMS.sig | ملف توقيع GPG لمبالغ SHA256 |
المفتاح العام الذي يمكن استخدامه للتحقق من توقيعات GPG متاح هنا مثال للاستخدام:
curl -L https://github.com/yt-dlp/yt-dlp/raw/master/public.key | gpg --import gpg --verify SHA2-256SUMS.sig SHA2-256SUMS gpg --verify SHA2-512SUMS.sig SHA2-512SUMS
ملاحظة : تتوفر صفحات الإدارة وملفات إكمال الصدفة (الإكمال التلقائي) وما إلى ذلك داخل ملف القطران المصدر
يمكنك استخدام yt-dlp -U
للتحديث إذا كنت تستخدم ثنائيات الإصدار
إذا قمت بالتثبيت باستخدام النقطة، فما عليك سوى إعادة تشغيل نفس الأمر الذي تم استخدامه لتثبيت البرنامج
بالنسبة لمديري الحزم الآخرين، راجع موقع wiki أو راجع وثائقهم
توجد حاليًا ثلاث قنوات إصدار للثنائيات: stable
، nightly
، master
.
stable
هي القناة الافتراضية، وقد تم اختبار العديد من تغييراتها من قبل مستخدمي القنوات nightly
master
.
تحتوي القناة nightly
على إصدارات من المقرر إصدارها كل يوم حوالي منتصف الليل بالتوقيت العالمي المنسق، للحصول على لمحة سريعة عن التصحيحات والتغييرات الجديدة للمشروع. هذه هي القناة الموصى بها لمستخدمي yt-dlp العاديين . تتوفر الإصدارات nightly
من yt-dlp/yt-dlp-nightly-builds أو كإصدارات تطوير لحزمة yt-dlp
PyPI (والتي يمكن تثبيتها باستخدام علامة pip's --pre
).
تتميز القناة master
بالإصدارات التي يتم إنشاؤها بعد كل دفعة إلى الفرع الرئيسي، وستحتوي على أحدث الإصلاحات والإضافات، ولكنها قد تكون أيضًا أكثر عرضة للتراجعات. وهي متاحة من خلال yt-dlp/yt-dlp-master-builds.
عند استخدام --update
/ -U
، سيتم تحديث الإصدار الثنائي إلى قناته الحالية فقط. يمكن استخدام --update-to CHANNEL
للتبديل إلى قناة مختلفة عند توفر إصدار أحدث. --update-to [CHANNEL@]TAG
للترقية أو الرجوع إلى إصدار سابق لعلامات معينة من القناة.
يمكنك أيضًا استخدام --update-to
(
) للتحديث إلى قناة في مستودع مختلف تمامًا. كن حذرًا بشأن المستودع الذي تقوم بالتحديث إليه، على الرغم من عدم إجراء عملية تحقق للثنائيات من مستودعات مختلفة.
مثال على الاستخدام:
yt-dlp --update-to master
قم بالتبديل إلى القناة master
والتحديث إلى أحدث إصدار لها
yt-dlp --update-to [email protected]
الترقية/الرجوع إلى إصدار سابق للإصدار إلى علامة القناة stable
2023.07.06
yt-dlp --update-to 2023.10.07
الترقية/الرجوع إلى العلامة 2023.10.07
إذا كانت موجودة على القناة الحالية
yt-dlp --update-to example/[email protected]
الترقية/الرجوع إلى الإصدار السابق من مستودع example/yt-dlp
، العلامة 2023.09.24
هام : يجب على أي مستخدم يواجه مشكلة في الإصدار stable
تثبيت الإصدار nightly
أو تحديثه قبل إرسال تقرير بالأخطاء:
# To update to nightly from stable executable/binary: yt-dlp --update-to nightly # To install nightly with pip: python3 -m pip install -U --pre "yt-dlp[default]"
يتم دعم إصدارات Python 3.9+ (CPython) و3.10+ (PyPy). قد تعمل أو لا تعمل الإصدارات والتطبيقات الأخرى بشكل صحيح.
في حين أن كافة التبعيات الأخرى اختيارية، يوصى بشدة باستخدام ffmpeg
و ffprobe
ffmpeg و ffprobe - مطلوبان لدمج ملفات الفيديو والصوت المنفصلة، وكذلك لمختلف مهام ما بعد المعالجة. الترخيص يعتمد على البناء
هناك أخطاء في ffmpeg تسبب مشكلات مختلفة عند استخدامها مع yt-dlp. نظرًا لأن ffmpeg يمثل تبعية مهمة، فإننا نقدم إصدارات مخصصة مع تصحيحات لبعض هذه المشكلات على yt-dlp/FFmpeg-Builds. راجع الملف التمهيدي للحصول على تفاصيل حول المشكلات المحددة التي تم حلها بواسطة هذه الإصدارات
هام : ما تحتاجه هو ffmpeg ثنائي ، وليس حزمة Python التي تحمل الاسم نفسه
certifi * - يوفر حزمة شهادات الجذر الخاصة بموزيلا. مرخص بموجب MPLv2
brotli * أو brotlicffi - دعم ترميز محتوى Brotli. كلاهما مرخص بموجب MIT 1 2
websockets * - للتنزيل عبر websocket. مرخص بموجب بند BSD-3
طلبات * - مكتبة HTTP. لدعم وكيل HTTPS والاتصالات المستمرة. مرخص بموجب Apache-2.0
فيما يلي تقديم الدعم لانتحال صفة طلبات المتصفح. قد يكون هذا مطلوبًا لبعض المواقع التي تستخدم بصمات TLS.
curl_cffi (مستحسن) - ربط Python لـ curl-impersonate. يوفر أهداف انتحال الهوية لمتصفح Chrome وEdge وSafari. مرخص تحت معهد ماساتشوستس للتكنولوجيا
يمكن تثبيته باستخدام مجموعة curl-cffi
، على سبيل المثال pip install "yt-dlp[default,curl-cffi]"
مضمن حاليًا في إصدارات yt-dlp.exe
و yt-dlp_linux
و yt-dlp_macos
المغير * - لـ --embed-thumbnail
بتنسيقات معينة. مرخص تحت GPLv2+
AtomicParsley - بالنسبة إلى --embed-thumbnail
في ملفات mp4
/ m4a
عندما لا يتمكن mutagen
/ ffmpeg
من ذلك. مرخص تحت GPLv2+
xattr أو pyxattr أو setfattr - لكتابة بيانات تعريف xattr ( --xattr
) على أنظمة Mac و BSD . مرخص بموجب MIT وLGPL2.1 وGPLv2+ على التوالي
pycryptodomex * - لفك تشفير تدفقات AES-128 HLS والعديد من البيانات الأخرى. مرخص بموجب بند BSD-2
phantomjs - يستخدم في المستخرجات التي تحتاج إلى تشغيل جافا سكريبت. مرخص بموجب بند BSD-3
Secretstorage * - لـ --cookies-from-browser
للوصول إلى حلقة مفاتيح Gnome أثناء فك تشفير ملفات تعريف الارتباط للمتصفحات المستندة إلى Chromium على Linux . مرخص بموجب بند BSD-3
أي برنامج تنزيل خارجي تريد استخدامه مع --downloader
avconv و avprobe - بديل مهمل الآن لـ ffmpeg. الترخيص يعتمد على البناء
sponskrub - لاستخدام خيارات sponskrub المهملة الآن. مرخص بموجب GPLv3+
rtmpdump - لتنزيل تدفقات rtmp
. يمكن استخدام ffmpeg بدلاً من ذلك مع --downloader ffmpeg
. مرخص تحت GPLv2+
mplayer أو mpv - لتنزيل تدفقات rstp
/ mms
. يمكن استخدام ffmpeg بدلاً من ذلك مع --downloader ffmpeg
. مرخص بموجب GPLv2+
لاستخدام التبعيات أو إعادة توزيعها، يجب عليك الموافقة على شروط الترخيص الخاصة بها.
تم إنشاء ثنائيات الإصدار المستقلة باستخدام مترجم Python والحزم المميزة بعلامة * مضمنة.
إذا لم تكن لديك التبعيات اللازمة للمهمة التي تحاول القيام بها، فسوف يحذرك yt-dlp. جميع التبعيات المتاحة حاليًا مرئية في الجزء العلوي من مخرج --verbose
لإنشاء ملف مستقل قابل للتنفيذ، يجب أن يكون لديك Python و pyinstaller
(بالإضافة إلى أي من تبعيات yt-dlp الاختيارية إذا لزم الأمر). سيتم إنشاء الملف القابل للتنفيذ بنفس بنية وحدة المعالجة المركزية المستخدمة في Python.
يمكنك تشغيل الأوامر التالية:
python3 devscripts/install_deps.py --include pyinstaller python3 devscripts/make_lazy_extractors.py python3 -m bundle.pyinstaller
في بعض الأنظمة، قد تحتاج إلى استخدام py
أو python
بدلاً من python3
.
يقبل python -m bundle.pyinstaller
أي وسيطات يمكن تمريرها إلى pyinstaller
، مثل --onefile/-F
أو --onedir/-D
، والتي تم توثيقها هنا بشكل أكبر.
ملحوظة : إصدارات Pyinstaller الأقل من 4.4 لا تدعم Python المثبت من متجر Windows دون استخدام بيئة افتراضية.
هام : تشغيل pyinstaller
مباشرة بدلاً من استخدام python -m bundle.pyinstaller
غير مدعوم رسميًا. قد يعمل هذا أو لا يعمل بشكل صحيح.
ستحتاج إلى أدوات البناء python
(3.9+) و zip
و make
(GNU) و pandoc
* و pytest
*.
بعد تثبيت هذه العناصر، ما عليك سوى تشغيل make
.
يمكنك أيضًا تشغيل make yt-dlp
بدلاً من ذلك لتجميع الملف الثنائي فقط دون تحديث أي من الملفات الإضافية. (أدوات البناء المميزة بـ * ليست ضرورية لهذا)
devscripts/install_deps.py
- تثبيت التبعيات لـ yt-dlp.
devscripts/update-version.py
- قم بتحديث رقم الإصدار بناءً على التاريخ الحالي.
devscripts/set-variant.py
- قم بتعيين متغير البنية للملف القابل للتنفيذ.
devscripts/make_changelog.py
- قم بإنشاء سجل تغيير تخفيض السعر باستخدام رسائل الالتزام القصيرة وتحديث ملف CONTRIBUTORS
.
devscripts/make_lazy_extractors.py
- إنشاء مستخرجات كسولة. سيؤدي تشغيل هذا قبل إنشاء الثنائيات (أي متغير) إلى تحسين أداء بدء التشغيل. قم بتعيين متغير البيئة YTDLP_NO_LAZY_EXTRACTORS
على شيء غير فارغ لتعطيل تحميل المستخرج البطيء بالقوة.
ملحوظة: راجع --help
لمزيد من المعلومات.
إذا قمت بتقسيم المشروع على GitHub، فيمكنك تشغيل سير عمل إنشاء الشوكة الخاصة بك لإنشاء الإصدار (الإصدارات) المحددة تلقائيًا كقطع أثرية. وبدلاً من ذلك، يمكنك تشغيل سير عمل الإصدار أو تمكين سير العمل الليلي لإنشاء إصدارات كاملة (سابقة).
yt-dlp [OPTIONS] [--] URL [URL...]
Ctrl+F
هو صديقك :D
-h, --help Print this help text and exit --version Print program version and exit -U, --update Update this program to the latest version --no-update Do not check for updates (default) --update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version. CHANNEL can be a repository as well. CHANNEL and TAG default to "stable" and "latest" respectively if omitted; See "UPDATE" for details. Supported channels: stable, nightly, master -i, --ignore-errors Ignore download and postprocessing errors. The download will be considered successful even if the postprocessing fails --no-abort-on-error Continue with next video on download errors; e.g. to skip unavailable videos in a playlist (default) --abort-on-error Abort downloading of further videos if an error occurs (Alias: --no-ignore-errors) --dump-user-agent Display the current user-agent and exit --list-extractors List all supported extractors and exit --extractor-descriptions Output descriptions of all supported extractors and exit --use-extractors NAMES Extractor names to use separated by commas. You can also use regexes, "all", "default" and "end" (end URL matching); e.g. --ies "holodex.*,end,youtube". Prefix the name with a "-" to exclude it, e.g. --ies default,-generic. Use --list-extractors for a list of extractor names. (Alias: --ies) --default-search PREFIX Use this prefix for unqualified URLs. E.g. "gvsearch2:python" downloads two videos from google videos for the search term "python". Use the value "auto" to let yt-dlp guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching --ignore-config Don't load any more configuration files except those given to --config-locations. For backward compatibility, if this option is found inside the system configuration file, the user configuration is not loaded. (Alias: --no-config) --no-config-locations Do not load any custom configuration files (default). When given inside a configuration file, ignore all previous --config-locations defined in the current file --config-locations PATH Location of the main configuration file; either the path to the config or its containing directory ("-" for stdin). Can be used multiple times and inside other configuration files --plugin-dirs PATH Path to an additional directory to search for plugins. This option can be used multiple times to add multiple directories. Note that this currently only works for extractor plugins; postprocessor plugins can only be loaded from the default plugin directories --flat-playlist Do not extract the videos of a playlist, only list them --no-flat-playlist Fully extract the videos of a playlist (default) --live-from-start Download livestreams from the start. Currently only supported for YouTube (Experimental) --no-live-from-start Download livestreams from the current time (default) --wait-for-video MIN[-MAX] Wait for scheduled streams to become available. Pass the minimum number of seconds (or range) to wait between retries --no-wait-for-video Do not wait for scheduled streams (default) --mark-watched Mark videos watched (even with --simulate) --no-mark-watched Do not mark videos watched (default) --color [STREAM:]POLICY Whether to emit color codes in output, optionally prefixed by the STREAM (stdout or stderr) to apply the setting to. Can be one of "always", "auto" (default), "never", or "no_color" (use non color terminal sequences). Use "auto-tty" or "no_color-tty" to decide based on terminal support only. Can be used multiple times --compat-options OPTS Options that can help keep compatibility with youtube-dl or youtube-dlc configurations by reverting some of the changes made in yt-dlp. See "Differences in default behavior" for details --alias ALIASES OPTIONS Create aliases for an option string. Unless an alias starts with a dash "-", it is prefixed with "--". Arguments are parsed according to the Python string formatting mini-language. E.g. --alias get-audio,-X "-S=aext:{0},abr -x --audio-format {0}" creates options "--get-audio" and "-X" that takes an argument (ARG0) and expands to "-S=aext:ARG0,abr -x --audio-format ARG0". All defined aliases are listed in the --help output. Alias options can trigger more aliases; so be careful to avoid defining recursive options. As a safety measure, each alias may be triggered a maximum of 100 times. This option can be used multiple times
--proxy URL Use the specified HTTP/HTTPS/SOCKS proxy. To enable SOCKS proxy, specify a proper scheme, e.g. socks5://user:[email protected]:1080/. Pass in an empty string (--proxy "") for direct connection --socket-timeout SECONDS Time to wait before giving up, in seconds --source-address IP Client-side IP address to bind to --impersonate CLIENT[:OS] Client to impersonate for requests. E.g. chrome, chrome-110, chrome:windows-10. Pass --impersonate="" to impersonate any client. Note that forcing impersonation for all requests may have a detrimental impact on download speed and stability --list-impersonate-targets List available clients to impersonate. -4, --force-ipv4 Make all connections via IPv4 -6, --force-ipv6 Make all connections via IPv6 --enable-file-urls Enable file:// URLs. This is disabled by default for security reasons.
--geo-verification-proxy URL Use this proxy to verify the IP address for some geo-restricted sites. The default proxy specified by --proxy (or none, if the option is not present) is used for the actual downloading --xff VALUE How to fake X-Forwarded-For HTTP header to try bypassing geographic restriction. One of "default" (only when known to be useful), "never", an IP block in CIDR notation, or a two-letter ISO 3166-2 country code
-I, --playlist-items ITEM_SPEC Comma separated playlist_index of the items to download. You can specify a range using "[START]:[STOP][:STEP]". For backward compatibility, START-STOP is also supported. Use negative indices to count from the right and negative STEP to download in reverse order. E.g. "-I 1:3,7,-5::2" used on a playlist of size 15 will download the items at index 1,2,3,7,11,13,15 --min-filesize SIZE Abort download if filesize is smaller than SIZE, e.g. 50k or 44.6M --max-filesize SIZE Abort download if filesize is larger than SIZE, e.g. 50k or 44.6M --date DATE Download only videos uploaded on this date. The date can be "YYYYMMDD" or in the format [now|today|yesterday][-N[day|week|month|year]]. E.g. "--date today-2weeks" downloads only videos uploaded on the same day two weeks ago --datebefore DATE Download only videos uploaded on or before this date. The date formats accepted are the same as --date --dateafter DATE Download only videos uploaded on or after this date. The date formats accepted are the same as --date --match-filters FILTER Generic video filter. Any "OUTPUT TEMPLATE" field can be compared with a number or a string using the operators defined in "Filtering Formats". You can also simply specify a field to match if the field is present, use "!field" to check if the field is not present, and "&" to check multiple conditions. Use a "" to escape "&" or quotes if needed. If used multiple times, the filter matches if at least one of the conditions is met. E.g. --match-filters !is_live --match-filters "like_count>?100 & description~='(?i)bcats & dogsb'" matches only videos that are not live OR those that have a like count more than 100 (or the like field is not available) and also has a description that contains the phrase "cats & dogs" (caseless). Use "--match-filters -" to interactively ask whether to download each video --no-match-filters Do not use any --match-filters (default) --break-match-filters FILTER Same as "--match-filters" but stops the download process when a video is rejected --no-break-match-filters Do not use any --break-match-filters (default) --no-playlist Download only the video, if the URL refers to a video and a playlist --yes-playlist Download the playlist, if the URL refers to a video and a playlist --age-limit YEARS Download only videos suitable for the given age --download-archive FILE Download only videos not listed in the archive file. Record the IDs of all downloaded videos in it --no-download-archive Do not use archive file (default) --max-downloads NUMBER Abort after downloading NUMBER files --break-on-existing Stop the download process when encountering a file that is in the archive --no-break-on-existing Do not stop the download process when encountering a file that is in the archive (default) --break-per-input Alters --max-downloads, --break-on-existing, --break-match-filters, and autonumber to reset per input URL --no-break-per-input --break-on-existing and similar options terminates the entire download queue --skip-playlist-after-errors N Number of allowed failures until the rest of the playlist is skipped
-N, --concurrent-fragments N Number of fragments of a dash/hlsnative video that should be downloaded concurrently (default is 1) -r,&n