Problemas:
He encontrado un problemita: no todos los vídeos (que llegan en flv) se ven bien, para eso está implementada la función de elegir el resultado que se quiere de la búsqueda.
Los videos/audios tardan unos 15 segundos en salir.
En el futuro:
Acelerar la salida de los streams (¿con un buffer o una tubería?).
Soportar playlist en m3u/pls/formato propio.
Permitir que se pase al siguiente resultado con una tecla.
Interfaz g/k/dialog o GTK si se hace en C.
Hacerlo en C...
Instrucciones:
Se puede bajar de aquí.
Una vez bajado en una carpeta, bastará con llamarlo :
bash youtplay.sh
Finalmente aquí pongo el código que no esta actualizado, pero da una idea de como está hecho:
#!/bin/bash
id1=""
id2=""
rm -f busqueda &> /dev/null
rm -f watch &> /dev/null
echo "Busqueda:"
read search
term=`echo "$search" | sed 's/ /+/g'`
echo "Resultado: (intro para el primero)"
read resultado
if [ "$resultado" = "" ]; then resultado=1; fi
echo "Video: (intro para solo audio, cualquier cosa para video+audio)"
read av
if [ "$av" = "" ]; then audio="-vo null"; else audio=""; fi
#es entero ?
case $resultado in
*[!0-9+-]*)
resultado=1;;
*)
;;
esac
echo "Buscando $search"
lynx -source "http://www.youtube.com/results?search_query=$term" > busqueda
maxlin=`cat busqueda | grep "watch?v=" | wc -l`
resultado=$(((resultado-1)*2))
linea=$((maxlin-resultado))
if [ $linea -lt 1 ]; then linea=resultado; fi
echo "linea $linea"
id1=`cat busqueda | grep "watch?v=" | tail -n $linea | head -1 | while read line; do echo $line | cut -f2 -d\" | cut -f2 -d=; done | head -n 1`
echo "$id1"
if [ "$id1" = "" ]; then echo "No se ha encontrado $search"; exit 1; fi
lynx -source "http://www.youtube.com/watch?v=$id1" > watch
id2=`cat watch | grep "/watch_fullscreen?video_id=" | cut -f3 -d\& | cut -d= -f2`
echo $id2
if [ "$id2" = "" ]; then echo "Error inesperado, saliendo"; exit 1; fi
echo "Encontrado! en unos segundos comenzara a sonar..."
echo "http://www.youtube.com/get_video.php?video_id=$id1&t=$id2"
mplayer $audio "http://www.youtube.com/get_video.php?video_id=$id1&t=$id2"