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
INCORPORAÇÃO DO 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 para desenvolvedores
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
(
) 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 build 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