Comunidad Gambas-es

Versión completa: Extractor de Música de Youtube
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Background:
      Soy un viejo maniático y cuando se trata de escuchar música siempre suelo escuchar las mismas cosas. Es por eso que en Youtube tengo una serie de listas con canciones y siempre recurro a ellas porque no todo lo que me gusta está en mi disco duro. La siguiente pregunta es ¿Por qué no lo está? Pues porque buscar los temas individuales para descarga por los bajos fondos de la web es un peñazo y porque youtube lo pone muy fácil. (Sí ya lo sé todos usáis espotifai y de más zarandajas y yo sólo soy un anticuado... pero es lo que hay). 

Circunstancia A)
A partir de éste hilo https://gambas-es.org/showthread.php?tid=999 y de la solución que ahí encontré decidí dar un nuevo empuje a mi programa reproductor de Música gbAmp (https://gitlab.com/shordi/gbamp), al que quiero dar nueva apariencia, pulir ciertos bugs y añadir alguna feature, entre ellas el poder descargar la música desde youtube para escucharla con mi gbAmp y no ocupar ancho de banda, que no me sobra, oiga, mientras hago otras cosas.


Circunstancia B)
Una investigación en la Granja de Gambas sobre lo que ya había hecho al respecto me dio acceso a varias herramientas... que no me llegaron a gustar. Sobre todo por la lentitud que el youtube-dl manifiesta...
En ello estaba cuando descubrí este canal de Youtube https://www.youtube.com/c/atareao (Que os recomiendo encarecidamente) y en él oí hablar de la versión "avanzada" de youtube-dl: yt-dlp (https://youtu.be/sgYCyg4TErk), que viene en los repositorios de ubuntu. La instalé comprobé su velocidad y capacidad de extraer el sonido de los vídeos, me encantó y comencé a teclear.

Circunstancia C)
La idea era hacer un botoncito o algo en el gbAmp que abriese un formulario que permitiese descargar un vídeo o, mejor aún, una lista de reproducción completa.
Para no "engorrinar" el proyecto y no volver loco al gitlab creé un proyecto nuevo y cuando lo tuve caí en la cuenta de que daba para ser presentado en sociedad. Un pequeño logo, hacer traducible el proyecto y ya está.

Resultado:
Aquí tenéis YT-Sound, un miniproyecto que hace eso que arriba describo: descarga vídeos de youtube, extrae el sonido y luego borra los vídeos descargados.

Uso:
1.-) Captáis la URL del vídeo o Lista que queréis descargar (bien en la opción "Compartir" de youtube o copiando la url del enlace "VER LISTA DE REPRODUCCIÓN COMPLETA" que aparece al abrir la pestaña "Listas" de cualquier canal de Youtube con el botón derecho y "Copiar Enlace"
2.-) La pegáis en la primera casilla
3.-) Elegís/Creáis la carpeta de destino de la descarga
4.-) Pulsáis "Descargar".

Este es su aspecto:

[Imagen: ijg8ajI.png]

Consideraciones:
- yt-dlp es un software magnífico que hace un montón de cosas, este programa es muy limitado porque sólo hace eso que describo. De hecho todo el meollo del programa se limíta a llamar a yt-dlp con las opciones correspondientes.

-La versión de yt-dlp que viene en los repositorios de ubuntu es anticuada y genera muchos warnings. Afortunadamente en su página web (https://github.com/yt-dlp/yt-dlp/releases/)puedes descargar el binario compilado para tu distribución y sustituir el que existe en /usr/bin con él. (no he probado con otras distribuciones, sólo con mi Linux Mint)

-Las actualizaciones y mejoras (si las hay) las iré colocando en el gitlab https://gitlab.com/shordi/YT-Sound


Saludos
(06-09-2022, 12:44)Shordi escribió: [ -> ]Soy un viejo maniático

En serio ? jajaja !!!
(06-09-2022, 12:44)Shordi escribió: [ -> ]Youtube https://www.youtube.com/c/atareao (Que os recomiendo encarecidamente)

Muy buen canal, varias veces solucione cosas de linux gracias al blog de este muchacho.
(06-09-2022, 12:44)Shordi escribió: [ -> ]Para no "engorrinar" el proyecto y no volver loco al gitlab creé un proyecto nuevo y cuando lo tuve caí en la cuenta de que daba para ser presentado en sociedad. Un pequeño logo, hacer traducible el proyecto y ya está.
Gracias por compartir.
(06-09-2022, 12:44)Shordi escribió: [ -> ]2.-) La pegáis en la primera casilla

