Anda di halaman 1dari 43

Cómo descargar vídeos de

YouTube, Facebook y otros


sitios usando la terminal en
Windows, Linux o Mac

Existen muchas razones por las que alguien querría descargas los
vídeos que se consigue en Internet y existen muchísimos métodos
que funcionan. Antes les hemos contado más de una decena
de formas de bajar vídeos de YouTube, o de algunos trucos
para descargar los vídeos de Facebook.
Sin embargo, esta forma es definitivamente más "cool" y funciona en
casi todos lados. Además, es extremadamente simple a pesar de que
para muchos la palabra "terminal" no combine con facilidad. Gracias
a youtube-dl, un simple programa para la linea de comandos,
puedes descargar vídeos desde decenas de sitios web, incluyendo
páginas como Pornhub.

Aunque su nombre parecería indicar que está hecho para bajar vídeos
de YouTube, la lista de sitios soportados por esta herramienta es muy
larga y abarca desde webs de noticias, televisión en Internet,
entretenimiento, redes sociales, música, deportes y hasta porno.

Instalación y uso (Windows, Linux,


macOS)
En Windows descarga este ejecutable y déjalo en cualquier carpeta
que no sea C:\Windows\System32. Solo debes recordar que la carpeta
donde bajes ese ejecutable debe ser la misma donde vas a descargar
los vídeos.

Ejecuta el .exe, en Windows 10 puede que el filtro bloquee la


instalación, así que deberás confiar en el programa haciendo click en
"Más información" y ejecutar de todos modos. Mi recomendación es
guardarlo en tu carpeta personal, la que tiene tu nombre de usuario,
pues suele ser la ubicación por defecto en el símbolo del sistema y así
tienes que trabajar menos.

Una vez ejecutado, no pasa mucho, solo se abre y cierra una ventana
de la terminal. Haz click en el botón de inicio y escribe "Símbolo del
sistema" para abrir la terminal de Windows y lo siguiente es
simplemente escribir:
youtube-dl URL
Es decir, solo el comando youtube-dl seguido de la dirección del vídeo
que quieres bajar y listo.

En macOS es aún más simple. Solo tienes que abrir la terminal y pegar
los siguientes comandos:
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o
/usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

Una vez hecho esto ya puedes usar el comando youtube-dl para


descargar cualquier vídeo.

En Linux puedes usar wget para instalar el programa, solo tienes que
escribir dos comandos en la terminal:
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O
/usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

Descarga en múltiples formatos,


subtítulos y hasta listas de
reproducción
Youtube-dl tiene muchos comandos útiles para no solo bajar el
archivo MP4 de un vídeo en pocos segundos, sino que puedes hacer
cosas como bajar todos los formatos disponibles de un mismo vídeo
usando el comando --all-formats.

También puedes hacer cosas como escribir subtítulos en el archivo de


forma automática usando --write-sub o --write-auto-sub. O, descargar
también todos los subtítulos disponibles para el vídeo usando --
all-subs.

Puedes ver la enorme lista de opciones en la página de youtube-dl


en GitHub.

En Genbeta | Especial para los más nerds, cómo mirar los partidos del
mundial de Rusia directamente desde la terminal

youtube-dl: descarga videos de youtube.com u otras plataformas de video

 INSTALACIÓN
 DESCRIPCIÓN
 OPCIONES
 CONFIGURACIÓN
 PLANTILLA DE SALIDA
 SELECCIÓN DE FORMATO
 SELECCIÓN DE VÍDEO
 Preguntas más frecuentes
 INSTRUCCIONES PARA EL DESARROLLADOR
 EMBEDDING YOUTUBE-DL
 LOCO
 DERECHOS DE AUTOR

INSTALACIÓN

Para instalarlo de inmediato para todos los usuarios de UNIX (Linux, OS X, etc.),
escriba:

sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o


/usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
Si no tienes curl, alternativamente puedes usar un wget reciente:

sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O


/usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
Los usuarios de Windows pueden descargar un archivo .exe y colocarlo en cualquier
ubicación de su PATH, excepto %SYSTEMROOT%\System32(por ej., No
lo coloque C:\Windows\System32).
También puedes usar pip:

sudo -H pip install --upgrade youtube-dl


Este comando actualizará youtube-dl si ya lo ha instalado. Vea la página de pypi para
más información.

Los usuarios de OS X pueden instalar youtube-dl con Homebrew :

brew install youtube-dl


O con MacPorts :

sudo port install youtube-dl


Alternativamente, refiérase a las instrucciones del desarrollador sobre cómo verificar
y trabajar con el repositorio de git. Para obtener más opciones, incluidas las firmas
de PGP, consulte la página de descarga de youtube-dl .
DESCRIPCIÓN

youtube-dl es un programa de línea de comandos para descargar videos de


YouTube.com y algunos sitios más. Requiere el intérprete de Python, la versión 2.6,
2.7 o 3.2+, y no es específico de la plataforma. Debería funcionar en su caja de Unix,
en Windows o en macOS. Se lanza al dominio público, lo que significa que puede
modificarlo, redistribuirlo o usarlo como lo desee.

youtube-dl [OPTIONS] URL [URL...]

OPCIONES
-h, --help Print this help text and exit
--version Print program version and exit
-U, --update Update this program to latest version. Make
sure that you have sufficient permissions
(run with sudo if needed)
-i, --ignore-errors Continue on download errors, for example to
skip unavailable videos in a playlist
--abort-on-error Abort downloading of further videos (in the
playlist or the command line) if an error
occurs
--dump-user-agent Display the current browser identification
--list-extractors List all supported extractors
--extractor-descriptions Output descriptions of all supported
extractors
--force-generic-extractor Force extraction to use the generic
extractor
--default-search PREFIX Use this prefix for unqualified URLs. For
example "gvsearch2:" downloads two videos
from google videos for youtube-dl "large
apple". Use the value "auto" to let
youtube-dl 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 Do not read configuration files. When given
in the global configuration file
/etc/youtube-dl.conf: Do not read the user
configuration in ~/.config/youtube-
dl/config (%APPDATA%/youtube-dl/config.txt
on Windows)
--config-location PATH Location of the configuration file; either
the path to the config or its containing
directory.
--flat-playlist Do not extract the videos of a playlist,
only list them.
--mark-watched Mark videos watched (YouTube only)
--no-mark-watched Do not mark videos watched (YouTube only)
--no-color Do not emit color codes in output

Opciones de red:
--proxy URL Use the specified HTTP/HTTPS/SOCKS proxy.
To enable SOCKS proxy, specify a proper
scheme. For example
socks5://127.0.0.1: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
-4, --force-ipv4 Make all connections via IPv4
-6, --force-ipv6 Make all connections via IPv6

Restricción geográfica:
--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.
--geo-bypass Bypass geographic restriction via faking
X-Forwarded-For HTTP header
--no-geo-bypass Do not bypass geographic restriction via
faking X-Forwarded-For HTTP header
--geo-bypass-country CODE Force bypass geographic restriction with
explicitly provided two-letter ISO 3166-2
country code
--geo-bypass-ip-block IP_BLOCK Force bypass geographic restriction with
explicitly provided IP block in CIDR
notation

