Wednesday, April 11, 2007

youtplay !


Menudo nombre, pero bueno, "es lo que hay". Youtplay es un script que permite ver videos u oir el sonido de los mismos de youtube con una simple búsqueda, la idea es que dicho programa acabe siendo una especie de librería de música online, es decir oír música "on-demand" sin tener el archivo en tu PC. De momento es un script (en bash) que busca un video y te da el video o el audio+video a través de mplayer.

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"

Blogger templates

A cœur vaillant rien d'impossible.
Powered by Blogger.

Labels

About