Posteado por:
marco-
Moderador
ModeradorHombre Argentina

Descargar y convertir videos de YouTube (bash script)


Bueno, no es el script más prolijo pero cumple su función

Para hacerlo funcionar, copiar el código a algun editor de texto, y guardar el archivo como youtube.sh, luego le damos permisos de ejecución desde la terminal: chmod 755 youtube.sh

Se ejecuta desde la terminal ingresando ./youtube.sh y luego introduciendo el id del video, por ejemplo en http://www.youtube.com/watch?v=2mCoOlUjhlc, el id es 2mCoOlUjhlc

Para que funcione la conversión a mpg se debe tener instalado ffmpeg, para instalarlo en Ubuntu: sudo apt-get install ffmpeg

Código:
dijo:


#!/bin/bash
rm -f youtube.tmp
echo Please, enter video id
read VIDEOID
echo Ok, looking for video path...
wget -nv --output-document=youtube.tmp http://www.youtube.com/watch?v=$VIDEOID
if [ ! -f youtube.tmp ]
then
echo Video does not exist
else
echo Downloading video...
VIDEOPATH=`grep -o "var fullscreenUrl = .*;" youtube.tmp`
LENGTH=$((${#VIDEOPATH} - 40))
wget --output-document=video.flv http://www.youtube.com/get_video?${VIDEOPATH:38:$LENGTH}
echo Download has finished
echo Converting video...
ffmpeg -i video.flv -s 320x240 video.mpg
rm -f video.flv
echo Done!
fi
rm -f youtube.tmp



Código (sin conversión a mpg, no requiere ffmpeg):

#!/bin/bash
rm -f youtube.tmp
echo Please, enter video id
read VIDEOID
echo Ok, looking for video path...
wget -nv --output-document=youtube.tmp http://www.youtube.com/watch?v=$VIDEOID
if [ ! -f youtube.tmp ]
then
echo Video does not exist
else
echo Downloading video...
VIDEOPATH=`grep -o "var fullscreenUrl = .*;" youtube.tmp`
LENGTH=$((${#VIDEOPATH} - 40))
wget --output-document=video.flv http://www.youtube.com/get_video?${VIDEOPATH:38:$LENGTH}
echo Download has finished
fi
rm -f youtube.tmp
Compartir en:
  • Twitter
  • Delicious
  • Facebook
  • Digg
RSS con los comentarios de este post

10 Comentarios


#1 - Más de 1 año
Buena onda... otro mas para tener
Buen aporte!
#2 - Más de 1 año
la verdad muy ingenioso (Y)
#3 - Más de 1 año
Muy bueno. Simple y efectivo.
#4 - Más de 1 año
Si no te molesta, te dejo una versión un poco más robusta:

dijo:


#!/bin/bash
VIDEOID=$1
if [ \"$VIDEOID\" == \"\" ] ; then
echo \"Usage: youtube.sh video_id\"
exit 1
fi
rm -f /tmp/youtube-$USER.tmp
echo \"Ok, looking for video path...\"
wget -nv --output-document=youtube.tmp http://www.youtube.com/watch?v=$VIDEOID
if [ ! -f youtube.tmp ] ; then
echo \"Video does not exist\"
exit 1
fi
echo Downloading video...
VIDEOPATH=`grep -o \"var fullscreenUrl = .*;\" youtube.tmp`
LENGTH=$((${#VIDEOPATH} - 40))
wget --output-document=video.flv http://www.youtube.com/get_video?${VIDEOPATH:38:$LENGTH}
echo \"Download has finished\"
rm -f /tmp/youtube-$USER.tmp



Entonces ejecutamos, por ejemplo: youtube 2mCoOlUjhlc
#5 - Más de 1 año
Me equivoque en lo que quise mejorar! Aqui la versión corregida.

dijo:


#!/bin/bash
VIDEOID=$1
if [ \"$VIDEOID\" == \"\" ] ; then
echo \"Usage: youtube.sh video_id\"
exit 1
fi
rm -f /tmp/youtube-$USER.tmp
echo \"Ok, looking for video path...\"
wget -nv --output-document=youtube.tmp http://www.youtube.com/watch?v=$VIDEOID
if [ ! -f /tmp/youtube-$USER.tmp ] ; then
echo \"Video does not exist\"
exit 1
fi
echo Downloading video...
VIDEOPATH=$(grep -o \"var fullscreenUrl = .*;\" /tmp/youtube-$USER.tmp)
LENGTH=$((${#VIDEOPATH} - 40))
wget --output-document=video.flv http://www.youtube.com/get_video?${VIDEOPATH:38:$LENGTH}
echo \"Download has finished\"
rm -f /tmp/youtube-$USER.tmp



Te dejo puntines.
#6 - Más de 1 año
groso tambien estaria bueno bajar el nombre del video y ponerselo pero me dio paja
#7 - Más de 1 año
Que te parece asi?

dijo:


#!/bin/bash

TEMPFILE=\"/tmp/youtube-$USER.tmp\"
VIDEOID=$1
if [ \"$VIDEOID\" == \"\" ] ; then
echo \"Usage: youtube.sh video_id\"
exit 1
fi
rm -f $TEMPFILE
echo \"Ok, looking for video path...\"
wget -nv --output-document=$TEMPFILE http://www.youtube.com/watch?v=$VIDEOID
if [ ! -f $TEMPFILE ] ; then
echo \"Video does not exist\"
exit 1
fi
VIDEOPATH=$( grep -o \"var fullscreenUrl = .*;\" /tmp/youtube-$USER.tmp )
LENGTH=$((${#VIDEOPATH} - 40))
TITLE=$( grep -o \"<title>.*</title>\" $TEMPFILE | sed \'s|<title>\\(.*\\)</title>|\\1|\' | sed \'s/ //g\' )
if [ \"$TITLE\" == \"\" ] ; then
$TITLE=\"video\"
fi
TITLE=\"${TITLE}.flv\"
echo \"Downloading video on file $TITLE ...\"
wget --output-document=$TITLE http://www.youtube.com/get_video?${VIDEOPATH:38:$LENGTH}
echo \"Download has finished\"
rm -f $TEMPFILE

#8 - Más de 1 año
muchas gracias, me sirió una línea para convertir un video qe había bajado, graxx (Y
#9 - Más de 1 año
mira...se puede editar el archivo bashrc

nano .bashrc
y escrivir

alias youtube=\'sh /home/usuario/Escritorio/scrit-youtube.sh\'
guardar control+o y cerrar control+x
reiniciar el terminal y escrivir radio
y luego el id...
#10 - Más de 1 año
youtube era...no radio jaja

Para poder comentar necesitas estar Registrado. O.. ya tenes usuario? Logueate!
Ir al cielo
Anuncie en T! - API - Ayuda - Chat - Contacto - Denuncias - Enlazanos - Mapa del sitio - Prensa - Protocolo - Trabaja en Taringa! - T! em Português
Términos y condiciones - Privacidad de datos