Selección de video:
--playlist-start NUMBER Playlist video to start at (default is 1)
--playlist-end NUMBER Playlist video to end at (default is last)
--playlist-items ITEM_SPEC Playlist video items to download. Specify
indices of the videos in the playlist
separated by commas like: "--playlist-items
1,2,5,8" if you want to download videos
indexed 1, 2, 5, 8 in the playlist. You can
specify range: "--playlist-items
1-3,7,10-13", it will download the videos
at index 1, 2, 3, 7, 10, 11, 12 and 13.
--match-title REGEX Download only matching titles (regex or
caseless sub-string)
--reject-title REGEX Skip download for matching titles (regex or
caseless sub-string)
--max-downloads NUMBER Abort after downloading NUMBER files
--min-filesize SIZE Do not download any videos smaller than
SIZE (e.g. 50k or 44.6m)
--max-filesize SIZE Do not download any videos larger than SIZE
(e.g. 50k or 44.6m)
--date DATE Download only videos uploaded in this date
--datebefore DATE Download only videos uploaded on or before
this date (i.e. inclusive)
--dateafter DATE Download only videos uploaded on or after
this date (i.e. inclusive)
--min-views COUNT Do not download any videos with less than
COUNT views
--max-views COUNT Do not download any videos with more than
COUNT views
--match-filter FILTER Generic video filter. Specify any key (see
the "OUTPUT TEMPLATE" for a list of
available keys) to match if the key is
present, !key to check if the key is not
present, key > NUMBER (like "comment_count
> 12", also works with >=, <, <=, !=, =) to
compare against a number, key = 'LITERAL'
(like "uploader = 'Mike Smith'", also works
with !=) to match against a string literal
and & to require multiple matches. Values
which are not known are excluded unless you
put a question mark (?) after the operator.
For example, to only match videos that have
been liked more than 100 times and disliked
less than 50 times (or the dislike
functionality is not available at the given
service), but who also have a description,
use --match-filter "like_count > 100 &
dislike_count <? 50 & description" .
--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.
--include-ads Download advertisements as well
(experimental)

Opciones de descarga:
-r, --limit-rate RATE Maximum download rate in bytes per second
(e.g. 50K or 4.2M)
-R, --retries RETRIES Number of retries (default is 10), or
"infinite".
--fragment-retries RETRIES Number of retries for a fragment (default
is 10), or "infinite" (DASH, hlsnative and
ISM)
--skip-unavailable-fragments Skip unavailable fragments (DASH, hlsnative
and ISM)
--abort-on-unavailable-fragment Abort downloading when some fragment is not
available
--keep-fragments Keep downloaded fragments on disk after
downloading is finished; fragments are
erased by default
--buffer-size SIZE Size of download buffer (e.g. 1024 or 16K)
(default is 1024)
--no-resize-buffer Do not automatically adjust the buffer
size. By default, the buffer size is
automatically resized from an initial value
of SIZE.
--http-chunk-size SIZE Size of a chunk for chunk-based HTTP
downloading (e.g. 10485760 or 10M) (default
is disabled). May be useful for bypassing
bandwidth throttling imposed by a webserver
(experimental)
--playlist-reverse Download playlist videos in reverse order
--playlist-random Download playlist videos in random order
--xattr-set-filesize Set file xattribute ytdl.filesize with
expected file size
--hls-prefer-native Use the native HLS downloader instead of
ffmpeg
--hls-prefer-ffmpeg Use ffmpeg instead of the native HLS
downloader
--hls-use-mpegts Use the mpegts container for HLS videos,
allowing to play the video while
downloading (some players may not be able
to play it)
--external-downloader COMMAND Use the specified external downloader.
Currently supports
aria2c,avconv,axel,curl,ffmpeg,httpie,wget
--external-downloader-args ARGS Give these arguments to the external
downloader

Opciones del sistema de archivos:


-a, --batch-file FILE File containing URLs to download ('-' for
stdin), one URL per line. Lines starting
with '#', ';' or ']' are considered as
comments and ignored.
--id Use only video ID in file name
-o, --output TEMPLATE Output filename template, see the "OUTPUT
TEMPLATE" for all the info
--autonumber-start NUMBER Specify the start value for %(autonumber)s
(default is 1)
--restrict-filenames Restrict filenames to only ASCII
characters, and avoid "&" and spaces in
filenames
-w, --no-overwrites Do not overwrite files
-c, --continue Force resume of partially downloaded files.
By default, youtube-dl will resume
downloads if possible.
--no-continue Do not resume partially downloaded files
(restart from beginning)
--no-part Do not use .part files - write directly
into output file
--no-mtime Do not use the Last-modified header to set
the file modification time
--write-description Write video description to a .description
file
--write-info-json Write video metadata to a .info.json file
--write-annotations Write video annotations to a
.annotations.xml file
--load-info-json FILE JSON file containing the video information
(created with the "--write-info-json"
option)
--cookies FILE File to read cookies from and dump cookie
jar in
--cache-dir DIR Location in the filesystem where youtube-dl
can store some downloaded information
permanently. By default
$XDG_CACHE_HOME/youtube-dl or
~/.cache/youtube-dl . At the moment, only
YouTube player files (for videos with
obfuscated signatures) are cached, but that
may change.
--no-cache-dir Disable filesystem caching
--rm-cache-dir Delete all filesystem cache files

Miniaturas:
--write-thumbnail Write thumbnail image to disk
--write-all-thumbnails Write all thumbnail image formats to disk
--list-thumbnails Simulate and list all available thumbnail
formats

Verbosidad / Opciones de simulación:


-q, --quiet Activate quiet mode
--no-warnings Ignore warnings
-s, --simulate Do not download the video and do not write
anything to disk
--skip-download Do not download the video
-g, --get-url Simulate, quiet but print URL
-e, --get-title Simulate, quiet but print title
--get-id Simulate, quiet but print id
--get-thumbnail Simulate, quiet but print thumbnail URL
--get-description Simulate, quiet but print video description
--get-duration Simulate, quiet but print video length
--get-filename Simulate, quiet but print output filename
--get-format Simulate, quiet but print output format
-j, --dump-json Simulate, quiet but print JSON information.
See the "OUTPUT TEMPLATE" for a description
of available keys.
-J, --dump-single-json Simulate, quiet but print JSON information
for each command-line argument. If the URL
refers to a playlist, dump the whole
playlist information in a single line.
--print-json Be quiet and print the video information as
JSON (video is still being downloaded).
--newline Output progress bar as new lines
--no-progress Do not print progress bar
--console-title Display progress in console titlebar
-v, --verbose Print various debugging information
--dump-pages Print downloaded pages encoded using base64
to debug problems (very verbose)
--write-pages Write downloaded intermediary pages to
files in the current directory to debug
problems
--print-traffic Display sent and read HTTP traffic
-C, --call-home Contact the youtube-dl server for debugging
--no-call-home Do NOT contact the youtube-dl server for
debugging

Soluciones:
--encoding ENCODING Force the specified encoding (experimental)
--no-check-certificate Suppress HTTPS certificate validation
--prefer-insecure Use an unencrypted connection to retrieve
information about the video. (Currently
supported only for YouTube)
--user-agent UA Specify a custom user agent
--referer URL Specify a custom referer, use if the video
access is restricted to one domain
--add-header FIELD:VALUE Specify a custom HTTP header and its value,
separated by a colon ':'. You can use this
option multiple times
--bidi-workaround Work around terminals that lack
bidirectional text support. Requires bidiv
or fribidi executable in PATH
--sleep-interval SECONDS Number of seconds to sleep before each
download when used alone or a lower bound
of a range for randomized sleep before each
download (minimum possible number of
seconds to sleep) when used along with
--max-sleep-interval.
--max-sleep-interval SECONDS Upper bound of a range for randomized sleep
before each download (maximum possible
number of seconds to sleep). Must only be
used along with --min-sleep-interval.

Opciones de formato de video:


-f, --format FORMAT Video format code, see the "FORMAT
SELECTION" for all the info
--all-formats Download all available video formats
--prefer-free-formats Prefer free video formats unless a specific
one is requested
-F, --list-formats List all available formats of requested
videos
--youtube-skip-dash-manifest Do not download the DASH manifests and
related data on YouTube videos
--merge-output-format FORMAT If a merge is required (e.g.
bestvideo+bestaudio), output to given
container format. One of mkv, mp4, ogg,
webm, flv. Ignored if no merge is required

Opciones de subtítulos:
--write-sub Write subtitle file
--write-auto-sub Write automatically generated subtitle file
(YouTube only)
--all-subs Download all the available subtitles of the
video
--list-subs List all available subtitles for the video
--sub-format FORMAT Subtitle format, accepts formats
preference, for example: "srt" or
"ass/srt/best"
--sub-lang LANGS Languages of the subtitles to download
(optional) separated by commas, use --list-
subs for available language tags

Opciones de autenticación:
-u, --username USERNAME Login with this account ID
-p, --password PASSWORD Account password. If this option is left
out, youtube-dl will ask interactively.
-2, --twofactor TWOFACTOR Two-factor authentication code
-n, --netrc Use .netrc authentication data
--video-password PASSWORD Video password (vimeo, smotri, youku)

Opciones de Adobe Pass:


--ap-mso MSO Adobe Pass multiple-system operator (TV
provider) identifier, use --ap-list-mso for
a list of available MSOs
--ap-username USERNAME Multiple-system operator account login
--ap-password PASSWORD Multiple-system operator account password.
If this option is left out, youtube-dl will
ask interactively.
--ap-list-mso List all supported multiple-system
operators
Opciones de postprocesamiento:
-x, --extract-audio Convert video files to audio-only files
(requires ffmpeg or avconv and ffprobe or
avprobe)
--audio-format FORMAT Specify audio format: "best", "aac",
"flac", "mp3", "m4a", "opus", "vorbis", or
"wav"; "best" by default; No effect without
-x
--audio-quality QUALITY Specify ffmpeg/avconv audio quality, insert
a value between 0 (better) and 9 (worse)
for VBR or a specific bitrate like 128K
(default 5)
--recode-video FORMAT Encode the video to another format if
necessary (currently supported:
mp4|flv|ogg|webm|mkv|avi)
--postprocessor-args ARGS Give these arguments to the postprocessor
-k, --keep-video Keep the video file on disk after the post-
processing; the video is erased by default
--no-post-overwrites Do not overwrite post-processed files; the
post-processed files are overwritten by
default
--embed-subs Embed subtitles in the video (only for mp4,
webm and mkv videos)
--embed-thumbnail Embed thumbnail in the audio as cover art
--add-metadata Write metadata to the video file
--metadata-from-title FORMAT Parse additional metadata like song title /
artist from the video title. The format
syntax is the same as --output. Regular
expression with named capture groups may
also be used. The parsed parameters replace
existing values. Example: --metadata-from-
title "%(artist)s - %(title)s" matches a
title like "Coldplay - Paradise". Example
(regex): --metadata-from-title
"(?P<artist>.+?) - (?P<title>.+)"
--xattrs Write metadata to the video file's xattrs
(using dublin core and xdg standards)
--fixup POLICY Automatically correct known faults of the
file. One of never (do nothing), warn (only
emit a warning), detect_or_warn (the
default; fix file if we can, warn
otherwise)
--prefer-avconv Prefer avconv over ffmpeg for running the
postprocessors
--prefer-ffmpeg Prefer ffmpeg over avconv for running the
postprocessors (default)
--ffmpeg-location PATH Location of the ffmpeg/avconv binary;
either the path to the binary or its
containing directory.
--exec CMD Execute a command on the file after
downloading, similar to find's -exec
syntax. Example: --exec 'adb push {}
/sdcard/Music/ && rm {}'
--convert-subs FORMAT Convert the subtitles to other format
(currently supported: srt|ass|vtt|lrc)

CONFIGURACIÓN

Puede configurar youtube-dl colocando cualquier opción de línea de comando


compatible en un archivo de configuración. En Linux y OS X, el archivo de
configuración del sistema se encuentra en /etc/youtube-dl.confy el archivo de
configuración de usuario en ~/.config/youtube-dl/config. En Windows, las
ubicaciones de archivo de configuración de usuario son %APPDATA%\youtube-
dl\config.txto C:\Users\<user name>\youtube-dl.conf. Tenga en cuenta que, por
defecto, el archivo de configuración puede no existir, por lo que puede necesitar
crearlo usted mismo.
Por ejemplo, con el siguiente archivo de configuración youtube-dl siempre extraerá
el audio, no copiará el mtime, usará un proxy y guardará todos los videos debajo
del Moviesdirectorio en su directorio personal:
# Lines starting with # are comments

# Always extract audio


-x

# Do not copy the mtime


--no-mtime

# Use this proxy


--proxy 127.0.0.1:3128

# Save all videos under Movies directory in your home directory


-o ~/Movies/%(title)s.%(ext)s
Tenga en cuenta que las opciones en el archivo de configuración son sólo las mismas
opciones también conocido como conmutadores utilizados en la línea de comandos
llamadas regulares por lo tanto no debe haber ningún espacio en blancodespués -
o --, por ejemplo, -oo --proxypero no - oo -- proxy.
Puede usarlo --ignore-configsi desea deshabilitar el archivo de configuración para
una ejecución particular de youtube-dl.
También puede usar --config-locationsi desea usar un archivo de configuración
personalizado para una ejecución particular de youtube-dl.
Autenticación con .netrcarchivo
También puede configurar el almacenamiento automático de credenciales para
extractores compatibles con autenticación (proporcionando acceso y contraseña
con --usernamey --password) para no pasar credenciales como argumentos de línea
de comando en cada ejecución de youtube-dl y evitar el seguimiento de contraseñas
de texto plano en el historial de comandos de shell . Puede lograr esto usando
un .netrcarchivo por extractor. Para eso, necesitarás crear un .netrcarchivo en
tu $HOMEy restringir los permisos para leer / escribir solo por ti:
touch $HOME/.netrc
chmod a-rwx,u+rw $HOME/.netrc
Después de eso, puede agregar credenciales para un extractor en el siguiente
formato, donde extractor es el nombre del extractor en minúscula:

machine <extractor> login <login> password <password>


Por ejemplo:

machine youtube login myaccount@gmail.com password my_youtube_password


machine twitch login my_twitch_account_name password my_twitch_password
Para activar la autenticación con el .netrcarchivo, debe pasarlo --netrca youtube-dl
o colocarlo en el archivo de configuración .
En Windows, es posible que también deba configurar la %HOME%variable de entorno
manualmente. Por ejemplo:
set HOME=%USERPROFILE%

PLANTILLA DE SALIDA

La -oopción permite a los usuarios indicar una plantilla para los nombres de los
archivos de salida.
tl; dr: navega por ejemplos .

El uso básico no es establecer ningún argumento de plantilla al descargar un solo


archivo, como en youtube-dl -o funny_video.flv "https://some/video" . Sin embargo,
puede contener secuencias especiales que serán reemplazadas al descargar cada
video. Las secuencias especiales pueden formatearse de acuerdo con las
operaciones de formato de cadena de python . Por
ejemplo, %(NAME)so %(NAME)05d. Para aclarar, es un símbolo de porcentaje seguido de
un nombre entre paréntesis, seguido de una operación de formateo. Los nombres
permitidos junto con el tipo de secuencia son:

 id (cadena): identificador de video


 title (cadena): Título del video
 url (cadena): URL de video
 ext (cadena): extensión de nombre de archivo de video
 alt_title (cadena): un título secundario del video
 display_id (cadena): un identificador alternativo para el video
 uploader (cadena): nombre completo del cargador de videos
 license (cadena): nombre de la licencia que el video tiene licencia bajo
 creator (cadena): El creador del video
 release_date (cadena): la fecha (AAAAMMDD) cuando se lanzó el video
 timestamp (numérico): marca de tiempo UNIX del momento en que el video estuvo
disponible
 upload_date (cadena): fecha de carga de video (AAAAMMDD)
 uploader_id (cadena): Apodo o ID del cargador de videos
 location (cadena): Ubicación física donde se filmó el video
 duration (numérico): duración del video en segundos
 view_count (numérico): cuántos usuarios han visto el video en la plataforma
 like_count (numérico): número de calificaciones positivas del video
 dislike_count (numérico): número de calificaciones negativas del video
 repost_count (numérico): Número de reenvíos del video
 average_rating (numérico): calificación promedio otorgada por los usuarios, la
escala utilizada depende de la página web
 comment_count (numérico): número de comentarios en el video
 age_limit (numérico): restricción de edad para el video (años)
 is_live (booleano): si este video es una transmisión en vivo o un video de duración
fija
 start_time (numérico): tiempo en segundos donde debe comenzar la reproducción,
como se especifica en la URL
 end_time (numérico): tiempo en segundos donde debe finalizar la reproducción,
como se especifica en la URL
 format (cadena): Una descripción legible por humanos del formato
 format_id (cadena): código de formato especificado por --format
 format_note (cadena): Información adicional sobre el formato
 width (numérico): ancho del video
 height (numérico): altura del video
 resolution (cadena): descripción textual de ancho y altura
 tbr (numérico): velocidad de bits promedio de audio y video en KBit / s
 abr (numérico): velocidad de bits de audio promedio en KBit / s
 acodec (cadena): nombre del códec de audio en uso
 asr (numérico): frecuencia de muestreo de audio en hercios
 vbr (numérico): velocidad de bits de video promedio en KBit / s
 fps (numérico): velocidad de fotogramas
 vcodec (cadena): Nombre del códec de video en uso
 container (cadena): nombre del formato del contenedor
 filesize (numérico): el número de bytes, si se conoce de antemano
 filesize_approx (numérico): una estimación del número de bytes
 protocol (cadena): el protocolo que se utilizará para la descarga real
 extractor (cadena): nombre del extractor
 extractor_key (cadena): nombre clave del extractor
 epoch (numérico): época de Unix al crear el archivo
 autonumber (numérico): número de cinco dígitos que se incrementará con cada
descarga, comenzando desde cero
 playlist (cadena): nombre o id. de la lista de reproducción que contiene el video
 playlist_index (numérico): índice del video en la lista de reproducción rellenado
con ceros a la izquierda de acuerdo con la duración total de la lista de reproducción
 playlist_id (cadena): identificador de lista de reproducción
 playlist_title (cadena): Título de la lista de reproducción
 playlist_uploader (cadena): nombre completo del cargador de la lista de
reproducción
 playlist_uploader_id (cadena): Apodo o ID del cargador de la lista de reproducción

Disponible para el video que pertenece a algún capítulo o sección lógica:

 chapter (cadena): nombre o título del capítulo al que pertenece el video


 chapter_number (numérico): Número del capítulo al que pertenece el video
 chapter_id (cadena): Id del capítulo al que pertenece el video

Disponible para el video que es un episodio de alguna serie o programa:

 series (cadena): Título de la serie o programa al que pertenece el episodio de video


 season (cadena): Título de la temporada a la que pertenece el episodio del video
 season_number (numérico): número de la temporada a la que pertenece el episodio
del video
 season_id (cadena): Id de la temporada a la que pertenece el episodio del video
 episode (cadena): Título del episodio de video
 episode_number (numérico): número del episodio de video dentro de una temporada
 episode_id (cadena): Id del episodio de video

Disponible para los medios que son una pista o una parte de un álbum de música:

 track (cadena): Título de la pista


 track_number (numérico): número de la pista dentro de un álbum o un disco
 track_id (cadena): Id de la pista
 artist (cadena): Artista (s) de la pista
 genre (cadena): Género (s) de la pista
 album (cadena): Título del álbum al que pertenece la pista
 album_type (cadena): tipo de álbum
 album_artist (cadena): Lista de todos los artistas que aparecieron en el álbum
 disc_number (numérico): Número del disco u otro medio físico al que pertenece la
pista
 release_year (numérico): año (YYYY) cuando se lanzó el álbum

Cada secuencia antes mencionada cuando se hace referencia en una plantilla de


salida será reemplazada por el valor real correspondiente al nombre de la
secuencia. Tenga en cuenta que algunas de las secuencias no están garantizadas, ya
que dependen de los metadatos obtenidos por un extractor en particular. Tales
secuencias serán reemplazadas por NA.
Por ejemplo, para -o %(title)s-%(id)s.%(ext)sun video mp4 con título youtube-dl
test videoe ID BaW_jenozKcj, esto dará como resultado un youtube-dl test video-
BaW_jenozKcj.mp4archivo creado en el directorio actual.
Para las secuencias numéricas puede usar el formato numérico relacionado, por
ejemplo, %(view_count)05ddará como resultado una cadena con conteo de vista
rellenado con ceros de hasta 5 caracteres, como en 00042.
Las plantillas de salida también pueden contener una ruta jerárquica arbitraria, por
ejemplo, -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s'que dará como
resultado la descarga de cada video en un directorio correspondiente a esta plantilla
de ruta. Cualquier directorio perdido se creará automáticamente para usted.
Para usar literales de porcentaje en una plantilla de salida, use %%. Para dar salida al
uso de stdout -o -.
La plantilla predeterminada actual es %(title)s-%(id)s.%(ext)s.
En algunos casos, no desea caracteres especiales como 中, espacios o &, como
cuando se transfiere el nombre de archivo descargado a un sistema de Windows o
el nombre de archivo a través de un canal de 8 bits no seguro. En estos casos,
agregue la --restrict-filenamesbandera para obtener un título más corto:

Plantilla de salida y archivos por lotes de Windows

Si está utilizando una plantilla de salida dentro de un archivo por lotes de Windows,
debe evitar los caracteres de porcentaje simple ( %) al doblar, por lo que -o
"%(title)s-%(id)s.%(ext)s"debería ser -o "%%(title)s-%%(id)s.%%(ext)s". Sin
embargo no se debe tocar %'s que no son caracteres de fricción, por ejemplo, las
variables de entorno de expansión deben permanecer intactos: -o
"C:\%HOMEPATH%\Desktop\%%(title)s.%%(ext)s".

Ejemplos de plantilla de salida

Tenga en cuenta que en Windows puede necesitar utilizar comillas dobles en lugar
de solteras.

$ youtube-dl --get-filename -o ' % (title) s.% (ext) s ' BaW_jenozKc


youtube-dl test video ' ' _ä↭𝕐.mp4 # Todo tipo de personajes extraños

$ youtube-dl --get-filename -o ' % (title) s.% (ext) s ' BaW_jenozKc --restrict-


filenames
youtube-dl_test_video_.mp4 # Un nombre de archivo simple

# Descargar videos de la lista de reproducción de YouTube en un directorio separado


indexados por orden de video en una lista
de reproducción $ youtube-dl -o ' % (lista de reproducción) s /% (lista de
reproducción_ndex) s -% (título) s.% (Ext) s ' https: // www.youtube.com/playlist
? list = PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re
# Descargue todas las listas de reproducción del canal / usuario de YouTube
manteniendo cada lista de reproducción en un directorio separado:
$ youtube-dl -o ' % (uploader) s /% (lista de reproducción) s /% (playlist_index)
s -% (title) s.% (Ext ) s '
https://www.youtube.com/user/TheLinuxFoundation/playlists

