Nunca fui un asiduo usuario de youtube, solo regularmente miro uno que otro video y muy de vez en cuando descargo algo. A la hora de descargar esos videos siempre recurría a la vista de cache del navegador Opera. La misma resulta muy útil para cosas individuales, pero si son muchos los videos que nos interesan hay que optar por alternativas un poco más productivas.
youtube-dl es un pequeño pero potente programa escrito en python que se encarga de descargar videos de youtube y algunos sitios más. El mismo posee flags u opciones para definir el formato, calidad, nombre y demás opciones. Bastaría con instalarlo y ejecutar el siguiente mandato para guardar a disco una copia del video que conmemora los 20 años de Linux:
ArchLinux:
# pacman -S youtube-dl
Ubuntu, Kubuntu, Debian, Mint u otro derivado de Debian:
$ sudo apt-get install youtube-dl
Ahora si bajamos el video:
$ youtube-dl http://www.youtube.com/watch?v=5ocq6_3-nEw
Pero bien, volviendo a la problemática inicial, por cada video que queramos bajar habría que tomar nota de su url y pasársela a youtube-dl para que haga lo suyo.
Aquí es donde entra en juego Klipper, el gestor de portapapeles de KDE. Haciendo uso de las acciones automáticas de klipper, como lo hemos hecho en otra entrada, definiremos que al encontrar coincidencia de lo que sería un url de youtube, se despliegue el menú con algunas opciones de descarga.
Manos a la obra. Lo primero serán las opciones de configuración de klipper, mediante su menú principal. Sobre el apartado de acciones, seleccionamos Añadir una acción.
En la ventana emergente con las propiedades de la acción, deberemos ingresar la expresión regular por la que se identificará las url’s correspondientes a youtube y las diferentes acciones. La expresión regular para filtrar las url’s es la siguiente:
youtube\.com\/watch\?v\=
En mi caso he optado por cinco acciones diferentes, tres de ellas para las calidades de video 360p/720p/1080p contenidas en el formato mp4 y las dos últimas para descargar solo mp3 en calidades 128kbps/192kbps.
Aquí podrán notar que klipper no llama directamente a youtube-dl, sino que llama a un script para realizar la descarga. La finalidad de trabajar con scripts es que podremos indicar de manera más sencilla la ruta de trabajo, opciones de descarga y adicionalmente notificaciones gráficas de la finalización del trabajo o un aviso de error cuando el mismo no se complete de manera satisfactoria.
Si están siguiendo la guía al pie de la letra, deberían establecer 5 opciones que llamarán a 5 scripts diferentes, los cuales crearemos más adelante.
Orden Tratamiento de la salida Descripción yt1080mp4 "%s" Ignorar Descargar video mp4/1080p yt720mp4 "%s" Ignorar Descargar video mp4/720p yt360mp4 "%s" Ignorar Descargar video mp4/360p yt192mp3 "%s" Ignorar Descargar audio mp3/192kbps yt128mp3 "%s" Ignorar Descargar audio mp3/128kbps
Donde “%s” será la url de youtube contenida en el portapapeles.
Los scripts a crear utilizan todos la misma estructura:
#!/bin/sh
URL=$*
cd /directorio-de-trabajo
youtube-dl -f ## -tq "$URL"
if [ $? -eq 0 ]
then kdialog --title Youtube-DL --passivepopup "Video $URL descargado (xxx/xxx)" ;
else kdialog --title Youtube-DL --passivepopup "Error descargando video $URL" ;
fi
Donde la variable URL será efectivamente la url que le pasamos al script mediante klipper, /directorio-de-trabajo un directorio de nuestro agrado, ## opciones específicas de formato y (xxx/xxx) descripciones acordes al formato y calidad elegidos.
La sentencia IF analiza el código de error que entrega youtube-dl cuando termina de ejecutarse. Si el mismo es igual a 0, se informa por medio de Kdialog que el video fue descargado. Si es distinto de 0, lo que claramente indica que algo salió mal, también obtendremos un aviso gráfico.
Bien, luego de esa breve explicación habrá que crear c/u de los cinco scripts. Para ello es necesario contar con permisos de root porque los mismos se guardarán en la ruta /usr/local/bin
De manera gráfica pueden hacerlo ejecutando ALT+F2 “kdesu kate” o por consola mediante nano:
$ sudo nano /usr/local/bin/yt1080mp4
Pegan el siguiente código y lo guardan.
#!/bin/sh
URL=$*
cd ~/descargas
youtube-dl -f 37 -tq "$URL"
if [ $? -eq 0 ]
then kdialog --title Youtube-DL --passivepopup "Video $URL descargado (mp4/1080p)" ;
else kdialog --title Youtube-DL --passivepopup "Error descargando video $URL" ;
fi
Y por último habrá que darle permisos de ejecución.
$ sudo chmod +x /usr/local/bin/yt1080mp4
Habrá que repetir los pasos para los cuatro scripts restantes, el código de c/u se muestra a continuación.
yt720mp4
#!/bin/sh
URL=$*
cd ~/descargas
youtube-dl -f 22 -tq "$URL"
if [ $? -eq 0 ]
then kdialog --title Youtube-DL --passivepopup "Video $URL descargado (mp4/720p)" ;
else kdialog --title Youtube-DL --passivepopup "Error descargando video $URL" ;
fi
yt360mp4
#!/bin/sh
URL=$*
cd ~/descargas
youtube-dl -f 18 -tq "$URL"
if [ $? -eq 0 ]
then kdialog --title Youtube-DL --passivepopup "Video $URL descargado (mp4/360p)" ;
else kdialog --title Youtube-DL --passivepopup "Error descargando video $URL" ;
fi
yt192mp3
#!/bin/sh
URL=$*
cd ~/descargas
youtube-dl -f 22 -tq --extract-audio --audio-format mp3 --audio-quality 192k "$URL"
if [ $? -eq 0 ]
then kdialog --title Youtube-DL --passivepopup "Video $URL descargado (mp3/192kbps)" ;
else kdialog --title Youtube-DL --passivepopup "Error descargando video $URL" ;
fi
yt128mp3
#!/bin/sh
URL=$*
cd ~/descargas
youtube-dl -f 34 -tq --extract-audio --audio-format mp3 "$URL"
if [ $? -eq 0 ]
then kdialog --title Youtube-DL --passivepopup "Video $URL descargado (mp3/128kbps)" ;
else kdialog --title Youtube-DL --passivepopup "Error descargando video $URL" ;
fi
Por último, un pequeño ejemplo de su funcionamiento. Abren el navegador y se dirigen a http://www.youtube.com/watch?v=5ocq6_3-nEw
Copian la url desde la barra del navegador y automáticamente se mostrará el menú de klipper.
Al seleccionar una de las opciones de descarga, la misma empezará a ejecutarse y en el directorio de destino podrán ver su progreso.
Y cuando la descarga termine, veremos el aviso de kdialog.
Espero les ayude. Bye!”










