.
     
» Ajax Links          

Plugins xchat en python

1 Abr 2009 | Escrito por: lopz | En: Python
Plugins para xchat en python

Hola, bueno, aquí hice un pequeño plugin en python para xchat, su función es trasladar lo que uno escribe a cualquier lenguaje que soporte google translate, ya que uso este motor para realizar el traslado de las palabras y frases completas, su función es bien simple y uso es bien simple, pasará a explicar a continucación como instalarlo y usarlo:

Primero bajamos el código de plugins y lo guardamos en el directorio de xchat, normalmente está en /home/TU_USER/.xchat2/ lo cuardamos con el nombre del pyTrans.py, luego si abrimos el xchat lo tendría que cargar automáticamente, pero si no lo hace, podemos hacerlo nosotros escribiendo en la caja de entrada de texto del xchat el siguiente comando:

Code:
/py load pyTrans.py

y nos tendría que mostrar algo como:
pyTrans lang, loaded!!

Entonces ya habrá cargado el plugins si no lo hizo al iniciar el xchat, normalmente o siempre carga los plugins cuando se inicia.

Bueno, ahora es tan simple como poner "/t hola" (sin las comillas) en la entrada del xchat y el texto saldrá traducido al canal directo para que lo lean los usuarios, el plugins soporta la traducción de múltiples idiomas, tantos como soporta google translate, ya que usa este motor, por default el plugin está configurado para traducir del español al ingles, pero eso se puede configurar solo cambiando los valores de las variables a y b, también está la lista de lenguajes soportados, puedes realizar la combinación que desees.

Aquí dejaré el código pegado, lo que tienes que hacer es guardarlo con el nombre de pyTrans.py, o el nombre que quieras, pero recuerda que para cargarlo tienes que usar el mismo nombre /py loud nombre_script.py



Code:

# -*- coding: utf-8 -*-

# XChat translato spanish to english plugin
# Copyright (C) 2009 Jorge J. Lopez C. <lowlifebob[at]gmail[point]com>
# weblog : http://www.lopz.org

import xchat
import httplib

__module_name__ = "pyTransXchat"
__module_version__ = "1.0"
__module_description__ = "pyTrans lang"

# Lang. support
"""
sq : albanés
de : alemán
ar : árabe
bg : búlgaro
ca : catalán
cs : checo
zh-CN : chino
ko : coreano
hr : croata
da : danés
sk : eslovaco
sl : esloveno
es : español
et : estonio
fi : finlandés
fr : francés
gl : gallego
el : griego
iw : hebreo
hi : hindi
nl : holandés
hu : húngaro
id : indonesio
en : inglés
it : italiano
ja : japonés
lv : letón
lt : lituano
mt : maltés
no : noruego
pl : polaco
pt : portugués
ro : rumano
ru : ruso
sr : serbio
sv : sueco
tl : tagalo
th : tailandés
tr : turco
uk : ucraniano
vi : vietnamita
"""

a = "es"
b = "en"

const_dom_trans = "translate.google.es"
const_url_trans = "/translate_a/t?client=t&text=%s&sl=" + a + "&tl=" + b

def quote(s, safe = '/'):
   """ quote('abc def') -> 'abc%20def' """
   always_safe = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'
               'abcdefghijklmnopqrstuvwxyz'
               '0123456789' '_.-')
   _safemaps = {}

   cachekey = (safe, always_safe)

   try:
      safe_map = _safemaps[cachekey]
   except KeyError:
      safe += always_safe
      safe_map = {}
      for i in range(256):
         c = chr(i)
         safe_map[c] = (c in safe) and c or ('%%%02X' % i)
      _safemaps[cachekey] = safe_map
   res = map(safe_map.__getitem__, s)
   return ''.join(res)

def download(dom, url, word=None):
   if word:
      headers = {
               "User-Agent": "Mozilla/5.0 (X11; U; Linux i686; es-ES; \
                rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3",
               "Accept": "text/html,application/xhtml+xml,application/xml; \
               q=0.9,*/*;q=0.8",
               "Accept-Language": "es-es,es;q=0.8,en-us;q=0.5,en;q=0.3",
               "Accept-Charset": "UTF-8,*",
               "Keep-Alive": "300",
               "Connection": "keep-alive"
               }

      # conectamos con el servidor
      conn = httplib.HTTPConnection(dom, 80)
      # hacemos la peticion a la imagen
      conn.request ("GET", (url % word), None, headers)
      resp = conn.getresponse()
      return resp
   else:
      pass


def main(words, word_eol, userdata):
   try:
      words = " ".join(words[1:])
      trans = download(const_dom_trans, const_url_trans, quote(words)).read()
      resp = trans[1:-1]
      xchat.command("msg %s %s" % (xchat.get_info("channel"), resp))   
   except:
      xchat.prnt("use: /t words")      
   return xchat.EAT_ALL

xchat.hook_command("t", main, help="/t words")
xchat.prnt(__module_description__ + ", loaded!!")



Y aquí está el mismo code pero en otra página http://dpaste.com/22396/
algo coloreado y con mejor aspecto

Cualquier duda, sugerencia, etc, por favor un comentario, o si lanza algun error el plugin igual, para así corregirlo, espero que a más de uno le sirva

Aquí una pequeña captura del plugin en funcionamiento, así debería ser la forma de enviarle el texto para que traduzca, caso contrario se usaría normalmente el xchat



Saludos!


   

 
Reygun6 Jul 2010
i have same problem.

xchat silverex + perl 5.10

format to translate is confuse

lopz29 Nov 2009
hey
How are you?
It seems that Google Translate has changed the way they responded, I have to modify the script a bit so you can obtain the amount of "trans".
In these days I'll correct and the script will go up again, thank you very much for reporting the bug.

Greetings

Jimmy27 Nov 2009
Hi -- I'm having a small problem with your script. I switched a to be (since I'm look for functionality that rather translates from en to es, not es to en) -- anyway, if a type '/t This is a test', this is what happens:


<Jimmy> "sentences":[{"trans":"Esta es una prueba","orig":"This is a test","translit":""}],"src":"en"

Any tips on how I could resolve this problem, please?

Thanks!

  Pagina 1 de 1
 

Envia tu Comentario:
Los comentarios ofensivos o fuera de lugar seran borrados.
BBcode: on
Smilies: on
Nick:


smile wink surprised tongue lol sad angry cry 



Status: Comentario aun no enviado


Powered by MySql' Powered by PHP XHTML Valido CSS Valido

Tiempo de carga del servidor: 0.0526