# Descargar curso de Udemy manteniendo cada capítulo en un directorio separado en


el directorio MyVideos de su hogar
$ youtube-dl -u usuario -p contraseña -o ' ~ / MyVideos /% (lista de reproducción)
s /% (número de capítulo) s -% (capítulo) s /%(title)s.%(ext)s '
https://www.udemy.com/java-tutorial/

# Descargar toda la serie de series manteniendo cada serie y cada temporada en un


directorio separado en C: / MyVideos
$ youtube-dl -o " C: / MyVideos /% (series) s /% (season_number) s -% (season) s
/% (episode_number) s -% (episode) s.% (ext) s "
https://videomore.ru/kino_v_detalayah/5_sezon/367617

# Transmita el video que se está descargando a stdout


$ youtube-dl -o - BaW_jenozKc

SELECCIÓN DE FORMATO

De forma predeterminada, youtube-dl intenta descargar la mejor calidad disponible,


es decir, si desea obtener la mejor calidad , no necesita pasar ninguna opción
especial, youtube-dl lo adivinará de manera predeterminada .

Pero a veces es posible que desee descargar en un formato diferente, por ejemplo,
cuando tiene una conexión lenta o intermitente. El mecanismo clave para lograr esto
es la llamada selección de formato basada en la cual puede especificar explícitamente
el formato deseado, seleccionar formatos basados en algún criterio o criterio,
prioridad de configuración y mucho más.

