Descargar videos de YouTube es una pregunta clásica de muchos usuarios. He visto "programitas" que hacen esta tarea, también he visto como hacerlo con el mismo navegador por medio de plugins o con un poco de ingenio.

Pero nada se compara con un pequeño shell script escrito en bash que solo requiere que tengas instalado el wget. Con este script, descargar un video es tan simple como ejecutar el nombre del script y la URL del video de YouTube:

youtubedownload.sh  http://www.youtube.com/watch?v=nSyWqCdqCZ0

El script y una breve explicación a continuación:

#!/bin/bash

if [ $# -lt 1 ]; then
    echo "Uso: $0 "
    exit 1
fi

ID=`echo $1 | cut -d= -f2 | cut -d& -f1`

FILE="youtube-${ID}"
BASE_URL="http://youtube.com/get_video.php"

wget -O /tmp/${FILE} $1

#si no dio error el wget ($? valor de retorno del programa que termino)
if [ $? == 0 ]; then
    T_PARAM=`grep '&t=' /tmp/${FILE} | head -n 1 | awk -F'&t=' '{print $2}' | cut -d& -f 1`
    VIDEO_URL="${BASE_URL}?video_id=${ID}&t=${T_PARAM}"
    wget -O ${FILE}.flv $VIDEO_URL
    #echo "wget -O"${FILE}".flv "$VIDEO_URL
fi

rm -f /tmp/${FILE}

  • Se puede ver en primera instanacia el usage message para aquel desprevenido que se olvide del argumento.
  • Luego, vemos como con el uso de cut se encarga de obtener de la URL dada como argumento (http://www.youtube.com/watch?v=nSyWqCdqCZ0 ) el id del video, para nuestro ejemplo: nSyWqCdqCZ0.
  • Luego descarga la URL (nuestro argumento) y la guarda en el /tmp/youtube-id_del_video (en nuestro ejemplo, /tmp/youtube-nSyWqCdqCZ0)
  • Si el wget no falló (if [ $? == 0 ]; then) obtiene el parámetro que debe enviar junto al id del video en la URL http://youtube.com/get_video.php
  • Finalmente, con wget descarga el video y lo guarda en el directorio activo bajo el nombre de youtube-id_del_video.flv (en nuestro ejemplo youtube-nSyWqCdqCZ0.flv)

Si no te interesa la explicación no importa, pero no dudes en probarlo pues funciona de maravillas.

Vía: eOs's Blog