Pedido de caracteristica antes de probar nada jeje, no es posible que el peograma se entere solo que copiaste un link youtube ? sin tener que pegarlo.
(06-09-2022, 12:44)Shordi escribió: [ -> ]-Las actualizaciones y mejoras (si las hay) las iré colocando en el gitlab https://gitlab.com/shordi/YT-Sound

No esta accesible o no existe el proyecto.
(06-09-2022, 12:44)Shordi escribió: [ -> ]Aquí tenéis YT-Sound, un miniproyecto que hace eso que arriba describo: descarga vídeos de youtube, extrae el sonido y luego borra los vídeos descargados.

es necesario descargar el video? no se puede descargar solo el sonido?
(06-09-2022, 12:44)Shordi escribió: [ -> ]- yt-dlp es un software magnífico que hace un montón de cosas, este programa es muy limitado porque sólo hace eso que describo. De hecho todo el meollo del programa se limíta a llamar a yt-dlp con las opciones correspondientes.

Gracias por el dato, no conocia este programa.
Cita:Pedido de caracteristica antes de probar nada jeje, no es posible que el peograma se entere solo que copiaste un link youtube ? sin tener que pegarlo.
Pos no lo sé... cosa a mirar.
Cita:No esta accesible o no existe el proyecto.
Siempre se me olvida activar lo de "Visibilidad Público", que está escondido de entrada en la web...
 
Cita:es necesario descargar el video? no se puede descargar solo el sonido? 
No. Es la manera en que trabaja yp-dlp. Primero se baja la página web, luego hace algún tipo de scrapping para pillar el enlace del vídeo, lo descarga (muy rápido, eso sí) y después hace todo lo que ellos llaman "post-producción", extraer audio, poner subtítulos, etc. etc. Con un parámetro más que añadas (-k, creo recordar) no elimina el vídeo descargado... pero mi programa sólo está interesado en la música. He probado a bajar con él algún podcast y alguna conferencia y también mola.

Saludos.


Salidas
me respondo solo, es igual que youtube-dl, tiene los mismos parametros
yt-dlp -f 140 https://www.youtube.com/....
Esto descarga solo el audio
Cita:me respondo solo, es igual que youtube-dl, tiene los mismos parametros
yt-dlp -f 140 https://www.youtube.com/....
Esto descarga solo el audio
Sí, creo que había un youtube-dlc y yt-dlp es una evolución del mismo o algo así (nunca he usado ni conocía youtube-dl).
Cita:yt-dlp -f 140 https://www.youtube.com/....
Esto descarga solo el audio
No. Ese parámetro es el que yo utilizo y hace lo que arriba describí. La sensación es de que sólo baja el audio, pero si pulsas la opción de "Ver Salida Completa" (o si la ejecutas en un terminal) puedes ver que descarga todo.

Por cierto, el enlace que pones lleva sólo al youtube

Saludos
Le he añadido un botón "Cancelar", que a veces empiezas a descargar una lista sin darte cuenta de que contiene vídeos de 3 horas...Blush

Saludos
(07-09-2022, 06:58)Shordi escribió: [ -> ]No. Ese parámetro es el que yo utilizo y hace lo que arriba describí. La sensación es de que sólo baja el audio, pero si pulsas la opción de "Ver Salida Completa" (o si la ejecutas en un terminal) puedes ver que descarga todo.

No estoy de auerdo, desde mi punto de vista solo descarga el audio. dejo un ejemplo con la salida completa de la terminal
Bash
  1. [dave@hal9000 ~]$ yt-dlp -f 140 https://www.youtube.com/watch?v=Q42H6b85sTM&ab_channel=LaRengaVEVO
  2. [1] 6947
  3. [dave@hal9000 ~]$ [youtube] Q42H6b85sTM: Downloading webpage
  4. [youtube] Q42H6b85sTM: Downloading android player API JSON
  5. [info] Q42H6b85sTM: Downloading 1 format(s): 140
  6. [download] Destination: La Renga - Hey Hey, My My (InsoportablemENte VIVO) [Q42H6b85sTM].m4a
  7. [download] 100% of 5.15MiB in 00:01
  8. [FixupM4a] Correcting container of "La Renga - Hey Hey, My My (InsoportablemENte VIVO) [Q42H6b85sTM].m4a"