La sintaxis general para la selección de formato es --format FORMATo más corta -f


FORMATdonde se FORMATencuentra una expresión de selector , es decir, una expresión
que describe el formato o los formatos que desea descargar.
tl; dr: navega por ejemplos .

El caso más simple es solicitar un formato específico, por ejemplo, con -f 22usted
puede descargar el formato con un código de formato igual a 22. Puede obtener la
lista de códigos de formato disponibles para video particular usando --list-
formatso -F. Tenga en cuenta que estos códigos de formato son específicos del
extractor.
También puede utilizar una extensión de archivo (en la
actualidad 3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webmson compatibles) para descargar el
mejor formato de calidad de un determinado archivo de extensión sirvió como un
solo archivo, por ejemplo, -f webmse descarga el mejor formato de calidad con
la webmextensión sirvió como fila india.
También puede usar nombres especiales para seleccionar formatos particulares de
mayúsculas y minúsculas:

 best: Seleccione el mejor formato de calidad representado por un único archivo con
video y audio.
 worst: Seleccione el formato de peor calidad representado por un solo archivo con
video y audio.
 bestvideo: Seleccione el formato de video de mejor calidad (por ejemplo, video
DASH). Puede no estar disponible.
 worstvideo: Seleccione el formato de video de peor calidad. Puede no estar
disponible.
 bestaudio: Seleccione el formato de audio de mejor calidad. Puede no estar
disponible.
 worstaudio: Seleccione el formato de audio de peor calidad. Puede no estar
disponible.

Por ejemplo, para descargar el formato de video de peor calidad que puede usar -f
worstvideo.
Si desea descargar varios videos y no tienen los mismos formatos disponibles, puede
especificar el orden de preferencia con barras diagonales. Tenga en cuenta que la
barra es izquierda asociativa, es decir, los formatos en el lado izquierdo son
preferidos, por ejemplo -f 22/17/18descargará el formato 22 si está disponible, de
lo contrario descargará el formato 17 si está disponible, de lo contrario descargará
el formato 18 si está disponible, de lo contrario se quejará de que no hay formatos
adecuados para descargar.
Si desea descargar varios formatos del mismo video, use una coma como separador,
por ejemplo -f 22,17,18, descargará estos tres formatos, por supuesto, si están
disponibles. O un ejemplo más sofisticado se combina con la función de
precedencia: -f 136/137/mp4/bestvideo,140/m4a/bestaudio.
También puede filtrar los formatos de video poniendo una condición entre
corchetes, como en -f "best[height=720]"(o -f "[filesize>10M]").
Los siguientes campos meta numéricos se pueden utilizar con las
comparaciones <, <=, >, >=, =(igual), !=(no igual):

 filesize: La cantidad de bytes, si se conoce de antemano


 width: Ancho del video, si se conoce
 height: Altura del video, si se conoce
 tbr: Velocidad de bits promedio de audio y video en KBit / s
 abr: Velocidad de bits de audio promedio en KBit / s
 vbr: Velocidad de bits de video promedio en KBit / s
 asr: Tasa de muestreo de audio en hercios
 fps: Cuadros por segundo

También se filtra el trabajo para las comparaciones =(iguales), !=(no


iguales), ^=(comienza con), $=(termina con), *=(contiene) y los siguientes
metacampos de cadenas:

 ext: Extensión de archivo


 acodec: Nombre del códec de audio en uso
 vcodec: Nombre del códec de video en uso
 container: Nombre del formato del contenedor
 protocol: El protocolo que se utiliza para la descarga real, minúscula
( http, https, rtsp, rtmp, rtmpe, mms, f4m, ism, http_dash_segments, m3u8,
o m3u8_native)
 format_id: Una breve descripción del formato

Tenga en cuenta que ninguno de los campos meta mencionados anteriormente está
garantizado, ya que esto solo depende de los metadatos obtenidos por un extractor
particular, es decir, los metadatos ofrecidos por el videoportero.

Los formatos para los que no se conoce el valor se excluyen a menos que coloque
un signo de interrogación ( ?) después del operador. Puede combinar filtros de
formato, por lo que -f "[height <=? 720][tbr>500]"selecciona videos de hasta 720p
(o videos cuya altura no se conoce) con una tasa de bits de al menos 500 KBit / s.
Puede fusionar el video y el audio de dos formatos en un solo archivo usando -f
<video-format>+<audio-format>(requiere ffmpeg o avconv instalado), por ejemplo -f
bestvideo+bestaudio, descargará el mejor formato de solo video, el mejor formato de
solo audio y lo mezclará junto con ffmpeg / avconv.
Los selectores de formato también se pueden agrupar utilizando paréntesis, por
ejemplo, si desea descargar los mejores formatos mp4 y webm con una altura inferior
a 480 que puede usar -f '(mp4,webm)[height<480]'.
Desde finales de abril de 2015 y la versión 2015.04.26, youtube-dl utiliza -f
bestvideo+bestaudio/bestcomo la selección de formato predeterminada (ver #
5447 , # 5456 ). Si ffmpeg o avconv están instalados, esto resulta en la
descarga bestvideoy por bestaudioseparado y multiplicándolos en un único archivo,
lo que proporciona la mejor calidad general disponible. De lo contrario, recae besty
resulta en la descarga de la mejor calidad disponible que se sirve como un solo
archivo. besttambién es necesario para videos que no provienen de YouTube porque
no proporcionan el audio y el video en dos archivos diferentes. Si solo desea
descargar algunos formatos DASH (por ejemplo, si no está interesado en obtener
videos con una resolución superior a 1080p), puede agregar -f
bestvideo[height<=?1080]+bestaudio/besta su archivo de configuración. Tenga en
cuenta que si usa youtube-dl para transmitir stdout(y más probablemente para
canalizarlo a su reproductor multimedia), es decir, especifica explícitamente la
plantilla de salida -o -, youtube-dl todavía usa la -f bestselección de formato para
comenzar la entrega inmediata de contenido a su reproductor y no esperar
hasta bestvideoy bestaudiose descargan y multiplexado.
Si desea conservar el antiguo comportamiento de selección de formato (anterior a
youtube-dl 2015.04.26), es decir, desea descargar los mejores medios de calidad
disponibles que se sirven como un solo archivo, debe especificar su elección
explícitamente -f best. Es posible que desee agregarlo al archivo de
configuración para no escribirlo cada vez que ejecute youtube-dl.

Ejemplos de selección de formato

Tenga en cuenta que en Windows puede necesitar utilizar comillas dobles en lugar
de solteras.

# Descargar el mejor formato mp4 disponible o cualquier otro mejor si no hay mp4
disponible
$ youtube-dl -f ' bestvideo [ext = mp4] + bestaudio [ext = m4a] / mejor [ext =
mp4] / mejor '

# Descargue el mejor formato disponible pero no mejor que 480p


$ youtube-dl -f ' bestvideo [altura <= 480] + bestaudio / mejor [altura <= 480] '

# Descargar el mejor formato de video solamente pero no más grande que 50 MB


$ youtube-dl -f ' best [filesize <50M] '

# Descargar el mejor formato disponible a través del enlace directo a través del
protocolo HTTP / HTTPS
$ youtube-dl -f ' (bestvideo + bestaudio / best) [protocolo ^ = http] '

# Descargue el mejor formato de video y el mejor formato de audio sin fusionarlos


$ youtube-dl -f ' bestvideo, bestaudio ' -o ' % (título) sf% (formato_id) s.%
(Ext) s '
Tenga en cuenta que en el último ejemplo, se recomienda una plantilla de salida
como mejor video y bestaudio puede tener el mismo nombre de archivo.

SELECCIÓN DE VÍDEO

Los videos se pueden filtrar por su fecha de carga usando las opciones --date, --
datebeforeo --dateafter. Aceptan fechas en dos formatos:

 Fechas absolutas: Fechas en el formato YYYYMMDD.


 Fechas relativas: Fechas en el formato (now|today)[+-][0-
9](day|week|month|year)(s)?

Ejemplos:

# Descargar solo los videos cargados en los últimos 6 meses


$ youtube-dl --dateafter now-6months

# Descarga solo los videos subidos el 1 de enero de 1970


$ youtube-dl --date 19700101

$ # Descargar solo los videos subidos en la década de 200x


$ youtube-dl --dateafter 20000101 --dateantes de 20091231

Preguntas más frecuentes

¿Cómo actualizo youtube-dl?

Si ha seguido nuestras instrucciones de instalación manual , simplemente puede


