CGI para obtener el BBCode de Flickr y Picasaweb hecha en BASH.

No hace mucho publique dos scripts para obtener el código BBCode a partir de la URL de un álbum de Picasa o de un set de flickr, luego de jugar un poco logre unirlos en un CGI hecho en BASH. pueden ojearlo en esta URL:
http://orvtech.com/album2bbcode.cgi

El script primero evalua si la URL es de picasa o flickr, luego procede a diseccionar la data del REQUEST_URI a el script que le toque dependiendo de si es de Flickr o si es de Picasa. El CGI puede ser mejorado, actualmente no controlo si los servidores de flickr o picasa devuelven un Status distinto a 200. También se podría implementar un método de cache o regular el acceso (hacerle throtle).

El código base del CGI es el siguiente:

#!/bin/bash
echo "Content-type: text/html"
echo -e "Status: 200 \n"
GET_DATA=`env | grep REQUEST_URI |sed -e 's/\?/\ /g' | awk '{print $2}'`
ALBUM_DATA=`echo "$GET_DATA" | sed -e 's/%3A/\:/g' -e 's/%2F/\//g' -e 's/\&/ /g' |grep -i -E 'http\:\/\/picasaweb\.google\.com\/[a-z 0-9]?.*/[a-z 0-9]?|http://(www\.)*flickr.com/photos/.*/sets/[0-9]?*[0-9]'`
SIZE=`echo "$GET_DATA" | sed -e 's/%3A/\:/g' -e 's/%2F/\//g' -e 's/\&/ /g' |grep [0-9][0-9]px| sed -e 's/\=/ /g'| awk '{print $4}'`
if `echo $ALBUM_DATA | grep -i -q -E 'http\:\/\/picasaweb\.google\.com\/[a-z 0-9]?.*/[a-z 0-9]?'`
then
ALBUM_TYPE="picasa"
else
if `echo $ALBUM_DATA | grep -i -q -E 'http://(www\.)*flickr.com/photos/.*/sets/[0-9]?*[0-9]'`
then
ALBUM_TYPE="flickr"
else
ALBUM_TYPE="unknown"
fi
fi
echo "
<html>
<body>
<table>
<tr>
<td>
<b>Album o Set URL:</b>
<form method=get action=\"/album2bbcode.cgi\"><input type=text name=albumoset />
</td>
<td>
<select name=\"SIZE\">"
for X in 640px 144px 288px 320px 400px 512px 576px 800px 1024px
do echo "<option value=\"$X\"> $X </option>"
done
echo "</select>
</td>
</tr>
<tr colspan=2><td>
<input type=submit>
</td></tr></table>
</form>"
echo -e "<b>Album:</b> <i>$ALBUM_DATA</i>" | sed -e 's/=/ /g'
echo "<br />< textarea class=\"bashcode\" style=\"width: 700px; height: 280px;\">"
if [[ "$ALBUM_TYPE" == picasa ]]
then
PICASA_DATA=`echo -e " $ALBUM_DATA"|sed -e 's/=/ /g'|awk '{print $2}'`
echo -e " $PICASA_DATA" | curl -s `awk -F / '{print "http://picasaweb.google.com/data/feed/api/user/"$4"/album/"$5}'` | sed -e 's/\"/\ /g' -e s/\'/\ /g | tr ' ' '\n' | grep 's72' | awk '{print "[url='$PICASA_DATA'][img]"$0"[/img][/url]\n"}' | sed s/s72/s$SIZE/g
fi
if [[ "$ALBUM_TYPE" == flickr ]]
then
FLICKR_DATA=`echo $ALBUM_DATA |sed -e 's/=/ /g'| awk '{print $2}'`
curl -s `echo $FLICKR_DATA`| tr ' ' '\n' | grep '_s.jpg' | sed "s/\"/\ /g" |sed -e 's/_s\.jpg/\.jpg/g'| awk '{print "[url='$FLICKR_DATA'][img]"$2"[/img][/url]\n"}'
fi
if [[ "$ALBUM_TYPE" == unknown ]]
then
UNKNOWN=`echo -e " $ALBUM_DATA"|sed -e 's/=/ /g'|awk '{print $2}'`
echo "Hasta ahora solo soportamos Flickr y Picasa. Lo que Ud. introdujo $UNKNOWN no parece ser de ninguno de estos.
*El formato de URL para los sets de flickr es:
http://www.flickr.com/photos/USUARIO/sets/SET/
*El formato de URL para los álbum de Picasa es:
http://picasaweb.google.com/USUARIO/ALBUM"
fi
echo "</ textarea><br />"
echo "</ body></ html>"

Acerca de orvtech

Para saber un poco mas de mi, puedes: - Leer la pagina: Acerca de Oliver Rivas. - Agregar mi perfil de Google+ a tus círculos. - Seguirme por Twitter. - Seguirme por Identi.ca. - Hacerte Fan de orvtech.com en facebook.