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.
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
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
En Genbeta | Especial para los más nerds, cómo mirar los partidos del
mundial de Rusia directamente desde la terminal
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:
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
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
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 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)
CONFIGURACIÓN
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 .
Disponible para los medios que son una pista o una parte de un álbum de música:
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".
Tenga en cuenta que en Windows puede necesitar utilizar comillas dobles en lugar
de solteras.
SELECCIÓN DE FORMATO
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.
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):
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.
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 '
# 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] '
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:
Ejemplos:
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 .
Una vez que el video esté completamente descargado, use cualquier reproductor de
video, como mpv , vlc o mplayer .
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 '
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.
El error
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) .
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?
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?
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.
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.
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:
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 .
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.
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,
id (identificador de medios)
title (título de los medios)
url (URL de descarga de medios) o formats
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:
Proporcionar retrocesos
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.
Ejemplo
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 .
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:
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
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):
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.
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.
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.
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.
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.
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.