ejecutar youtube-dl -U(o, en Linux, sudo youtube-dl -U).
Si usó pip, basta con un simple sudo pip install -U youtube-dlpara actualizar.
Si ha instalado youtube-dl usando un administrador de paquetes como apt-
get o yum , use el mecanismo de actualización del sistema estándar para
actualizar. Tenga en cuenta que los paquetes de distribución a menudo están
desactualizados. Como regla general, youtube-dl publica al menos una vez al mes, y
a menudo semanalmente o incluso a diario. Simplemente vaya a https://yt-
dl.org para conocer la versión actual. Desafortunadamente, no hay nada que los
desarrolladores de youtube-dl puedan hacer si su distribución cumple una versión
realmente desactualizada. Puede (y debe) quejarse a su distribución en su rastreador
de errores o foro de soporte.

Como último recurso, también puede desinstalar la versión instalada por su


administrador de paquetes y seguir nuestras instrucciones de instalación
manual. Para eso, elimine el paquete de la distribución, con una línea como

sudo apt-get remove -y youtube-dl


Luego, simplemente siga nuestras instrucciones de instalación manual :

sudo wget https://yt-dl.org/latest/youtube-dl -O /usr/local/bin/youtube-dl


sudo chmod a+x /usr/local/bin/youtube-dl
hash -r
De nuevo, a partir de ese momento podrás actualizar con sudo youtube-dl -U.
youtube-dl es extremadamente lento para iniciarse en Windows

Agregue una exclusión de archivo para youtube-dl.exeen la configuración de


Windows Defender.
Me aparece un error Unable to extract OpenGraph title en las listas de
reproducción de YouTube
YouTube cambió su formato de lista de reproducción en marzo de 2014 y más
adelante, por lo que necesitará al menos youtube-dl 2014.07.25 para descargar
todos los videos de YouTube.

Si ha instalado youtube-dl con un administrador de paquetes, pip, setup.py o un


tarball, utilícelo para actualizar. Tenga en cuenta que los paquetes de Ubuntu ya no
parecen actualizarse. Como no estamos afiliados a Ubuntu, podemos hacer muy
poco. No dude en informar de errores a las personas que empacan Ubuntu , todo lo
que tienen que hacer es actualizar el paquete a una versión más reciente. Vea arriba
para una forma de actualizar.

Me aparece un error al intentar usar la plantilla de salida: error: using


output template conflicts with using title, video ID or auto number
Asegúrese de que no está utilizando -ocon cualquiera de estas opciones -t, --
title, --id, -Ao --auto-numberestablecer en la línea de comandos o en un archivo de
configuración. Eliminar el último si hay alguno.
¿Siempre tengo que pasar -citw?
De manera predeterminada, youtube-dl intenta tener las mejores opciones (por
cierto, si tiene un caso convincente de que estos deberían ser diferentes, presente
un problema donde lo explique ). Por lo tanto, es innecesario y a veces dañino copiar
cadenas de opciones largas desde páginas web. En particular, la única opción fuera
de -citweso es regularmente útil -i.
¿Puedes -bdevolver la opción?
La mayoría de las personas que hacen esta pregunta no son conscientes de que
youtube-dl ahora está predeterminado para descargar la calidad más alta disponible
según lo informado por YouTube, que será 1080p o 720p en algunos casos, por lo
que ya no necesita la -bopción. Para algunos videos específicos, tal vez YouTube no
los informe para que estén disponibles en un formato específico de alta calidad que
le interese. En ese caso, simplemente solicítelo con la -fopción y youtube-dl
intentará descargarlo.
Recibo el error HTTP 402 al intentar descargar un video. ¿Qué es
esto?

Aparentemente YouTube requiere que apruebes una prueba CAPTCHA si descargas


demasiado. Estamos considerando proporcionar una forma de permitirle resolver el
CAPTCHA , pero por el momento, lo mejor que puede hacer es apuntar un navegador
web a la URL de youtube, resolver el CAPTCHA y reiniciar youtube-dl.

¿Necesito algún otro programa?

youtube-dl funciona bien por sí solo en la mayoría de los sitios. Sin embargo, si desea
convertir video / audio, necesitará avconv o ffmpeg . En algunos sitios, sobre todo
YouTube, los videos se pueden recuperar en un formato de mayor calidad sin
sonido. youtube-dl detectará si avconv / ffmpeg está presente y elegirá
automáticamente la mejor opción.

Los videos o formatos de video que se transmiten a través del protocolo RTMP solo
se pueden descargar cuando rtmpdumpestá instalado. La descarga de videos MMS
y RTSP requiere la instalación de mplayer o mpv .

He descargado un video, pero ¿cómo puedo jugarlo?

Una vez que el video esté completamente descargado, use cualquier reproductor de
video, como mpv , vlc o mplayer .

Extraje una URL de video con -g, pero no se reproduce en otra


máquina / en mi navegador web.
Depende mucho del servicio. En muchos casos, las solicitudes del video (para
descargarlo / reproducirlo) deben provenir de la misma dirección IP y con las mismas
cookies y / o encabezados HTTP. Use la --cookiesopción para escribir las cookies
requeridas en un archivo, e indique a su descargador que lea las cookies de ese
archivo. Algunos sitios también requieren el uso de un agente de usuario común;
utilícelo --dump-user-agentpara ver el que usa youtube-dl. También puede obtener
las cookies necesarias y los encabezados HTTP de la salida JSON obtenida con --
dump-json.
Puede ser beneficioso usar IPv6; en algunos casos, las restricciones solo se aplican a
IPv4. Algunos servicios (a veces solo para un subconjunto de videos) no restringen
la URL del video por dirección IP, cookie o agente de usuario, pero estas son la
excepción en lugar de la regla.
Tenga en cuenta que algunos navegadores no son compatibles con algunos
protocolos de URL , incluido RTMP. Si está utilizando -g, su propio programa de
descarga debe admitir estos también.
Si desea reproducir el video en una máquina que no está funcionando youtube-dl,
puede retransmitir el contenido de video desde la máquina que ejecuta youtube-
dl. Puede usarlo -o -para permitir que youtube-dl transmita un video a stdout, o
simplemente permita que el reproductor descargue los archivos escritos por
youtube-dl a su vez.

ERROR: no se encontró fmt_url_map o información de conexión en


la información del video

YouTube cambió a un nuevo formato de información de video en julio de 2011, que


no es compatible con las versiones anteriores de youtube-dl. Vea arriba para saber
cómo actualizar youtube-dl.

ERROR: no se puede descargar el video

YouTube requiere una firma adicional desde septiembre de 2012 que no es


compatible con las versiones anteriores de youtube-dl. Vea arriba para saber cómo
actualizar youtube-dl.

La URL de video contiene un símbolo y obtengo un resultado


extraño [1] 2839o'v' is not recognized as an internal or external command
Esa es realmente la salida de tu caparazón. Dado que el símbolo comercial es uno
de los caracteres especiales del intérprete de comandos, el intérprete de comandos
lo interpreta impidiéndote pasar toda la URL a youtube-dl. Para deshabilitar su
caparazón de la interpretación de los signos y símbolos (o cualquier otro carácter
especial), tiene que poner toda la URL entre comillas o escapar de ellas con una barra
diagonal inversa (cuyo enfoque funcionará depende de su caparazón).

Por ejemplo, si su URL es https://www.youtube.com/watch?t=4&v=BaW_jenozKc ,


debe terminar con el siguiente comando:

youtube-dl 'https://www.youtube.com/watch?t=4&v=BaW_jenozKc'
o

youtube-dl https://www.youtube.com/watch?t=4\&v=BaW_jenozKc
Para Windows, debe usar las comillas dobles:

youtube-dl "https://www.youtube.com/watch?t=4&v=BaW_jenozKc"
ExtractorError: no se pudo encontrar la función JS u'OF '

En febrero de 2015, el nuevo reproductor de YouTube contenía una secuencia de


caracteres en una cadena que fue malinterpretada por versiones antiguas de
youtube-dl. Vea arriba para saber cómo actualizar youtube-dl.

Error HTTP 429: Demasiadas solicitudes o 402: se requiere pago

Estos dos códigos de error indican que el servicio está bloqueando su dirección IP
debido al uso excesivo. Póngase en contacto con el servicio y solicite que
desbloqueen su dirección IP o, si ya adquirió una dirección IP incluida en la lista
blanca, use las opciones --proxyo--source-address para seleccionar otra dirección IP.

SyntaxError: carácter no ASCII

El error

File "youtube-dl", line 2


SyntaxError: Non-ASCII character '\x93' ...
significa que estás usando una versión obsoleta de Python. Actualice a Python 2.6 o
2.7.

¿Qué es este archivo binario? ¿Dónde se ha ido el código?

Desde junio de 2012 (n . ° 342 ) youtube-dl está empaquetado como un archivo zip
ejecutable, simplemente descomprímalo (puede ser necesario renombrarlo youtube-
dl.zipprimero en algunos sistemas) o clone el repositorio de git, como se describe
arriba. Si modifica el código, puede ejecutarlo ejecutando el __main__.pyarchivo. Para
recompilar el ejecutable, ejecuta make youtube-dl.
El exe arroja un error debido a la falta MSVCR100.dll
Para ejecutar el archivo ejecutable, primero debe instalar el paquete redistribuible
de Microsoft Visual C ++ 2010 (x86) .

En Windows, ¿cómo debería configurar ffmpeg y youtube-


dl? ¿Dónde debería poner los archivos exe?

Si coloca youtube-dl y ffmpeg en el mismo directorio desde el que está ejecutando


el comando, funcionará, pero eso es bastante engorroso.
Para hacer que un directorio diferente funcione, ya sea para ffmpeg, o para youtube-
dl, o para ambos, simplemente cree el directorio (por ejemplo C:\bin,
o C:\Users\<User name>\bin), ponga todos los ejecutables directamente allí y
luego configure su variable de entorno PATH para incluir esa directorio.
A partir de ese momento, después de reiniciar su caparazón, podrá acceder a
youtube-dl y ffmpeg (y youtube-dl podrá encontrar ffmpeg) simplemente
escribiendo youtube-dlo ffmpeg, independientemente del directorio en el que se
encuentre.

¿Cómo coloco las descargas en una carpeta específica?

Utilice -opara especificar una plantilla de salida , por ejemplo -o


