#!/bin/bash
# Programa para bajar y recodificar a MPEG vídeos de google
# (c) 2005 Alvaro Uría <fermat en rigel.deusto.es>
# Distribuido bajo los términos de la licencia GNU GPL
# ver http://www.gnu.org
#
# Usage:
#	./gvideo.sh <url>
#
# ie.
#	./gvideo.sh http://video.google.com/videoplay?docid=515642196227308929
#
PATH='/bin:/usr/bin'

##
# Comprobaciones de herramientas utilizadas
function falta {
 	echo "No se puede ejecutar el script: falta una herramienta"
	echo "esencial para su ejecución: $1"
	echo
	echo "Por favor, comprueba también si el PATH especificado"
	echo "en el script es el correcto para tu sistema."
	exit 1
}
test -n "`which echo`"   || falta echo
test -n "`which wget`"   || falta wget
test -n "`which ffmpeg`" || falta ffmpeg
test -n "`which awk`"    || falta awk
test -n "`which sed`"    || falta sed
#
##

function usage {
	echo -e "Usage:\n\t$0 <url>\n"
	echo -e "Sample:\n\t$0 http://video.google.com/videoplay?docid=515642196227308929\n"
	exit 1
}
VAL=''
if test $# -ne 1
 then
 	usage
 elif VAL=`echo $1 | awk '$1 !~ /^http:\/\/.+/ {print 1}'` && test -z "$VAL"
  then
	NAME=`echo $1 | sed -e 's/^[^0-9]\+\([0-9]\+\).*/\1/'`
	URL=`wget -qO - $1 | grep googleplayer | sed -e 's/.*\/googleplayer\.swf?videoUrl=\(http[^&]*\)&amp;autoPlay=true.*/\1/;s/%3A/:/g;s/%2F/\//g;s/%3F/?/;s/%26/\&/g;s/%3D/=/g'`
	VAL=''

	if VAL=`echo $URL | awk '$1 !~ /^http:\/\/.+/ {print 1}'` && test -z "$VAL"
	 then
	 	echo -n "Descargando vídeo... "
		wget -qO $NAME.flv "$URL" && echo "hecho." || (echo "falló.";exit 1)
		echo -n "Recodificando vídeo... "
		ffmpeg -i $NAME.flv $NAME.mpg &>/dev/null && echo "hecho." \
		|| (echo -e "falló.\n\nAún se conserva el fichero en formato Macromedia Flash: $NAME.flv";exit 1)
		rm -f $NAME.flv
		echo "El fichero se llama: $NAME.mpg"
	 else
	 	echo "No se pudo descargar el vídeo."
	 	exit 1
	 fi
  else
	usage
  fi

exit 0

