lunes, 14 de noviembre de 2016

Shell script en Bash para bajar videos de web en streaming con youtube-dl sobre GNU/Linux

Youtube-dl es una utilidad de línea de comandos para descargar videos o extraer archivos de audio de sitios web de streaming como YouTube, DailyMotion y Vimeo. Youtube-dl está escrito usando Python, y es de dominio público.

Para instalar youtube-dl en distribuciones de GNU/Linux como Debian, Ubuntu, Linux Mint, etc:

monedasdejudas@linuxmint ~ $ sudo aptitude install youtube-dl

Copia y pega el siguiente código que aparece en letra cursiva entre barras en un archivo plano de texto con el siguiente nombre youtube-dl.sh




#!/bin/bash

# Script para bajar videos de Youtube, DailyMotion y Vimeo con youtube-dl
# Fuente: http://blog.desdelinux.net/youtube-dl-tips-que-no-sabias/

function menu
{
echo 'Script para youtube-dl'
echo
        echo '____________________MENU__________________________'
echo 
echo
echo 'Lista de opciones:'
echo
echo '1) Descarga video en un formato'
echo '2) Descarga vídeo en todos los formatos' 
echo '3) Descarga urls de videos de archivo de texto'
echo '4) Descarga video a través de proxy'
echo '5) Actualización de youtube-dl'
echo '6) Salir del programa'
echo '__________________________________________________'
}
function write_option
{
echo
echo 'Escribe una opción de 1 a 6:'
read write_option
}
function one_format
{
echo 'Introduce una url de un video de youtube' 
read urlyoutube
echo 
echo 'Lista de formatos:'
echo
echo '37 - mp4        [1080x1920]'
echo '46 - webm       [1080x1920]'
echo '22 - mp4        [720x1280]'
echo '45 - webm       [720x1280]'
echo '35 - flv        [480x854]'
echo '44 - webm       [480x854]'
echo '34 - flv        [360x640]'
echo '18 - mp4        [360x640]'
echo '43 - webm       [360x640]'
echo '5  - flv        [240x400]'
echo '17 - mp4        [144x176]'
echo 
echo  'Ejemplo: el número de formato mp4 [270x128] es 22'
echo
echo 'Introduce el ńumero asociado al formato:'
read formatnum
youtube-dl --format $formatnum $urlyoutube
}
function all_formats
{
echo 'Introduce una url de un video de youtube:' 
read urlyoutube
youtube-dl --all-formats $urlyoutube
}
function urls_text_file
{
echo 'Introduce el directorio con el nombre del archivo:'
read dir_file
youtube-dl -a $dir_file
}
function url_proxy
{
echo 'Introduce una url de un video de youtube:' 
read urlyoutube
echo
echo 'Lista de formatos:'
echo
echo '37 - mp4        [1080x1920]'
echo '46 - webm       [1080x1920]'
echo '22 - mp4        [720x1280]'
echo '45 - webm       [720x1280]'
echo '35 - flv        [480x854]'
echo '44 - webm       [480x854]'
echo '34 - flv        [360x640]'
echo '18 - mp4        [360x640]'
echo '43 - webm       [360x640]'
echo '5  - flv        [240x400]'
echo '17 - mp4        [144x176]'
echo 
echo 'Introduce el ńumero asociado al formato:'
read formatnum
echo
echo  'Ejemplo de url de proxy y puerto: http://192.168.0.1:3128'
echo
echo 'Introduce la url de un proxy y el puerto:'
read urlproxy_port
        youtube-dl --format $formatnum --proxy $urlproxy_port $url_de_youtube
}
function update
{
sudo youtube-dl -U
}
write_option=0
go_out=6

while [ $write_option -ne $go_out ]; 
do   
   clear
   menu
   write_option
      
   if [ $write_option -ge 1 ] && [ $write_option -le 6 ]; 
   then  
      clear
      case $write_option in   # Acciones para las diferentes opciones del menu
         1)
         one_format
         ;;       
         2)
all_formats
         ;;
         3)
urls_text_file
         ;;
         4)
         url_proxy
         ;;
         5)
         update
         ;;
         6)
         echo 'Salir del programa'
      esac
   else
      echo "¡No ha introducido una opcion correcta!"
   fi
   echo
   echo "Pulse una tecla..."
   read
done




Concede permisos de ejecución al Shell script en bash para que pueda ejecutarse:

monedasdejudas@linuxmint ~ $ sudo chmod +x youtube-dl.sh

Ejecuta el Shell script:

monedasdejudas@linuxmint ~ $ bash youtube-dl.sh