"/home/user/videos/%(title)s-%(id)s.%(ext)s". Si desea esto para todas sus
descargas, coloque la opción en su archivo de configuración .
¿Cómo descargo un video que comienza con un -?
Ya sea anteponer https://www.youtube.com/watch?v= o separar el ID de las opciones
con --:
youtube-dl -- -wNyEUrxzFU
youtube-dl "https://www.youtube.com/watch?v=-wNyEUrxzFU"

¿Cómo paso las cookies a youtube-dl?

Use la --cookiesopción, por ejemplo --cookies /path/to/cookies/file.txt .


Para extraer las cookies del navegador, use cualquier extensión de navegador
conforme para exportar cookies. Por ejemplo, cookies.txt (para Chrome) o Export
Cookies (para Firefox).

Tenga en cuenta que el archivo de cookies debe estar en formato Mozilla / Netscape
y la primera línea del archivo de cookies debe ser # HTTP Cookie Fileo # Netscape
HTTP Cookie File. Asegúrese de tener el formato correcto de nueva línea en el
archivo cookies y conviértalas si es necesario para que se correspondan con su SO,
concretamente CRLF( \r\n) para Windows y LF( \n) para sistemas Unix y Unix (Linux,
macOS, etc.). HTTP Error 400: Bad Requestcuando se usa --cookieses una buena señal
de formato inválido de nueva línea.
Pasar cookies a youtube-dl es una buena forma de iniciar sesión cuando un extractor
particular no lo implementa explícitamente. Otro caso de uso está funcionando
alrededor de CAPTCHA que algunos sitios web requieren que resuelva en casos
particulares para obtener acceso (por ejemplo, YouTube, CloudFlare).
¿Cómo puedo transmitir directamente a un reproductor
multimedia?

Primero tendrá que decirle a youtube-dl que transmita medios a la salida -o -


estándar, y también decirle a su reproductor de medios que lea desde stdin (debe
ser capaz de esto para la transmisión) y luego canalizar de la forma anterior a la
última. Por ejemplo, la transmisión a vlc se puede lograr con:
youtube-dl -o - "https://www.youtube.com/watch?v=BaW_jenozKcj" | vlc -

¿Cómo descargo solo videos nuevos de una lista de reproducción?

Utilice la función de descarga y archivo. Con esta característica, primero debes


descargar la lista de reproducción completa con la --download-archive
/path/to/download/archive/file.txtque se registrarán los identificadores de todos
los videos en un archivo especial. Cada ejecución posterior con la misma --download-
archivedescargará solo videos nuevos y omitirá todos los videos que se hayan
descargado anteriormente. Tenga en cuenta que solo las descargas exitosas se
registran en el archivo.
Por ejemplo, al principio,

youtube-dl --download-archive archive.txt


"https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"
descargará la PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7relista de reproducción completa y
creará un archivo archive.txt. Cada ejecución posterior solo descargará videos
nuevos si los hubiera:
youtube-dl --download-archive archive.txt
"https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"
¿Debo agregar --hls-prefer-nativea mi configuración?
Cuando youtube-dl detecta un video HLS, puede descargarlo con el descargador
incorporado o ffmpeg. Dado que muchas secuencias de HLS son ligeramente
inválidas y ffmpeg / youtube-dl manejan cada una de las cajas inválidas mejor que
la otra, existe la opción de cambiar el programa de descarga si es necesario.

Cuando youtube-dl sabe que un descargador en particular funciona mejor para un


sitio web determinado, ese descargador será elegido. De lo contrario, youtube-dl
elegirá el mejor programa de descarga para la compatibilidad general, que en este
momento es ffmpeg. Esta opción puede cambiar en versiones futuras de youtube-
dl, con mejoras del descargador incorporado y / o ffmpeg.

En particular, el extractor genérico (que se usa cuando su sitio web no está en la lista
de sitios compatibles de youtube-dl no puede ordenar un descargador específico).
Si coloca alguno --hls-prefer-nativeo --hls-prefer-ffmpegen su configuración, un
subconjunto diferente de videos no se descargará correctamente. En cambio, es
mucho mejor presentar un problema o una solicitud de extracción que detalla por
qué el descargador HLS nativo o ffmpeg es una mejor opción para su caso de uso.

¿Puedes agregar soporte para este sitio de videos anime, o sitio que
muestra películas actuales de forma gratuita?

Como una cuestión de política (así como de legalidad), youtube-dl no incluye


soporte para servicios que se especializan en infringir derechos de autor. Como regla
general, si no puede encontrar fácilmente un video que el servicio está obviamente
permitido distribuir (es decir, que ha sido cargado por el creador, el distribuidor del
creador o publicado bajo una licencia gratuita), el servicio probablemente no sea
apto para incluir en youtube-dl.

Una nota sobre el servicio de que no alojan el contenido infractor, sino solo un enlace
a quienes lo hacen, es evidencia de que el servicio no debe incluirse en youtube-
dl. Lo mismo ocurre con cualquier nota de DMCA cuando toda la página de inicio
del servicio está llena de videos que no pueden distribuir. Una nota de "uso justo"
tampoco es convincente si el servicio muestra videos protegidos por derechos de
autor completos sin autorización.

Las solicitudes de soporte para servicios que no compran los derechos para distribuir
sus contenidos están perfectamente bien sin embargo. En caso de duda,
simplemente puede incluir una fuente que mencione la compra legítima de
contenido.

¿Cómo puedo acelerar el trabajo en mi problema?

(También conocido como: ¡Ayuda, mi problema importante no está resuelto!) El


equipo desarrollador de youtube-dl es bastante pequeño. Si bien hacemos nuestro
mejor esfuerzo para resolver la mayor cantidad de problemas posible, a veces puede
llevar bastante tiempo. Para acelerar su problema, esto es lo que puede hacer:

En primer lugar, informe el problema en nuestro rastreador de problemas . Eso nos


permite coordinar todos los esfuerzos de los usuarios y desarrolladores, y sirve como
un punto unificado. Desafortunadamente, el proyecto youtube-dl ha crecido
demasiado para utilizar el correo electrónico personal como un canal de
comunicación efectivo.
Por favor, lea las instrucciones de informes de errores a continuación. Muchos
errores carecen de toda la información necesaria. Si puede, ofrezca proxy, VPN o
acceso shell a los desarrolladores de youtube-dl. Si puede, pruebe el problema
desde múltiples computadoras en varios países para excluir la censura local o
problemas de mala configuración.

Si a nadie le interesa resolver su problema, puede encargarse del asunto y presentar


una solicitud de extracción (o coaccionar / pagarle a otra persona para que lo haga).

Siéntete libre de abordar el problema de vez en cuando escribiendo un pequeño


