terminal-ubuntu-1

Personalmente me gusta mucho usar la terminal para automatizar tareas, sobre todo porque tengo en casa par de ordenadores siempre funcionando y ahí dejo tareas ejecutándose.

Yo soy como se dice; de la vieja escuela. Veo muchas cosas en YouTube, pero prefiero descargarlas al NAS que tengo en casa y luego verlas desde cualquier dispositivo (celular, tablet, etc) que tenga en la LAN de casa.

Algo que hago mucho es descargar montón de vídeos de YouTube, simplemente hago un listado en un archivo con todas las URLs que deseo descargar, aquí les mostraré cómo programar un script en Bash para Linux que haga eso, que descargue todos y cada uno de los links de YouTube que tengamos en un archivo de texto.

Primero instalemos YouTube-DL que nos servirá para descargar:

Ya en el blog se ha hablado de youtube-dl antes, no escribiré mucho sobre esta aplicación porque pueden leerlo aquí: Youtube-dl: Descarga archivos de vídeo y audio de Youtube y otros sitios.

Para instalarlo usaremos estos 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

Esto nos permitirá mediante la terminal descargar vídeos de YouTube, por ejemplo para descargar un interesante vídeo sobre el gueopardo en la sabana africana:

youtube-dl https://www.youtube.com/watch?v=TSrvvmdmucU

Entonces, pongamos en un archivo llamado urls.txt varias URLs de vídeos de YouTube que deseemos descargar, por ejemplo yo tendré mi archivo urls.txt así:

  • https://www.youtube.com/watch?v=1_OlNiCEUN4
  • https://www.youtube.com/watch?v=5pOxlazS3zs
  • https://www.youtube.com/watch?v=WipM3SAYqK4
  • https://www.youtube.com/watch?v=SMKeWTVYBUo

Ahora pasamos a la parte de automatizar el proceso, para usaremos este pequeño script de Bash:

#!/bin/bash
for i in `cat urls.txt`; do
youtube-dl $i
done
exit

Vayamos a explicar paso a paso lo que hace el script:

  1. #!/bin/bash -» Aquí declaramos el intérprete que tendrá por defecto el script, bin bash
  2. for i in `cat urls.txt`; do -» Aquí le estamos indicando que la variable i tomará el valor de cada línea del archivo urls.txt
  3. youtube-dl $i -» Aquí descargamos la URL que es el valor de la variable i según la línea de arriba
  4. done -» Aquí cerramos el ciclo for que abrimos apenas 2 líneas más arriba
  5. exit -» Y aquí terminamos el script bash

O sea voy a explicar un poco más.

Cada línea del archivo, que es una URL … el script le asignará esa URL a una variable (i) y descargará el vídeo, luego pasará a la siguiente línea, que será otra URL … que se la asignará a la misma variable (reemplazando la url vieja por esta nueva) y descargará el víðeo, y de nuevo hará lo mismo con la siguiente línea … y luego de nuevo con la siguiente, y así hasta que haya descargado todas las URLs y entonces el script se cerrará.

Para ejecutar este script solo debemos darle permiso de ejecución:

chmod +x NOMBRE_DEL_ARCHIVO

Por ejemplo, yo el script lo guardé con nombre: youtube_downloader.sh … por lo que para darle permisos de ejecución sería:

chmod +x youtube_downloader.sh

Luego para ejecutarlo como de toda una vida, punto slash (./) y nombre del archivo:

./youtube_downloader.sh

Les dejo una foto de como se vería ya el script una vez ejecutado (no se fijen en la velocidad, tengo lento el internet LOL!):

terminal-ubuntu-02

Este script Bash es la base para muchas cosas, muchas tareas que necesitamos automatizar al menos yo, consigo lo que necesito.

¿Les pareció interesante? … ¿aprendieron algo nuevo? …

Bueno, esto que acabamos de hacer no es enteramente necesario, youtube-dl tiene un parámetro (-a) que sirve para precisamente eso, incorporar una serie de URLs y descargar todos esos vídeos … aquí lo que intento enseñarles es el script, el ciclo for, saber resolver la problemática por sí solos y no depender que una aplicación traiga o no una opción o parámetro.

Por ejemplo, ¿si quisieran descargar 1000 archivos de MediaFire sin pasar mucho cómo lo harían?

 

Fuente: Cheetah | maslinux

¿Quién está en línea?

Hay 1515 invitados y ningún miembro en línea