yt-dlp es un descargador de audio/vídeo de línea de comandos rico en funciones y compatible con miles de sitios. El proyecto es una bifurcación de youtube-dl basada en youtube-dlc ahora inactivo.
INSTALACIÓN
Instrucciones detalladas
Liberar archivos
Actualizar
Dependencias
Compilar
USO Y OPCIONES
Opciones generales
Opciones de red
Restricción geográfica
Selección de vídeos
Opciones de descarga
Opciones del sistema de archivos
Opciones de miniatura
Opciones de acceso directo a Internet
Opciones de detalle y simulación
Soluciones alternativas
Opciones de formato de vídeo
Opciones de subtítulos
Opciones de autenticación
Opciones de posprocesamiento
Opciones de bloqueo de patrocinador
Opciones de extracción
CONFIGURACIÓN
Codificación del archivo de configuración
Autenticación con netrc
Notas sobre variables de entorno
PLANTILLA DE SALIDA
Ejemplos de plantillas de salida
SELECCIÓN DE FORMATO
Formatos de filtrado
Formatos de clasificación
Ejemplos de selección de formato
MODIFICAR METADATOS
Modificación de ejemplos de metadatos
ARGUMENTOS EXTRACTORES
COMPLEMENTOS
Instalación de complementos
Desarrollo de complementos
INTEGRACIÓN DE YT-DLP
Ejemplos de incrustación
CAMBIOS DESDE YOUTUBE-DL
Nuevas características
Diferencias en el comportamiento predeterminado
Opciones obsoletas
CONTRIBUYENDO
Abrir una incidencia
Instrucciones para desarrolladores
wiki
Preguntas frecuentes
Puede instalar yt-dlp usando los binarios, pip o uno usando un administrador de paquetes de terceros. Consulte la wiki para obtener instrucciones detalladas.
Archivo | Descripción |
---|---|
yt-dlp | Binario zipimport independiente de la plataforma. Necesita Python (recomendado para Linux/BSD ) |
yt-dlp.exe | Binario x64 independiente de Windows (Win8+) (recomendado para Windows ) |
yt-dlp_macos | Ejecutable independiente universal de MacOS (10.15+) (recomendado para MacOS ) |
Archivo | Descripción |
---|---|
yt-dlp_x86.exe | Binario x86 (32 bits) independiente de Windows (Win8+) |
yt-dlp_linux | Binario x64 independiente de Linux |
yt-dlp_linux_armv7l | Binario independiente armv7l (32 bits) de Linux |
yt-dlp_linux_aarch64 | Binario independiente aarch64 (64 bits) de Linux |
yt-dlp_win.zip | Ejecutable de Windows sin empaquetar (sin actualización automática) |
yt-dlp_macos.zip | Ejecutable de MacOS (10.15+) sin empaquetar (sin actualización automática) |
yt-dlp_macos_legacy | Ejecutable x64 independiente de MacOS (10.9+) |
Archivo | Descripción |
---|---|
yt-dlp.tar.gz | Archivo tar fuente |
SHA2-512SUMAS | Sumas SHA512 estilo GNU |
SHA2-512SUMS.sig | Archivo de firma GPG para sumas SHA512 |
SHA2-256SUMAS | Sumas SHA256 estilo GNU |
SHA2-256SUMS.sig | Archivo de firma GPG para sumas SHA256 |
La clave pública que se puede utilizar para verificar las firmas GPG está disponible aquí. Ejemplo 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 : Las páginas de manual, los archivos de finalización de shell (autocompletar), etc., están disponibles dentro del archivo tar fuente.
Puede usar yt-dlp -U
para actualizar si está utilizando los archivos binarios de la versión.
Si instaló con pip, simplemente vuelva a ejecutar el mismo comando que se usó para instalar el programa
Para otros administradores de paquetes de terceros, consulte la wiki o consulte su documentación.
Actualmente hay tres canales de lanzamiento para binarios: stable
, nightly
y master
.
stable
es el canal predeterminado y muchos de sus cambios han sido probados por usuarios de los canales nightly
y master
.
El canal nightly
tiene lanzamientos programados para publicarse todos los días alrededor de la medianoche UTC, para obtener una instantánea de los nuevos parches y cambios del proyecto. Este es el canal recomendado para usuarios habituales de yt-dlp. Los lanzamientos nightly
están disponibles en yt-dlp/yt-dlp-nightly-builds o como lanzamientos de desarrollo del paquete PyPI yt-dlp
(que se puede instalar con el indicador --pre
de pip).
El canal master
presenta versiones que se crean después de cada envío a la rama maestra, y tendrán las últimas correcciones y adiciones, pero también pueden ser más propensas a regresiones. Están disponibles en yt-dlp/yt-dlp-master-builds.
Cuando se usa --update
/ -U
, un binario de versión solo se actualizará a su canal actual. --update-to CHANNEL
se puede utilizar para cambiar a un canal diferente cuando hay una versión más nueva disponible. --update-to [CHANNEL@]TAG
también se puede utilizar para actualizar o degradar a etiquetas específicas de un canal.
También puedes usar --update-to
(
) para actualizar a un canal en un repositorio completamente diferente. Sin embargo, tenga cuidado con el repositorio al que está actualizando; no se realiza ninguna verificación para los archivos binarios de diferentes repositorios.
Uso de ejemplo:
yt-dlp --update-to master
cambia al canal master
y actualiza a su última versión
yt-dlp --update-to [email protected]
actualizar/bajar para lanzar a la etiqueta de canal stable
2023.07.06
yt-dlp --update-to 2023.10.07
actualiza/baja a etiqueta 2023.10.07
si existe en el canal actual
yt-dlp --update-to example/[email protected]
actualizar/bajar a la versión desde el repositorio example/yt-dlp
, etiqueta 2023.09.24
Importante : cualquier usuario que experimente un problema con la versión stable
debe instalar o actualizar la versión nightly
antes de enviar un informe de error:
# 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]"
Se admiten las versiones de Python 3.9+ (CPython) y 3.10+ (PyPy). Otras versiones e implementaciones pueden funcionar correctamente o no.
Si bien todas las demás dependencias son opcionales, se recomiendan ffmpeg
y ffprobe
ffmpeg y ffprobe : necesarios para fusionar archivos de vídeo y audio separados, así como para diversas tareas de posprocesamiento. La licencia depende de la construcción.
Hay errores en ffmpeg que causan varios problemas cuando se usa junto con yt-dlp. Dado que ffmpeg es una dependencia tan importante, proporcionamos compilaciones personalizadas con parches para algunos de estos problemas en yt-dlp/FFmpeg-Builds. Consulte el archivo Léame para obtener detalles sobre los problemas específicos resueltos por estas compilaciones.
Importante : lo que necesita es el binario ffmpeg, NO el paquete Python del mismo nombre
certifi *: proporciona el paquete de certificados raíz de Mozilla. Licenciado bajo MPLv2
brotli * o brotlicffi : soporte de codificación de contenido Brotli. Ambos con licencia bajo MIT 1 2
websockets *: para descargar a través de websocket. Licenciado bajo la cláusula BSD-3
solicitudes * - biblioteca HTTP. Para proxy HTTPS y compatibilidad con conexiones persistentes. Licenciado bajo Apache-2.0
Lo siguiente proporciona soporte para suplantar solicitudes del navegador. Esto puede ser necesario para algunos sitios que emplean huellas digitales TLS.
curl_cffi (recomendado): enlace de Python para curl-impersonate. Proporciona objetivos de suplantación para Chrome, Edge y Safari. Con licencia del MIT
Se puede instalar con el grupo curl-cffi
, por ejemplo pip install "yt-dlp[default,curl-cffi]"
Actualmente incluido en las compilaciones yt-dlp.exe
, yt-dlp_linux
y yt-dlp_macos
mutagen * - Para --embed-thumbnail
en ciertos formatos. Licenciado bajo GPLv2+
AtomicParsley : para --embed-thumbnail
en archivos mp4
/ m4a
cuando mutagen
/ ffmpeg
no puede. Licenciado bajo GPLv2+
xattr , pyxattr o setfattr : para escribir metadatos de xattr ( --xattr
) en Mac y BSD . Con licencia MIT, LGPL2.1 y GPLv2+ respectivamente
pycryptodomex *: para descifrar transmisiones AES-128 HLS y varios otros datos. Licenciado bajo la cláusula BSD-2
phantomjs : se utiliza en extractores donde es necesario ejecutar javascript. Licenciado bajo la cláusula BSD-3
secretstorage *: para que --cookies-from-browser
acceda al conjunto de claves de Gnome mientras descifra las cookies de los navegadores basados en Chromium en Linux . Licenciado bajo la cláusula BSD-3
Cualquier descargador externo que quieras usar con --downloader
avconv y avprobe : alternativa ahora obsoleta a ffmpeg. La licencia depende de la construcción.
sponskrub : para utilizar las opciones de sponskrub ahora obsoletas . Licenciado bajo GPLv3+
rtmpdump : para descargar transmisiones rtmp
. ffmpeg se puede utilizar en su lugar con --downloader ffmpeg
. Licenciado bajo GPLv2+
mplayer o mpv : para descargar secuencias rstp
/ mms
. ffmpeg se puede utilizar en su lugar con --downloader ffmpeg
. Licenciado bajo GPLv2+
Para utilizar o redistribuir las dependencias, debe aceptar sus respectivos términos de licencia.
Los binarios de la versión independiente se crean con el intérprete de Python y se incluyen los paquetes marcados con * .
Si no tiene las dependencias necesarias para la tarea que está intentando, yt-dlp le avisará. Todas las dependencias disponibles actualmente son visibles en la parte superior de la salida --verbose
Para compilar el ejecutable independiente, debe tener Python y pyinstaller
(más cualquiera de las dependencias opcionales de yt-dlp si es necesario). El ejecutable se creará para la misma arquitectura de CPU que el Python utilizado.
Puede ejecutar los siguientes comandos:
python3 devscripts/install_deps.py --include pyinstaller python3 devscripts/make_lazy_extractors.py python3 -m bundle.pyinstaller
En algunos sistemas, es posible que necesites usar py
o python
en lugar de python3
.
python -m bundle.pyinstaller
acepta cualquier argumento que se pueda pasar a pyinstaller
, como --onefile/-F
o --onedir/-D
, que se documenta con más detalle aquí.
Nota : Las versiones de Pyinstaller inferiores a 4.4 no admiten Python instalado desde la tienda de Windows sin utilizar un entorno virtual.
Importante : no se admite oficialmente la ejecución pyinstaller
directamente en lugar de usar python -m bundle.pyinstaller
. Esto puede funcionar correctamente o no.
Necesitará las herramientas de compilación python
(3.9+), zip
, make
(GNU), pandoc
* y pytest
*.
Después de instalarlos, simplemente ejecute make
.
También puede ejecutar make yt-dlp
para compilar solo el binario sin actualizar ninguno de los archivos adicionales. (Las herramientas de construcción marcadas con * no son necesarias para esto)
devscripts/install_deps.py
: instala dependencias para yt-dlp.
devscripts/update-version.py
: actualiza el número de versión según la fecha actual.
devscripts/set-variant.py
: establece la variante de compilación del ejecutable.
devscripts/make_changelog.py
: cree un registro de cambios de rebajas utilizando mensajes de confirmación cortos y actualice el archivo CONTRIBUTORS
.
devscripts/make_lazy_extractors.py
: crea extractores diferidos. Ejecutar esto antes de compilar los binarios (cualquier variante) mejorará su rendimiento de inicio. Establezca la variable de entorno YTDLP_NO_LAZY_EXTRACTORS
en algo que no esté vacío para deshabilitar por la fuerza la carga diferida del extractor.
Nota: consulte su --help
para obtener más información.
Si bifurca el proyecto en GitHub, puede ejecutar el flujo de trabajo de compilación de su bifurcación para compilar automáticamente las versiones seleccionadas como artefactos. Alternativamente, puede ejecutar el flujo de trabajo de lanzamiento o habilitar el flujo de trabajo nocturno para crear (pre)lanzamientos completos.
yt-dlp [OPTIONS] [--] URL [URL...]
Ctrl+F
es tu 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