Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: leogtz en 9 Junio 2010, 00:42 am



Título: Traductor inglés español [Bash]
Publicado por: leogtz en 9 Junio 2010, 00:42 am
Bueno, este mini código lo hice hace 1 mes, simplemente para no tener que abrir el navegador y teclear todo ahí.

El código funciona de dos maneras, una mediante un inputbox y la otra mediante la línea de comandos:

Código:
leo@lein:~/Escritorio$ bash trans "i want to fly with you"
Quiero volar contigo
leo@lein:~/Escritorio$
(http://img291.imageshack.us/img291/3195/pantallazobashtranslato.png)

Código
  1. #!/bin/sh
  2. # Leo Gutierrez R.
  3. # matthewbauer, http://www.commandlinefu.com <--- Búsqueda en google traductor.
  4. if [ $# -eq 0 ];
  5. then
  6. while true
  7. do
  8. Xdialog --title "Bash translator" \
  9.       --inputbox "Input:" 10 45 2> /tmp/inputbox.tmp.$$
  10.  retval=$?
  11.  input=`cat /tmp/inputbox.tmp.$$`
  12.  rm -f /tmp/inputbox.tmp.$$
  13.  case $retval in
  14.   0)
  15. cmd=$( wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$input&langpair=en|es" | sed 's/.*"translatedText":"\([^"]*\)".*}/\1\n/'; );  
  16. Xdialog --title "Bash translator" --msgbox "$cmd" 0x0
  17. ;;
  18. 1)
  19. exit 0
  20. ;;
  21. 255)
  22. echo -e "Box closed."
  23. ;;
  24. esac
  25. done
  26. else
  27. cmd=$( wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$1&langpair=en|es" | sed 's/.*"translatedText":"\([^"]*\)".*}/\1\n/'; );  
  28. echo -e "$cmd"
  29. exit 0
  30. fi


Título: Re: Traductor inglés español [Bash]
Publicado por: VirajeCR en 9 Junio 2010, 00:55 am
Excelente aporte mi amigo.

Gracias por compartir.


Título: Re: Traductor inglés español [Bash]
Publicado por: luinuz en 9 Junio 2010, 02:16 am
Muy bueno, justo estaba buscando una url que diera un servicio parecido para parsearla.


Título: Re: Traductor inglés español [Bash]
Publicado por: leogtz en 9 Junio 2010, 02:34 am
Gracias.


Título: Re: Traductor inglés español [Bash]
Publicado por: luinuz en 9 Junio 2010, 02:48 am
Ya por fin tengo completo mi script. Uso tu linea cuando detecto que es un texto. Si es solo una palabra te busca la definicion en el diccionario dandote varias acepciones y ejemplos.
Y ya aprovechando tambien se le pueden añadir mas idiomas y mas direcciones facilmente.


Código:
function translate () {
    if [ $# = 0 ] || [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
        echo -e "Fetch translation from google. Usage 'translate text' or 'translate world'"
        return
    fi
local TEMP_FILE="/tmp/deleteme.$$"
if [ $# -gt 1 ]; then
local IS_WORD="false"
else
local IS_WORD="true"
fi

    echo "********************************************************"
    echo " Choose the direction to translate '$*'"
    echo "********************************************************"
    echo " 0 - spanish to english"
    echo " 1 - english to spanish"
    echo " [Other] EXIT"
    echo "********************************************************"
    echo -n "Enter your menu choice: "
    read OPTION
echo

    local SRC=en
    local DST=es
    case $OPTION in
        0)       SRC=es; DST=en;;
        1)       SRC=en; DST=es;;
        *)       echo "Exit"; return;;
    esac
    local LNG=`echo "$LANG" | cut -d '_' -f 1`
    local CHARSET=`echo $LANG | cut -d '.' -f 2` #usefull if charset is unicode

if [ "$IS_WORD" = "true" ]; then
   lynx -accept_all_cookies -dump -hiddenlinks=ignore -nonumbers -assume_charset=$CHARSET -display_charset=$CHARSET "http://www.google.com/dictionary?aq=f&langpair=${SRC}|${DST}&q=${1}&hl=$LNG"| grep -C 2 -A 5 -w "*" > /$TEMP_FILE

if [ ! -s $TEMP_FILE ]; then
   echo "No translation for '$1'"
else
   cat $TEMP_FILE
fi
rm -f $TEMP_FILE
else
wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$@&langpair=${SRC}|${DST}" | sed 's/.*"translatedText":"\([^"]*\)".*}/\1\n/';
fi
}


Título: Re: Traductor inglés español [Bash]
Publicado por: Darioxhcx en 9 Junio 2010, 15:57 pm
que grande leo.. veo que seguis haciendo cosas interesantes ;D
saludos


Título: Re: Traductor inglés español [Bash]
Publicado por: leogtz en 9 Junio 2010, 22:07 pm
que grande leo.. veo que seguis haciendo cosas interesantes ;D
saludos
Cositas..., naaaa, son pequeños scripts para mi uso personal.

Saludos.