(07-09-2022, 06:58)Shordi escribió: [ -> ]Por cierto, el enlace que pones lleva sólo al youtube

Si era solo un ejemplo, le recorte a drede el URL.
Pues la información que da con tu formato no cuadra con la que da con el mío...

[Imagen: jvVHC52.png]
Dejando el tiempo de descarga aparte, que creo que tu conexión es mucho más rápida que la mía, veo que a tí te ha descargado 5.15 mb y a mí 4.98. Por lo que supongo que en ambos casos descarga lo mismo. Quizá el forma m4a es superior al opus, que es el que a mí me genera.
He probado tu cadena de descarga con el formato 251, que es el webm (porque el m4a no funciona en mi programa), y lo mismo.
Me da la sensación de que hace lo mismo con las dos sintáxis y que cuando se pide un formato concreto limita la información en consola de lo que hace. Por otro lado, con mi sintáxis de "best audio", hasta siempre genera archivos .opus, que es un formato libre, mientras que el webm es propietario... y eso es un punto en contra.

Falta información por algún lado, me temo, pero de momento lo voy a dejar como está.


Saludos
(06-09-2022, 21:11)Shordi escribió: [ -> ]
Cita:es necesario descargar el video? no se puede descargar solo el sonido? 
No. Es la manera en que trabaja yp-dlp. Primero se baja la página web, luego hace algún tipo de scrapping para pillar el enlace del vídeo, lo descarga (muy rápido, eso sí) y después hace todo lo que ellos llaman "post-producción", extraer audio, poner subtítulos, etc. etc. Con un parámetro más que añadas (-k, creo recordar) no elimina el vídeo descargado... pero mi programa sólo está interesado en la música. He probado a bajar con él algún podcast y alguna conferencia y también mola.

Hice unas pruebas con un programa llamado vnstat para ver que cantidad de mb se descargaban en cada comando con opciones. Puedo confirmar que el programa yt-dlp no descarga el video y luego le recorta la pista, si le indicas que descargue solo hace eso exactamente.

yt-dlp -f 140 https://www.youtube.com/watch?v=Q42H6b85...aRengaVEVO
                           rx         |       tx
--------------------------------------+------------------
  bytes                     5,83 MiB  |      441,34 KiB
--------------------------------------+------------------


yt-dlp https://www.youtube.com/watch?v=Q42H6b85...aRengaVEVO
                           rx         |       tx
--------------------------------------+------------------
  bytes                    23,40 MiB  |      682,64 KiB
--------------------------------------+------------------


yt-dlp -f 251 https://www.youtube.com/watch?v=Q42H6b85...aRengaVEVO
                           rx         |       tx
--------------------------------------+------------------
  bytes                     5,45 MiB  |      169,39 KiB
--------------------------------------+------------------


yt-dlp -f "ba" --add-metadata -o "%(title)s.%(ext)s" https://www.youtube.com/watch?v=Q42H6b85sTM
                           rx         |       tx
--------------------------------------+------------------
  bytes                     5,45 MiB  |      166,33 KiB
--------------------------------------+------------------
Ok, creo que ya sé lo que ocurre. yt-dlp descarga efectivamente solo el sonido. Con la sintáxis

yt-dlp -f "ba" --add-metadata -o "%(title)s.%(ext)s" https://www.youtube.com/watch?v=Q42H6b85sTM

obtienes el fichero:  La Renga - Hey Hey, My My (InsoportablemENte VIVO).webm

El formato webm (cito de una web: https://www.ionos.es/digitalguide/pagina...-web/webm/) "es un formato contenedor (con extensión *.webm) para archivos multimedia, es decir, para vídeos y archivos de audio."

Cuando usas la sintáxis

yt-dlp -x -f "ba" --add-metadata -o "%(title)s [%(id)s].%(ext)s" https://www.youtube.com/watch?v=Q42H6b85sTM

descarga el .webm y luego en "post-producción" convierte el archivo .webm "de video" a .opus, de sonido. y luego elimina "el video" webm.

Si añades el parámetro -k (keep) es decir: yt-dlp -xk -f "ba".... lo que obtienes son los dos archivos el webm y el opus.

Pero la descarga, efectivamente es sólo el sonido.

Hay que ver lo que se aprende cuando juntas tu cabeza con la de otro... Big Grin Big Grin Big Grin

Saludos
Páginas: 1 2