Descargar videos de youtube con Klipper en KDE.

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.

klipper201

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.

klipper202

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

klipper203

Copian la url desde la barra del navegador y automáticamente se mostrará el menú de klipper.

klipper204

Al seleccionar una de las opciones de descarga, la misma empezará a ejecutarse y en el directorio de destino podrán ver su progreso.

klipper205

Y cuando la descarga termine, veremos el aviso de kdialog.

klipper206

Espero les ayude. Bye!”

Recibir correo local con Kmail en Linux.

Para poder recibir el correo local en Linux con Kmail hace falta tener Postfix (para el ejemplo solo como servidor de mail local) y luego configurar correctamente Kmail.

De no tener instalado Postfix hacerlo. Esto depende de cada distribución, en ArchLinux:

$ sudo pacman -S postfix

En Debian y derivadas hacer click en el enlace apturl o por consola:

$ sudo apt-get install postfix

Ahora hay que modificar los archivos de configuración de Postfix para que funcione de servidor local de mail. Abrimos con el editor preferido (con permisos de root) el archivo /etc/postfix/main.cf  y editamos las siguientes opciones:

inet_interfaces = loopback-only
mynetworks_style = host
append_dot_mydomain = no
default_transport = error: Local delivery only!

Descomentarlas en caso de que se encuentren comentadas con #

Antes de cerrar el editor y guardar los cambios, configurar el path de los buzones mbox o maildir. Esto es algo personal, en mi caso, dado el hecho que uso Kmail, opté por poner la ruta donde se encuentran mis otras carpetas de maildir, además de mantener ese mismo formato de almacenamiento. Lo hice con la siguiente configuración:

home_mailbox = .local/share/Correo local/

Es una ruta relativa al home del usuario, y al terminar con / se especifica que use formato maildir.

Nos aseguramos que la carpeta exista:

$ mkdir "./local/share/Correo local"

Y por último antes de revisar las configuraciones de postfix, hay que agregar un alias para recibir el correo local dirigido a root.

Editamos el archivo /etc/postfix/aliases y donde dice # Person who should get root’s mail. Don’t receive mail as root! ponemos nuestro nombre de usuario, ej:

root: thecattony

Guardamos los cambios y corremos el siguiente mandato con permisos de root para generar los alias de postfix.

$ sudo postalias /etc/postfix/aliases

Por las dudas creamos el archivo /root/.forward para que los correos se redirijan a nuestra casilla:

$ echo "thecattony@localhost" | sudo tee /root/.forward

También con permisos de root corremos la comprobación de postfix para asegurarnos que esté bien configurado:

$ sudo postfix check

De no obtener ningún error estamos en condiciones de levantar el servicio. En ArchLinux además tendremos que agregar el servicio para que se inicie automáticamente en el archivo /etc/rc.conf

$ sudo rc.d start postfix

O en Debian y derivados:

$ sudo service postfix start

Para probar el envío y redirección corremos lo siguiente:

$ echo "Probando postfix" | mail -s "Probando..." root

Una vez que se encuentre configurado Kmail podrán leer ese correo, sino, pueden hacer un cat del archivo:

$ cat .local/share/Correo\ local/new/*

Bueno, ahora la parte fácil, configurar Kmail. Abrimos el programa y vamos a Preferencias, Configurar Kmail… y por último Cuentas:

localmail02

Hacemos click en Añadir… y seleccionamos Maildir

localmail03

Se nos abre una ventana para ingresar la ruta a la carpeta de maildir, ahí tenemos que ingresar /home/thecattony/.local/share/Correo local/

localmail04

Antes de aplicar y aceptar los cambios hacemos click en Opciones de recuperación y nos fijamos que queden las siguientes opciones:

localmail05

Bien, aceptando los cambios, ya tendrían que poder leer los correos locales desde Kmail.

localmail01

Bye!”

PD: Cambien thecattony por su nombre de usuario de sistema.