yt-dlp — это многофункциональный загрузчик аудио/видео из командной строки с поддержкой тысяч сайтов. Проект представляет собой форк youtube-dl, основанный на ныне неактивном youtube-dlc.
УСТАНОВКА
Подробные инструкции
Выпустить файлы
Обновлять
Зависимости
Скомпилировать
ИСПОЛЬЗОВАНИЕ И ОПЦИИ
Общие параметры
Параметры сети
Гео-ограничение
Выбор видео
Варианты загрузки
Параметры файловой системы
Параметры миниатюр
Параметры ярлыков Интернета
Многословность и параметры моделирования
Обходные пути
Параметры формата видео
Параметры субтитров
Параметры аутентификации
Параметры постобработки
Параметры спонсорского блока
Опции экстрактора
КОНФИГУРАЦИЯ
Кодировка файла конфигурации
Аутентификация с помощью netrc
Примечания о переменных среды
ВЫХОДНОЙ ШАБЛОН
Примеры шаблонов вывода
ВЫБОР ФОРМАТА
Фильтрация форматов
Сортировка форматов
Примеры выбора формата
МОДИФИКАЦИЯ МЕТАДАННЫХ
Примеры изменения метаданных
АРГУМЕНТЫ ЭКСТРАКТОРА
ПЛАГИНЫ
Установка плагинов
Разработка плагинов
ВСТРАИВАНИЕ YT-DLP
Примеры встраивания
ИЗМЕНЕНИЯ ОТ YOUTUBE-DL
Новые возможности
Различия в поведении по умолчанию
Устаревшие параметры
ВКЛАД
Открытие проблемы
Инструкции для разработчиков
ВИКИ
Часто задаваемые вопросы
Вы можете установить yt-dlp, используя двоичные файлы, pip или сторонний менеджер пакетов. Подробные инструкции смотрите в вики.
Файл | Описание |
---|---|
yt-dlp | Независимый от платформы двоичный файл zipimport. Требуется Python (рекомендуется для Linux/BSD ) |
yt-dlp.exe | Автономный двоичный файл x64 для Windows (Win8+) (рекомендуется для Windows ) |
yt-dlp_macos | Автономный исполняемый файл Universal MacOS (10.15+) (рекомендуется для MacOS ) |
Файл | Описание |
---|---|
yt-dlp_x86.exe | Windows (Win8+) автономный двоичный файл x86 (32-разрядный) |
yt-dlp_linux | Автономный двоичный файл Linux x64 |
yt-dlp_linux_armv7l | Автономный двоичный файл Armv7l (32-разрядный) Linux |
yt-dlp_linux_aarch64 | Автономный двоичный файл aarch64 (64-разрядный) Linux |
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-512СУМЫ | Суммы SHA512 в стиле GNU |
SHA2-512SUMS.сиг | Файл подписи GPG для сумм SHA512. |
SHA2-256СУМС | Суммы SHA256 в стиле GNU |
SHA2-256SUMS.сиг | Файл подписи 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
для обновления, если вы используете двоичные файлы выпуска.
Если вы установили с помощью pip, просто повторно запустите ту же команду, которая использовалась для установки программы.
Информацию о других сторонних менеджерах пакетов см. в вики или в их документации.
В настоящее время существует три канала выпуска двоичных файлов: stable
, nightly
и master
.
stable
является каналом по умолчанию, и многие его изменения были протестированы пользователями nightly
и master
каналов.
На nightly
канале выпуски планируется выпускать каждый день около полуночи по всемирному координированному времени (UTC) для получения информации о новых исправлениях и изменениях проекта. Это рекомендуемый канал для постоянных пользователей yt-dlp. nightly
выпуски доступны по адресу yt-dlp/yt-dlp-nightly-builds или в виде разрабатываемых выпусков пакета yt-dlp
PyPI (который можно установить с помощью флага --pre
в pip).
В 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. Подробную информацию о конкретных проблемах, решаемых этими сборками, см. в файле readme.
Важно : вам нужен двоичный файл ffmpeg, а НЕ одноименный пакет Python.
certifi * — Предоставляет пакет корневых сертификатов Mozilla. Лицензия MPLv2.
brotli * или brotlicffi — поддержка кодирования контента Brotli. Оба имеют лицензию MIT 1 2.
websockets * — для загрузки через websocket. Лицензировано в соответствии с пунктом BSD-3.
запросы * - HTTP-библиотека. Для поддержки HTTPS-прокси и постоянных соединений. Лицензия Apache-2.0.
Следующее обеспечивает поддержку олицетворения запросов браузера. Это может потребоваться для некоторых сайтов, использующих отпечатки пальцев TLS.
Curl_cffi (рекомендуется) — привязка Python для олицетворения завитка. Предоставляет цели олицетворения для Chrome, Edge и Safari. Лицензия MIT
Может быть установлен с помощью группы 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 * — для расшифровки потоков HLS AES-128 и других данных. Лицензировано в соответствии с пунктом BSD-2.
phantomjs — используется в экстракторах, где необходимо запустить JavaScript. Лицензировано в соответствии с пунктом BSD-3.
secretstorage * — для --cookies-from-browser
для доступа к связке ключей Gnome при расшифровке файлов cookie браузеров на базе 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