Entre algunos de los cambios que voy poco a poco realizando en Cuaderno de campo esté el de transferir algunas de las imágenes que acompañan los apuntes a una cuenta en Picassa, el servicio de alojamiento de imágenes ofrecido por Google. De esta manera descargo de trabajo a este ordenador y despejo mi cuenta en Flickr para dedicarla exclusivamente a fotografias, no screenshot ni imágenes de apoyo.
Asi es que, como en adelante tengo que publicar bastante imágenes en Picasa y no es cuestión de andar visitando la página y su formulario de uploading, me hice un script y su correspondiente menú de contexto para subir imágenes con un solo click y obtener la url de la imagen inmediatamente después de la subida. Como además el tamaño de la imagen a publicar se indica a traves de la propia url no es necesario siquiera visitar Picasa para nada.

Menú de contexto KDE3Menú de contexto KDE3


El script hace/necesita:

  • Conecta con Google y obtiene código de autentificacion.
  • Necesitas: cuenta en Google y tu email+contraseña de dicha cuenta.
  • Una vez conseguido código de autentificacion conecta con la cuenta Picasa asociada a dicha cuenta y sube via curl todos los archivos pasados al album indicado en el script.
  • Necesitas: número ID del album de destino. Para obtenerlo, crea un album en tu cuenta de Picasa y obten su identificador consultando el RSS de dicho album. Algo como (negrita) : http://picasaweb.google.com/data/feed/base/user/trebol.a/albumid/5308347541344869297?alt=rss&kind=photo&hl=es
  • Una vez finalizada la subida del archivo/archivos emite cuadro de dialogo donde se indica las urls de la páginas y la urls de la imagenes a tamaño original subidas

El contenido del script es el siguiente:
#!/bin/bash
albumDestino="123456789"
idUsuario="trebol.a"
emailUsuario="mi@email.com"
passUsuario="contraseña1234"
respuestaFile="~/.respuestaGoogle"
contador=0
mensaje=""
if [ -f "$1" ]; then
dialogo=$(kdialog --progressbar "Espere..." ${#@})
dcop $dialogo showCancelButton true
solicitudAutentificacion=$(curl https://www.google.com/accounts/ClientLogin -d Email=$emailUsuario -d Passwd=$passUsuario -d accountType=GOOGLE -d source=Google-cURL-Example -d service=lh2)
autentificacion=`echo "$solicitudAutentificacion" | grep "Auth" | sed -r 's/Auth=(.*)/\1/'`
for archivo in "$@"; do
let contador++
dcop $dialogo setProgress $contador
if [ -f "$archivo" ]; then
dcop $dialogo setLabel "Espere subiendo...$(basename $archivo)"
if [ "true" = `dcop "$dialogo" wasCancelled` ]; then break; fi
mimetype=$(echo -n "image/";identify "$archivo" | cut -d " " -f2 | tr [A-Z] [a-z])
curl --silent -o "$respuestaFile" --request POST --data-binary "@$archivo" --header "Slug: `date "+$(basename foto.jpg)_%Y%m%d_%H%M%S"`" --header "Content-Type: $mimetype" --header "Authorization: GoogleLogin auth=$autentificacion" http://picasaweb.google.com/data/feed/api/user/$idUsuario/albumid/$albumDestino
fotoId=`cat "$respuestaFile" | sed -r 's/.*<id>([^<]*)photoid\/([^<]*)<\/id>.*/\2/g'`
fotoUrl=`cat "$respuestaFile" | cut -d"=" -f13 | cut -d"'" -f2`
mensaje+="\n\n$archivo\nPagina:<a href='http://picasaweb.google.com/trebol.a/DropBox#$fotoId'>http://picasaweb.google.com/trebol.a/DropBox#$fotoId</a>\nUrl imagen: <a href='$fotoUrl'>$fotoUrl</a>"
else
echo "El archivo ($archivo) no se encuentra"
fi
done
dcop $dialogo close
echo -e "$mensaje" | kdialog --textbox /dev/stdin 430 300
else
echo "Nada que hacer, bye"
exit
fi
exit

Personaliza la cabecera de dicho script con tus datos y guardalo en tu ~/bin como publicar_en_google. Hazlo ejecutable (chmod +x publicar_en_google)
Ahora creamos el menú de contexto para usar dicho script. Abre un editor de texto y escribe algo como:
[Desktop Entry]
Encoding=UTF-8
ServiceTypes=image/*
Actions=toPicasa
Name=Publicacion web
X-KDE-Submenu=Publicar Web
[Desktop Action toPicasa]
Name=a Picasa
Exec=/home/tu_user/bin/publicar_en_google %F
Icon=picasa

Guarda este contenido como toPicasa.desktop (p.ejem, el nombre es indiferente, la extensión si es obligatoria) en ~/.kde/share/apps/konqueror/servicemenus y cliquea sobre cualquier imagen para subirla de forma inmediata.
Al finalizar el proceso de subida aparecerá un menú como el siguiente:

Dialogo finalDialogo final

Donde te informa que la imagen subida está disponible en la url
http://lh6.ggpht.com/_j0yUu1KBjps/TGlNPT1DovI/AAAAAAAABb0/eTP4TJij3BI/foto.jpg_20100816_163746.png

Para obtener la versión de esta imagen a 200 pixel bastaría con apuntar a (negritas)
http://lh6.ggpht.com/_j0yUu1KBjps/TGlNPT1DovI/AAAAAAAABb0/eTP4TJij3BI/s200/foto.jpg_20100816_163746.png
Mas fácil imposible.