Googletrans dejó de funcionar con el error. El objeto “Ninguno” no tiene ningún atributo “grupo”.

Estaba probando googletrans y estaba funcionando bastante bien. Desde esta mañana comencé a recibir por debajo del error. Revisé varias publicaciones de stackoverflow y otros sitios y encontré que probablemente mi ip está prohibida para usar el servicio por algún tiempo. ¿Intenté usar el proveedor de servicios múltiples de Internet que tiene diferentes direcciones IP y aún con el mismo problema? También traté de usar googletrans en diferentes computadoras portátiles, sigue siendo el mismo problema. ¿ googletrans roto el paquete de googletrans o algo que Google hizo al final?

 >>> from googletrans import Translator >>> translator = Translator() >>> translator.translate('안녕하세요.') Traceback (most recent call last): File "", line 1, in  translator.translate('안녕하세요.') File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/googletrans/client.py", line 172, in translate data = self._translate(text, dest, src) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/googletrans/client.py", line 75, in _translate token = self.token_acquirer.do(text) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/googletrans/gtoken.py", line 180, in do self._update() File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/googletrans/gtoken.py", line 59, in _update code = unicode(self.RE_TKK.search(r.text).group(1)).replace('var ', '') AttributeError: 'NoneType' object has no attribute 'group' 

Aparentemente es un problema reciente y generalizado por parte de Google. Al citar varias discusiones de Github, sucede cuando Google le envía directamente el token en bruto.

Se está discutiendo en este momento y ya existe una solicitud de extracción para solucionarlo, por lo que debería resolverse en los próximos días.

Para referencia, ver:

https://github.com/ssut/py-googletrans/issues/48 <- exactamente el mismo problema reportado en el repositorio de Github https://github.com/pndurette/gTTS/issues/60 <- aparentemente el mismo problema en una biblioteca de texto a voz https://github.com/ssut/py-googletrans/pull/78 <- solicitud de extracción para solucionar el problema

Para aplicar este parche (sin esperar a que se acepte la solicitud de extracción), simplemente instale la biblioteca desde el repository bifurcado https://github.com/BoseCorp/py-googletrans.git (desinstale primero la biblioteca oficial):

 $ pip uninstall googletrans $ git clone https://github.com/BoseCorp/py-googletrans.git $ cd ./py-googletrans $ python setup.py install 

Puede clonarlo en cualquier lugar de su sistema e instalarlo globalmente o dentro de un virtualenv .

Aquí hay una solución no oficial a este problema, como Darkblader24 declaró en: https://github.com/ssut/py-googletrans/pull/78

Actualizar gtoken.py de esta manera:

  RE_TKK = re.compile(r'TKK=eval\(\'\(\(function\(\)\{(.+?)\}\)\(\)\)\'\);', re.DOTALL) RE_RAWTKK = re.compile(r'TKK=\'([^\']*)\';',re.DOTALL) def __init__(self, tkk='0', session=None, host='translate.google.com'): self.session = session or requests.Session() self.tkk = tkk self.host = host if 'http' in host else 'https://' + host def _update(self): """update tkk """ # we don't need to update the base TKK value when it is still valid now = math.floor(int(time.time() * 1000) / 3600000.0) if self.tkk and int(self.tkk.split('.')[0]) == now: return r = self.session.get(self.host) rawtkk = self.RE_RAWTKK.search(r.text) if rawtkk: self.tkk = rawtkk.group(1) return 

Se corrigió aquí https://pypi.org/project/py-translator/

$ pip3 install py_translator == 1.8.9

 from py_translator import Translator s = Translator().translate(text='Hello my friend', dest='es').text print(s) 

fuera: Hola mi amigo

 pip uninstall googletrans googletrans-temp pip install googletrans-temp 

Me funcionó en Win10 y Ubuntu 16 (Python 3.6) a partir de 2019.2.24: consulte una de las respuestas en https://github.com/ssut/py-googletrans/issues/94 . El antiguo arreglo pip install git+https://github.com/BoseCorp/py-googletrans.git --upgrade ya no funciona más aquí.

Hacer el siguiente cambio a gtoken lo hizo funcionar para mí:

 RE_TKK = re.compile(r'tkk:\'(.+?)\'') def __init__(self, tkk='0', session=None, host='translate.google.com'): self.session = session or requests.Session() self.tkk = tkk self.host = host if 'http' in host else 'https://' + host def _update(self): """update tkk """ # we don't need to update the base TKK value when it is still valid r = self.session.get(self.host) self.tkk = self.RE_TKK.findall(r.text)[0] now = math.floor(int(time.time() * 1000) / 3600000.0) if self.tkk and int(self.tkk.split('.')[0]) == now: return # this will be the same as python code after stripping out a reserved word 'var' code = unicode(self.RE_TKK.search(r.text).group(1)).replace('var ', '') # unescape special ascii characters such like a \x3d(=) 

Obtuve este fragmento de la entrada aquí .

Tenga en cuenta que esto es ligeramente diferente de otros cambios sugeridos anteriormente por Kerem.

Para otras personas no iniciadas como yo, gtoken.py se puede encontrar en AppData \ Local \ Continuum \ anaconda3 \ site-packages \ googletrans en una máquina con Windows que utiliza Anaconda. Para encontrar AppData, vaya a la barra de direcciones en el explorador de archivos, escriba ‘% AppData%’ y presione Enter.