#! /usr/bin/env python
# -*- coding: utf-8 -*-

#==============================================================================
# qesen.py - Traductor ES -> EN basado en Google
# A partir de una idea vista en: http://www.pythondiario.com/search?q=traductor
#------------------------------------------------------------------------------
# FJA - fja@neocipres.com                                  Julio de 2018
#==============================================================================

import sys
import requests
import androidhelper


cad = "AndroidTranslate/5.3.0.RC02.130475354-53000263 5.1 phone \
    TRANSLATE_OPM5_TEST_1"
url = "https://translate.google.com/translate_a/single?client=at&dt=t&dt="
url = url + "ld&dt=qca&dt=rm&dt=bd&dj=1&hl=es-ES&ie=UTF-8&oe=UTF-8&inputm="
url = url + "2&otf=2&iid=1dd3b944-fa62-4b55-b330-74909a99969e"
droid = androidhelper.Android()
resultado = ''


def Traduccion(source, target, text):
    parametros = {'sl': source, 'tl': target, 'q': text}
    cabeceras = {"Charset": "UTF-8", "User-Agent": cad}
    response = requests.post(url, data=parametros, headers=cabeceras)
    if response.status_code == 200:
        for x in response.json()['sentences']:
            return x['trans']
    else:
        return "Ocurrió un error: %s" % str(response.status_code)

while True:
    try:
        entrada = droid.dialogGetInput("Traductor ES->EN", "Texto(exit->salir)")
        text = entrada.result
        if text == "exit":
            break
        else:
            resultado = Traduccion("es", "en", text)
            resul = resultado.encode('utf8')
            #droid.makeToast("Resultado: %s" % resul)
            droid.dialogCreateAlert('Resultado:', resul)
            boton_ok = droid.dialogSetPositiveButtonText('Aceptar')
            boton_rep = droid.dialogSetNeutralButtonText('Repetir')
            boton_cancelar = droid.dialogSetNegativeButtonText('Salir')
            droid.dialogShow()
            droid.ttsSpeak(resul)
            resp = droid.dialogGetResponse().result
            if resp['which'] == 'positive':
                continue
            elif resp['which'] == 'neutral':
                droid.ttsSpeak(resul)
                continue
            else:
                break

    except UnicodeEncodeError:
        print '\t Error: ', sys.exc_info()[0], '\n'
        print "\n Resultado: ", resultado.encode('latin1')

    except Exception as e:
        print '\n\t'
        print '\t Error: ', e, sys.exc_info()[0], '\n'