yt-dlp é um downloader de áudio/vídeo de linha de comando rico em recursos, com suporte para milhares de sites. O projeto é um fork do youtube-dl baseado no agora inativo youtube-dlc.
INSTALAÇÃO
Instruções detalhadas
Liberar arquivos
Atualizar
Dependências
Compilar
USO E OPÇÕES
Opções Gerais
Opções de rede
Restrição geográfica
Seleção de Vídeo
Opções de download
Opções do sistema de arquivos
Opções de miniatura
Opções de atalho da Internet
Opções de verbosidade e simulação
Soluções alternativas
Opções de formato de vídeo
Opções de legenda
Opções de autenticação
Opções de pós-processamento
Opções de SponsorBlock
Opções de extração
CONFIGURAÇÃO
Codificação do arquivo de configuração
Autenticação com netrc
Notas sobre variáveis de ambiente
MODELO DE SAÍDA
Exemplos de modelos de saída
SELEÇÃO DE FORMATO
Filtrando Formatos
Classificando Formatos
Exemplos de seleção de formato
MODIFICANDO METADADOS
Modificando exemplos de metadados
ARGUMENTOS DO EXTRATOR
PLUGINS
Instalando plug-ins
Desenvolvendo plug-ins
INCORPORANDO YT-DLP
Exemplos de incorporação
MUDANÇAS DO YOUTUBE-DL
Novos recursos
Diferenças no comportamento padrão
Opções obsoletas
CONTRIBUINDO
Abrindo um problema
Instruções do desenvolvedor
WIKI
Perguntas frequentes
Você pode instalar o yt-dlp usando os binários, pip ou um usando um gerenciador de pacotes de terceiros. Veja o wiki para instruções detalhadas
| Arquivo | Descrição |
|---|---|
| yt-dlp | Binário zipimport independente de plataforma. Precisa de Python (recomendado para Linux/BSD ) |
| yt-dlp.exe | Binário x64 autônomo do Windows (Win8+) (recomendado para Windows ) |
| yt-dlp_macos | Executável autônomo universal MacOS (10.15+) (recomendado para MacOS ) |
| Arquivo | Descrição |
|---|---|
| yt-dlp_x86.exe | Binário x86 (32 bits) autônomo do Windows (Win8+) |
| yt-dlp_linux | Binário x64 autônomo do Linux |
| yt-dlp_linux_armv7l | Binário armv7l independente do Linux (32 bits) |
| yt-dlp_linux_aarch64 | Binário aarch64 autônomo do Linux (64 bits) |
| yt-dlp_win.zip | Executável do Windows descompactado (sem atualização automática) |
| yt-dlp_macos.zip | Executável MacOS (10.15+) descompactado (sem atualização automática) |
| yt-dlp_macos_legacy | Executável x64 autônomo do MacOS (10.9+) |
| Arquivo | Descrição |
|---|---|
| yt-dlp.tar.gz | Tarball de origem |
| SHA2-512SOMAS | Somas SHA512 estilo GNU |
| SHA2-512SUMS.sig | Arquivo de assinatura GPG para somas SHA512 |
| SHA2-256SOMAS | Somas SHA256 estilo GNU |
| SHA2-256SUMS.sig | Arquivo de assinatura GPG para somas SHA256 |
A chave pública que pode ser usada para verificar as assinaturas GPG está disponível aqui Exemplo de uso:
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
Nota : As páginas de manual, arquivos de preenchimento automático (preenchimento automático) etc. estão disponíveis dentro do tarball de origem
Você pode usar yt-dlp -U para atualizar se estiver usando os binários de lançamento
Se você instalou com pip, basta executar novamente o mesmo comando usado para instalar o programa
Para outros gerenciadores de pacotes de terceiros, consulte o wiki ou consulte sua documentação
Atualmente existem três canais de lançamento para binários: stable , nightly e master .
stable é o canal padrão e muitas de suas alterações foram testadas por usuários dos canais nightly e master .
O canal nightly tem lançamentos programados para serem construídos todos os dias por volta da meia-noite UTC, para um instantâneo dos novos patches e alterações do projeto. Este é o canal recomendado para usuários regulares do yt-dlp. Os lançamentos nightly estão disponíveis em yt-dlp/yt-dlp-nightly-builds ou como lançamentos de desenvolvimento do pacote PyPI yt-dlp (que pode ser instalado com o sinalizador --pre do pip).
O canal master apresenta lançamentos que são construídos após cada envio para o branch master, e estes terão as correções e adições mais recentes, mas também podem ser mais propensos a regressões. Eles estão disponíveis em yt-dlp/yt-dlp-master-builds.
Ao usar --update / -U , um binário de lançamento será atualizado apenas para seu canal atual. --update-to CHANNEL pode ser usado para mudar para um canal diferente quando uma versão mais recente estiver disponível. --update-to [CHANNEL@]TAG também pode ser usado para atualizar ou fazer downgrade para tags específicas de um canal.
Você também pode usar --update-to <repository> ( <owner>/<repository> ) para atualizar para um canal em um repositório completamente diferente. Tenha cuidado com o repositório para o qual você está atualizando, pois não há verificação para binários de repositórios diferentes.
Exemplo de uso:
yt-dlp --update-to master muda para o canal master e atualiza para sua versão mais recente
yt-dlp --update-to [email protected] upgrade/downgrade para liberar para a tag de canal stable 2023.07.06
yt-dlp --update-to 2023.10.07 upgrade/downgrade para marcar 2023.10.07 se existir no canal atual
yt-dlp --update-to example/[email protected] upgrade/downgrade para a versão do repositório example/yt-dlp , tag 2023.09.24
Importante : Qualquer usuário que esteja enfrentando problemas com a versão stable deve instalar ou atualizar para a versão nightly antes de enviar um relatório de bug:
# 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]"
As versões 3.9+ do Python (CPython) e 3.10+ (PyPy) são suportadas. Outras versões e implementações podem ou não funcionar corretamente.
Embora todas as outras dependências sejam opcionais, ffmpeg e ffprobe são altamente recomendados
ffmpeg e ffprobe – Necessários para mesclar arquivos separados de vídeo e áudio, bem como para várias tarefas de pós-processamento. A licença depende da construção
Existem bugs no ffmpeg que causam vários problemas quando usados junto com o yt-dlp. Como o ffmpeg é uma dependência tão importante, fornecemos compilações personalizadas com patches para alguns desses problemas em yt-dlp/FFmpeg-Builds. Consulte o leia-me para obter detalhes sobre os problemas específicos resolvidos por essas compilações
Importante : o que você precisa é do binário ffmpeg, NÃO do pacote Python de mesmo nome
certifi * - Fornece o pacote de certificados raiz da Mozilla. Licenciado sob MPLv2
brotli * ou brotlicffi - Suporte à codificação de conteúdo Brotli. Ambos licenciados pelo MIT 1 2
websockets * - Para download via websocket. Licenciado sob cláusula BSD-3
solicitações * - biblioteca HTTP. Para proxy HTTPS e suporte a conexões persistentes. Licenciado sob Apache-2.0
A seguir, é fornecido suporte para representação de solicitações do navegador. Isso pode ser necessário para alguns sites que utilizam impressão digital TLS.
curl_cffi (recomendado) - ligação Python para curl-impersonate. Fornece alvos de representação para Chrome, Edge e Safari. Licenciado pelo MIT
Pode ser instalado com o grupo curl-cffi , por exemplo pip install "yt-dlp[default,curl-cffi]"
Atualmente incluído nas compilações yt-dlp.exe , yt-dlp_linux e yt-dlp_macos
mutagen * - Para --embed-thumbnail em certos formatos. Licenciado sob GPLv2+
AtomicParsley - Para --embed-thumbnail em arquivos mp4 / m4a quando mutagen / ffmpeg não pode. Licenciado sob GPLv2+
xattr , pyxattr ou setfattr - Para escrever metadados xattr ( --xattr ) no Mac e BSD . Licenciado sob MIT, LGPL2.1 e GPLv2+ respectivamente
pycryptodomex * – Para descriptografar fluxos AES-128 HLS e vários outros dados. Licenciado sob cláusula BSD-2
phantomjs - Usado em extratores onde o javascript precisa ser executado. Licenciado sob cláusula BSD-3
secretstorage * - Para --cookies-from-browser acessar o chaveiro Gnome enquanto descriptografa cookies de navegadores baseados em Chromium no Linux . Licenciado sob cláusula BSD-3
Qualquer downloader externo que você deseja usar com --downloader
avconv e avprobe - Alternativa agora obsoleta ao ffmpeg. A licença depende da construção
sponskrub - Para usar as opções sponskrub agora obsoletas . Licenciado sob GPLv3+
rtmpdump - Para baixar fluxos rtmp . ffmpeg pode ser usado com --downloader ffmpeg . Licenciado sob GPLv2+
mplayer ou mpv - Para baixar streams rstp / mms . ffmpeg pode ser usado com --downloader ffmpeg . Licenciado sob GPLv2+
Para usar ou redistribuir as dependências, você deve concordar com os respectivos termos de licenciamento.
Os binários de lançamento independentes são construídos com o interpretador Python e os pacotes marcados com * incluídos.
Se você não tiver as dependências necessárias para uma tarefa que está tentando, o yt-dlp irá avisá-lo. Todas as dependências atualmente disponíveis estão visíveis na parte superior da saída --verbose
Para construir o executável independente, você deve ter Python e pyinstaller (além de qualquer uma das dependências opcionais do yt-dlp, se necessário). O executável será construído para a mesma arquitetura de CPU do Python usado.
Você pode executar os seguintes comandos:
python3 devscripts/install_deps.py --include pyinstaller python3 devscripts/make_lazy_extractors.py python3 -m bundle.pyinstaller
Em alguns sistemas, pode ser necessário usar py ou python em vez de python3 .
python -m bundle.pyinstaller aceita quaisquer argumentos que possam ser passados para pyinstaller , como --onefile/-F ou --onedir/-D , que é documentado mais detalhadamente aqui.
Nota : As versões do Pyinstaller abaixo de 4.4 não suportam Python instalado na loja do Windows sem usar um ambiente virtual.
Importante : a execução direta pyinstaller em vez de usar python -m bundle.pyinstaller não é oficialmente suportada. Isso pode ou não funcionar corretamente.
Você precisará das ferramentas de construção python (3.9+), zip , make (GNU), pandoc * e pytest *.
Depois de instalá-los, basta executar make .
Você também pode executar make yt-dlp para compilar apenas o binário sem atualizar nenhum dos arquivos adicionais. (As ferramentas de construção marcadas com * não são necessárias para isso)
devscripts/install_deps.py - Instale dependências para yt-dlp.
devscripts/update-version.py – Atualize o número da versão com base na data atual.
devscripts/set-variant.py – Defina a variante de construção do executável.
devscripts/make_changelog.py - Crie um changelog de markdown usando mensagens curtas de commit e atualize o arquivo CONTRIBUTORS .
devscripts/make_lazy_extractors.py - Crie extratores preguiçosos. Executar isso antes de construir os binários (qualquer variante) melhorará seu desempenho de inicialização. Defina a variável de ambiente YTDLP_NO_LAZY_EXTRACTORS como algo não vazio para desabilitar à força o carregamento do extrator lento.
Nota: Veja o --help para mais informações.
Se você bifurcar o projeto no GitHub, poderá executar o fluxo de trabalho de construção do seu fork para compilar automaticamente as versões selecionadas como artefatos. Como alternativa, você pode executar o fluxo de trabalho de lançamento ou ativar o fluxo de trabalho noturno para criar (pré-)lançamentos completos.
yt-dlp [OPTIONS] [--] URL [URL...]
Ctrl+F é seu amigo :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