comentario ("El problema todavía está presente en la versión youtube-dl ... de
Francia, pero está arreglado desde Bélgica"), pero no más de una vez al mes. Por
favor no declare su problema como importanto urgent.

¿Cómo puedo detectar si youtube-dl admite una URL determinada?

Por un lado, eche un vistazo a la lista de sitios compatibles . Tenga en cuenta que a
veces puede suceder que el sitio cambie su esquema de URL (por ejemplo,
de https://example.com/video/1234567 a https://example.com/v/1234567 ) y
youtube-dl informa una URL de un servicio en esa lista como no soportado. En ese
caso, simplemente informe un error.

Es que no es posible detectar si una URL es compatible o no. Eso es porque youtube-
dl contiene un extractor genérico que coincide con todas las URL. Puede sentirse
tentado a desactivar, excluir o eliminar el extractor genérico, pero el extractor
genérico no solo permite a los usuarios extraer videos de muchos sitios web que
incorporan un video de otro servicio, sino que también se puede usar para extraer
video de un servicio que se está hospedando a sí mismo. Por lo tanto, no
recomendamos ni admitimos la desactivación, exclusión o eliminación del extractor
genérico.

Si desea saber si una URL determinada es compatible, simplemente llame a youtube-


dl con ella. Si no recuperas los videos, es probable que la URL no se refiera a un video
o no sea compatible. Puede averiguar cuál examinando la salida (si ejecuta youtube-
dl en la consola) o capturando una UnsupportedErrorexcepción si la ejecuta desde un
programa de Python.
¿Por qué tengo que pasar por tanta burocracia cuando
presento errores?

Antes de tener la plantilla del problema, a pesar de nuestras extensas instrucciones


de informes de errores , aproximadamente el 80% de los informes de problemas que
recibimos eran inútiles, por ejemplo porque las personas usaban versiones antiguas
cientos de versiones antiguas, debido a errores sintácticos simples (no en youtube-
dl pero en general, uso de shell), porque el problema ya se había informado varias
veces antes, porque la gente no leía un mensaje de error, incluso si decía "instale
ffmpeg", porque las personas no mencionaban la URL que intentaban descargar y
muchos problemas más simples y fáciles de evitar, muchos de los cuales no estaban
relacionados con youtube-dl.

youtube-dl es un proyecto de código abierto administrado por muy pocos


voluntarios, por lo que preferimos dedicar tiempo a corregir errores donde estamos
seguros de que no se aplica ninguno de esos problemas simples, y donde podemos
estar razonablemente seguros de poder reproducir el problema sin preguntando al
reportero repetidamente. Como tal, la salida de youtube-dl -v YOUR_URL_HEREes
realmente todo lo que se requiere para archivar un problema. La plantilla de
problemas también le guía a través de algunos pasos básicos que puede realizar,
como verificar que su versión de youtube-dl sea actual.

INSTRUCCIONES PARA EL DESARROLLADOR

La mayoría de los usuarios no necesitan construir youtube-dl y pueden descargar las


compilaciones u obtenerlas de su distribución.

Para ejecutar youtube-dl como desarrollador, tampoco necesita construir


nada. Simplemente ejecuta

python -m youtube_dl
Para ejecutar la prueba, simplemente invoque a su corredor de prueba favorito o
ejecute un archivo de prueba directamente; cualquiera de los siguientes trabajos:

python -m unittest discover


python test/test_download.py
nosetests
Consulte el ítem 6 del nuevo tutorial sobre extractores para saber cómo ejecutar
casos de prueba específicos del extractor.

Si quiere crear una compilación de youtube-dl usted mismo, necesitará


 pitón
 make (solo se admite GNU make)
 Pandoc
 cremallera
 pruebas nasales

Agregar soporte para un nuevo sitio

Si desea agregar soporte para un sitio nuevo, antes que nada asegúrese de que este
sitio no esté dedicado a infringir los derechos de autor . youtube-dl no es
compatible con dichos sitios, por lo que las solicitudes de extracción que agreguen
soporte serán rechazadas .

Después de asegurarse de que este sitio está distribuyendo su contenido legalmente,


puede seguir esta lista rápida (suponiendo que se llame a su servicio yourextractor):

1. Tenedor este repositorio

2. Revisa el código fuente con:

3. git clone git@github.com:YOUR_GITHUB_USERNAME/youtube-dl.git

4. Comience una nueva rama de git con

5. cd youtube-dl
6. git checkout -b yourextractor
7. Comience con esta plantilla simple y guárdela
en youtube_dl/extractor/yourextractor.py:
8. # codificación: utf-8
9. desde __future__ import unicode_literals
10.
11. de .common import InfoExtractor
12.
13.
14. clase YourExtractorIE ( InfoExtractor ):
15. _VALID_URL = r ' https ? : // (?: www \. ) ? yourextractor \. com /
reloj / ( ? P <id> [ 0-9 ] + ) '
16. _test = {
17. ' url ' : ' https://yourextractor.com/watch/42 ' ' md5 ' : ' TODO:
suma md5 de la primeros 10241 bytes del archivo de video (use --test) ',
18. ' info_dict ' : {
19. ' id ' : ' 42 ' ,
20. ' ext ' : ' mp4 ' ,
21. ' título ' : ' Título del video va aquí ' ,
22. ' miniatura ' : r ' re: ^ https ? : // . * \. jpg $ ' ,
23. # TODOmás propiedades, ya sea como:
24. # * Un valor
25. # * suma de comprobación MD5; comience la cadena con md5:
26. # * Una expresión regular; inicia la cadena con re:
27. # * Cualquier tipo de Python (por ejemplo int o float)
28. }
29. }
30.
31. def _real_extract ( self , url ):
32. video_id = self ._match_id (url)
33. página web = self ._download_webpage (url, video_id)
34.
35. # TODO código más va aquí, por ejemplo ...
36. title = self ._html_search_regex ( r ' <h1> ( . +? ) </ H1> ' ,
página web, ' título ' )
37.
38. retorno {
39. ' ID ' : video_id,
40. ' título ' : título,
41. ' Descripción ' : auto ._og_search_description (página web),
42. ' cargador ' : auto ._search_regex ( r ' <div [ ^ > ] + id =
"cargador" [ ^ > ] * > ( [ ^ < ] + ) < ' , página web, 'cargador ', fatal
= False ),
43. # TODO más propiedades (vea youtube_dl / extractor /
common.py)
}
44. Agrega una importación en youtube_dl/extractor/extractors.py.
45. Ejecutar python test/test_download.py
TestDownload.test_YourExtractor. Esto debería fallar al principio, pero puede
volver a ejecutarlo continuamente hasta que haya terminado. Si decide
agregar más de una prueba, a continuación, cambiar el
nombre _TESTde _TESTSy convertirlo en una lista de diccionarios. Las pruebas
serán entonces
nombrados TestDownload.test_YourExtractor, TestDownload.test_YourExtracto
r_1, TestDownload.test_YourExtractor_2 , etc. Tenga en cuenta que las pruebas
con only_matchingllave en dict de prueba no se cuentan en.
46. Eche un vistazo a los youtube_dl/extractor/common.pyposibles métodos de
ayuda y una descripción detallada de lo que su extractor debería y puede
devolver . Agregue pruebas y códigos para todos los que desee.

47. Asegúrese de que su código siga las convenciones de codificación youtube-


dl y verifique el código con flake8 . También asegúrese de que su código
funcione en todas las versiones de Python reclamadas compatibles con
youtube-dl, a saber, 2.6, 2.7 y 3.2+.

48. Cuando pasen las pruebas, agregue los archivos nuevos


y comprométalos e inserte el resultado, como este:

49. $ git add youtube_dl/extractor/extractors.py


50. $ git add youtube_dl/extractor/yourextractor.py
51. $ git commit -m '[yourextractor] Add new extractor'
52. $ git push origin yourextractor

53. Finalmente, crea una solicitud de extracción . Luego lo revisaremos y


fusionaremos.

En cualquier caso, ¡muchas gracias por sus contribuciones!

Convenciones de codificación youtube-dl


Esta sección presenta una guía para escribir código de extractor idiomático, robusto
y a prueba de futuro.

Los extractores son muy frágiles por naturaleza, ya que dependen del diseño de los
datos de origen proporcionados por los proveedores de medios de terceros que
están fuera de su control y este diseño tiende a cambiar. Como implementador
extractor, su tarea no es solo escribir código que extraiga los enlaces multimedia y
los metadatos correctamente, sino también minimizar la dependencia en el diseño
de la fuente e incluso hacer que el código prevea posibles cambios futuros y esté
listo para eso. Esto es importante porque permitirá que el extractor no se rompa en
los cambios de diseño menores manteniendo así las versiones anteriores de
youtube-dl funcionando. Aunque este problema de rotura se soluciona fácilmente al
emitir una nueva versión de youtube-dl con una corrección incorporada, todas las
versiones anteriores se rompen en todos los repositorios y paquetes de distros que
pueden no ser tan rápidos para recuperar la actualización de nosotros. Excusado es
decir que,

Metafields obligatorios y opcionales

Para que la extracción funcione, youtube-dl se basa en metadatos que su extractor


extrae y proporciona a youtube-dl expresado por un diccionario de información o
simplemente información . Solo los siguientes metacampos en el dict de
información se consideran obligatorios para un proceso de extracción exitoso por
youtube-dl:

 id (identificador de medios)
 title (título de los medios)
 url (URL de descarga de medios) o formats

De hecho, solo la última opción es técnicamente obligatoria (es decir, si no puede


averiguar la ubicación de descarga de los medios, la extracción no tiene ningún
sentido). Pero por convención youtube-dl también trata idy titlecomo
obligatorio. Por lo tanto, los metacampos antes mencionados son los datos críticos
que la extracción no tiene ningún sentido y si alguno de ellos no se extrae, entonces
el extractor se considera completamente roto.
Cualquier campo aparte de los anteriores se consideran opcionales . Esto significa
que la extracción debe ser tolerante a situaciones en las que las fuentes para estos
campos pueden no estar disponibles (incluso si están siempre disponibles en el
momento) y a prueba de futuro para no romper la extracción de campos
obligatorios de propósito general.

Ejemplo

Supongamos que tiene algún diccionario fuente metaque ha obtenido como JSON
con solicitud HTTP y tiene una clave summary:
meta = self ._download_json (url, video_id)
Supongamos que en este punto metael diseño es:
{
...
" resumen " : " algún texto de resumen elaborado " ,
...
}
Suponga que desea extraer summaryy ponerlo en el dict de información resultante
como description. Dado que descriptiones un meta campo opcional, debe estar
listo para que esta clave pueda faltar en el metadict, por lo que debe extraerla como
sigue:
description = meta.get ( ' summary ' ) # correcto
y no como:

description = meta [ ' summary ' ] # incorrecto


Este último romperá el proceso de extracción KeyErrorsi summarydesaparece metaen
algún momento posterior, pero con el primer enfoque la extracción continuará con
un descriptionajuste al Noneque está perfectamente bien (recuerde que Nonees
equivalente a la ausencia de datos).
Del mismo modo, debe pasar fatal=Falseal extraer datos opcionales de una página
web con _search_regex, _html_search_regexo métodos similares, por ejemplo:
description = self ._search_regex (
r ' <span [ ^ > ] + id = "título" [ ^ > ] * > ( [ ^ < ] + ) < ' ,
página web, ' descripción ' , fatal = False )
Con el fatalconjunto a Falsesi _search_regexfalla al extraerlo description, emitirá
una advertencia y continuará la extracción.
También puede pasar default=<some fallback value>, por ejemplo:
description = self ._search_regex (
r ' <span [ ^ > ] + id = "título" [ ^ > ] * > ( [ ^ < ] + ) < ' ,
página web, ' descripción ' , predeterminado = Ninguno )
En caso de falla, este código continuará silenciosamente la extracción con
el descriptionajuste a None. Eso es útil para los metacampos que pueden o no estar
presentes.

Proporcionar retrocesos

Al extraer metadatos intente hacerlo desde múltiples fuentes. Por ejemplo,


si titleestá presente en varios lugares, intente extraer al menos algunos de
ellos. Esto lo hace más a prueba de futuro en caso de que algunas de las fuentes no
estén disponibles.

Ejemplo

Diga metadel ejemplo anterior que tiene un titley está a punto de extraerlo. Dado
que titlees un meta campo obligatorio, debe terminar con algo como:
title = meta [ ' title ' ]
Si titledesaparece metaen el futuro debido a algunos cambios en el costado del
hoster, la extracción fallará ya que titlees obligatorio. Eso es esperado.
Supongamos que tiene alguna otra fuente de la que pueda extraer title, por
ejemplo og:titleHTML meta de a webpage. En este caso, puede proporcionar un
escenario alternativo:
title = meta.get ( ' title ' ) o self ._og_search_title (página web)
Este código intentará extraer desde el metaprincipio y, si falla, intentará
extraer og:titledesde a webpage.

Haga las expresiones regulares flexibles

Cuando use expresiones regulares intente escribirlas difusas y flexibles.

Ejemplo

Digamos que necesita extraer titledel siguiente código HTML:


< span style = " position: absolute; left: 910px; width: 90px; float: right; z-
index: 9999; " class = " title " > algún título elegante </ span >
El código para esa tarea debe ser similar a:

title = self ._search_regex (


r ' <span [ ^ > ] + class = "título" [ ^ > ] * > ( [ ^ < ] + ) ' , página
web, ' título ' )
O mejor:

title = self ._search_regex (


r ' <span [ ^ > ] + class = ( [ " \' ] ) title \ 1 [ ^ > ] * > ( ? P <título>
[ ^ < ] + ) ' ,
página web, ' título ' , grupo = ' título ' )
Observe cómo tolera posibles cambios en el stylevalor del atributo o cambie de usar
comillas dobles a solo para el classatributo:
El código definitivamente no debería verse así:

