miércoles, 18 de diciembre de 2013

Actualización del traductor de consola gtr

El exceso de trabajo me impide introducir por el momento algunos nuevos scripts y trucos de línea de comandos que he ido pensando y desarrollando en los últimos meses, por lo que de momento me conformo con actualizar algunos viejos scripts y hoy le toca a gtr, el traductor Ingles-Español Español-Inglés de consola hecho en Bash y que utiliza Google Translate. Había dejado de funcionar por algunos cambios en la web pero tras unos ligeros retoques ya vuelve a estar operativo. Aquí está el nuevo código:
#!/bin/bash

## gtr - Traduce palabras y frases usando Google Translate ##
##       v0.3 por Rodia (daltonico.net) 2013               ##

gtserver="http://translate.google.com"

browser=$(which lynx)
if [ -z "$browser" ]; then
   echo "$(basename $0): error: falta 'lynx' y no se puede seguir"
   exit 1
fi

sl="en"
tl="es"

case $# in
     0) echo "Uso: $(basename $0) [-r] palabra o frase a traducir"
        exit 1;;
     1) query=$1;;
     *) if [ "$1" == "-r" ]; then
           sl="es"
           tl="en"
           shift
        fi
        query=$(echo $* | sed 's/ /%20/g');;
esac

$browser -dump -nolist "$gtserver/?hl=en&eotf=0&sl=$sl&tl=$tl&q=$query"\
         > /tmp/gtr.tmp 2>/dev/null

if [ "$?" -ne "0" ]; then
   echo "$(basename $0): error: no se pudo conectar a $gtserver"
   exit 1
fi

entrada=$(grep -B1 'Please help' /tmp/gtr.tmp | head -1 | cut -b 4-)

if [ -n "$entrada" ] && [ "$entrada" != "$query" ]; then
   echo -e "\n $entrada\n"
fi

exit 0