title = self ._search_regex (


r ' <span style = "position: absolute; left: 910px; width: 90px; float:
right; z-index: 9999;" class = "title"> ( . *? ) </ span > ' ,
página web, ' título ' , grupo = ' título ' )

Use funciones de conversión seguras

Ajustar todos los datos numéricos extraídos en funciones seguras


desde utils: int_or_none, float_or_none. Úselos también para conversiones de
cadenas a números.

EMBEDDING YOUTUBE-DL

youtube-dl hace el mejor esfuerzo para ser un buen programa de línea de comandos
y, por lo tanto, debe poder invocarse desde cualquier lenguaje de programación. Si
encuentra algún problema para analizar su resultado, puede crear un informe .

Desde un programa de Python, puede incrustar youtube-dl de una manera más


poderosa, como esta:

desde __future__ import unicode_literals


import youtube_dl

ydl_opts = {}
con youtube_dl.YoutubeDL (ydl_opts) como ydl:
ydl.download ([ ' https://www.youtube.com/watch?v=BaW_jenozKc ' ])
Lo más probable es que quieras usar varias opciones. Para obtener una lista de
opciones disponibles, échale un vistazo youtube_dl/YoutubeDL.py. Para empezar, si
quiere interceptar la salida de youtube-dl, configure un loggerobjeto.
Aquí hay un ejemplo más completo de un programa que genera solo errores (y un
mensaje corto una vez que finaliza la descarga) y descarga / convierte el video a un
archivo mp3:

desde __future__ import unicode_literals


import youtube_dl

clase MyLogger ( objeto ):


def debug ( self , msg ):
pase

def warning ( auto , msg ):


pase

def error ( self , msg ):


print (msg)

def my_hook ( d ):
si d [ ' status ' ] == ' finished ' :
print ( ' Hecho descargando, ahora convirtiendo ... ' )

ydl_opts = {
' format ' : ' bestaudio / best ' ,
' postprocessors ' : [{
' clave ' : ' FFmpegExtractAudio ' ,
' preferredcodec ' : ' mp3 ' ,
' preferredquality ' : ' 192 ' ,
}],
' logger ' : MyLogger (),
' progress_hooks ' : [my_hook],
}
con youtube_dl.YoutubeDL (ydl_opts) como ydl:
ydl.download ([ ' https://www.youtube.com/watch?v=BaW_jenozKc ' ])

LOCO

Los errores y las sugerencias se deben informar en: https://github.com/rg3/youtube-


dl/issues . A menos que se lo solicite o que exista otro motivo pertinente (por
ejemplo, GitHub no acepta el informe de errores), no envíe informes de errores a
través de correo electrónico personal. Para discusiones, únase a nosotros en el canal
de IRC # youtube-dl en freenode ( webchat ).

Incluya la salida completa de youtube-dl cuando se ejecuta con-v , es


decir, agregue -v bandera a su línea de comando , copie todo el resultado y
publíquelo en el cuerpo del problema envuelto en `` `para un mejor formato. Debe
ser similar a esto:
$ youtube-dl -v <your command line>
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v',
u'https://www.youtube.com/watch?v=BaW_jenozKcj']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] youtube-dl version 2015.12.06
[debug] Git HEAD: 135392e
[debug] Python version 2.6.6 - Windows-2003Server-5.2.3790-SP2
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump
2.4
[debug] Proxy map: {}
...
No publique capturas de pantalla de registros detallados; solo texto simple es
aceptable.

La salida (incluidas las primeras líneas) contiene información de depuración


importante. Los problemas sin la salida completa a menudo no son reproducibles y,
por lo tanto, no se resuelven en poco tiempo, si es que lo hacen alguna vez.

Vuelva a leer su problema una vez más para evitar un par de errores comunes (puede
y debe usar esto como una lista de verificación):

¿Es la descripción del problema en sí misma suficiente?

A menudo recibimos informes de problemas que realmente no podemos descifrar. Si


bien en la mayoría de los casos, eventualmente obtenemos la información requerida
después de preguntar varias veces, esto representa un gasto innecesario para
nuestros recursos. Muchos colaboradores, incluido yo mismo, tampoco somos
hablantes nativos, por lo que es posible que le leamos mal algunas partes.

Así que por favor explique qué función está solicitando o qué error quiere que se
solucione. Asegúrate de que sea obvio

 Cuál es el problema
 Cómo podría ser arreglado
 Cómo se vería la solución propuesta

Si su informe es más corto que dos líneas, es casi seguro que faltan algunos de estos,
lo que hace que sea difícil para nosotros responder a él. A menudo somos demasiado
amables para cerrar el problema, pero la información faltante hace que la
interpretación sea poco probable. Como yo mismo, muchas veces me siento
frustrado por estos problemas, ya que la única manera posible de avanzar sobre ellos
es pedir aclaraciones una y otra vez.

Para los informes de errores, esto significa que su informe debe contener
la salida completa de youtube-dl cuando se llama con la -vbandera. El mensaje de
error que obtienes para (la mayoría) de los errores incluso lo dice, pero no creerías
cuántos de nuestros informes de errores no contienen esta información.
Si su servidor tiene múltiples IP o sospecha de censura, agregar --call-homepuede
ser una buena idea para obtener más diagnósticos. Si el error es incorrecto ERROR:
Unable to extract ... y no puede reproducirlo desde varios países, agregue --dump-
pages(advertencia: esto producirá un resultado bastante grande, rediríjalo al
archivo log.txtagregando >log.txt 2>&1a su línea de comandos) o cargue
los .dumparchivos que obtiene cuando agrega --write-pages algo .
Las solicitudes de soporte del sitio deben contener un URL de ejemplo . Un
ejemplo de URL es una URL que quizás desee descargar,
como https://www.youtube.com/watch?v=BaW_jenozKc . Debería haber un obvio video
presente. Excepto en circunstancias muy especiales, la página principal de un servicio
de video (por ejemplo https://www.youtube.com/) no es una URL de ejemplo.

¿Estás usando la última versión?

Antes de informar cualquier problema, escriba youtube-dl -U. Esto debería informar
que estás actualizado. Aproximadamente el 20% de los informes que recibimos ya
están corregidos, pero las personas están usando versiones obsoletas. Esto también
se aplica a las solicitudes de características.

¿El problema ya está documentado?

Asegúrate de que alguien aún no haya abierto el problema que intentas


abrir. Busque en la parte superior de la ventana o explore los Issues de GitHub de
este repositorio. Si hay un problema, siéntase libre de escribir algo como "Esto me
afecta también, con la versión 2015.01.01. Aquí hay más información sobre el tema:
...". Si bien algunos problemas pueden ser antiguos, una nueva publicación en ellos
a menudo estimula una actividad rápida.

¿Por qué las opciones existentes no son suficientes?

Antes de solicitar una nueva característica, eche un vistazo rápido a la lista de


opciones compatibles . ¡Muchas solicitudes de características son para funciones que
ya existen! Por favor, muestre su trabajo en el informe de problemas y detalle cómo
las opciones similares existentes no resuelven su problema.

¿Hay suficiente contexto en tu informe de errores?

La gente quiere resolver problemas, y a menudo piensan que nos hacen un favor al
desglosar sus problemas más grandes (por ejemplo, querer omitir archivos ya
descargados) a una solicitud específica (por ejemplo, solicitando que veamos si el
archivo existe antes de descargar la página de información). Sin embargo, lo que
sucede a menudo es que descomponen el problema en dos pasos: uno simple y uno
imposible (o extremadamente complicado).

Luego se nos presenta una solicitud muy complicada cuando el problema original se
puede resolver mucho más fácilmente, por ejemplo, registrando los ID de video
descargados en un archivo separado. Para evitar esto, debe incluir el contexto mayor
donde no sea obvio. En particular, cada solicitud de funciones que no consiste en
agregar soporte para un nuevo sitio debe contener un escenario de caso de uso que
explique en qué situación sería útil la característica que falta.

¿El problema involucra un problema y solo un problema?

Algunos de nuestros usuarios parecen pensar que existe un límite de problemas que
pueden o deben abrir. No hay límite de problemas que pueden o deben abrir. Si bien
puede parecer atractivo poder incluir todos sus problemas en un solo ticket, eso
significa que alguien que resuelve uno de sus problemas no puede marcar el
problema como cerrado. Por lo general, informar un montón de problemas conduce
a que el ticket persista ya que nadie quiere atacar a ese monstruo, hasta que alguien,
misericordiosamente, divide el problema en múltiples.

En particular, cada problema de solicitud de soporte del sitio solo debe pertenecer
a servicios en un sitio (generalmente bajo un dominio común, pero siempre
utilizando la misma tecnología de back-end). No solicite ayuda para videos de
usuario de vimeo, podcasts de White House y páginas de Google Plus en el mismo
problema. Además, asegúrese de no publicar informes de errores junto con las
solicitudes de características. Como regla general, una solicitud de función no incluye
los resultados de youtube-dl que no están relacionados de manera inmediata con la
función en cuestión. No publique informes de un error de red junto con la solicitud
de un nuevo servicio de video.

¿Alguien va a necesitar la función?

Solo publique características que usted (o un amigo incapacitado con quien puede
hablar personalmente) requieren. No publique funciones porque parecen una buena
idea. Si son realmente útiles, serán solicitados por alguien que los requiera.

¿Es su pregunta sobre youtube-dl?

Puede sonar extraño, pero algunos informes de errores que recibimos no tienen
ninguna relación con youtube-dl y se relacionan con una aplicación diferente, o
incluso del propio reportero. Por favor, asegúrese de que esté usando youtube-dl. Si
está utilizando una interfaz de usuario para youtube-dl, informe el error al
responsable de la aplicación que proporciona la interfaz de usuario. Por otro lado, si
su UI para youtube-dl falla de alguna manera que usted cree que está relacionada
con youtube-dl, por supuesto, continúe e informe el error.

DERECHOS DE AUTOR

youtube-dl es lanzado al dominio público por los titulares de los derechos de autor.

Este archivo README fue escrito originalmente por Daniel Bolton y también se lanzó
al dominio público.

Anda mungkin juga menyukai