Googletrans 停止使用错误‘ NoneType’对象没有属性‘ group’

我正在尝试 googletrans,它工作得很好。从今天早上开始,我开始得到以下错误。我浏览了很多来自 stackoverflow 和其他网站的帖子,发现我的 IP 可能被禁止在某个时候使用这项服务。我尝试使用多个服务提供商的互联网,有不同的知识产权,仍然面临同样的问题?我也尝试在不同的笔记本电脑上使用 googletrans,仍然是同样的问题。.是 googletrans软件包坏了还是谷歌做了什么在他们的结束?

>>> from googletrans import Translator
>>> translator = Translator()
>>> translator.translate('안녕하세요.')


Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
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'
147479 次浏览

更新01/12/2020: 这个问题最近再次出现,(显然)是由于谷歌翻译 API 的一些变化造成的。

在这个 Github 的问题中正在(再次)讨论一个解决方案。虽然还没有一个明确的解决方案,但拉请求似乎解决了这个问题: https://github.com/ssut/py-googletrans/pull/237

当我们等待它被批准的时候,它可以这样安装:

$ pip uninstall googletrans
$ git clone https://github.com/alainrouillon/py-googletrans.git
$ cd ./py-googletrans
$ git checkout origin/feature/enhance-use-of-direct-api
$ python setup.py install

原答案 :

显然,这是谷歌方面最近出现的一个普遍问题。 引用各种 Github 讨论,当 Google 直接向您发送原始令牌时,就会发生这种情况。

目前正在讨论这个问题,已经有一个请求来修复它,所以应该会在未来几天内解决。

有关参考,请参阅:

Https://Github.com/ssut/py-googletrans/issues/48 —— Github 回购报告中报告的完全相同的问题 Https://github.com/pndurette/gtts/issues/60 < ——在文本到语音库中似乎是同样的问题 Https://github.com/ssut/py-googletrans/pull/78 < ——请求修复该问题

要应用这个补丁(无需等待请求被接受) ,只需从分支的 repo https://github.com/BoseCorp/py-googletrans.git安装库(先卸载官方库) :

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

您可以在系统上的任何地方克隆它,并在全局范围内或在 virtualenv中安装它。

这里是一个非正式的修复这个问题,因为黑暗剑客24指出: https://github.com/ssut/py-googletrans/pull/78

像这样更新 gtoken.py:

    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
pip uninstall googletrans googletrans-temp
pip install googletrans-temp

从2019.2.24开始,我在 Win10和 Ubuntu 16(Python 3.6)中工作——请参考 https://github.com/ssut/py-googletrans/issues/94中的一个回复。旧的修复 pip install git+https://github.com/BoseCorp/py-googletrans.git --upgrade在这里不再工作了。

固定是在这里 https://pypi.org/project/py-translator/

$pip3 install py _ trans = = 1.8.9

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

你好,我的朋友

将下面的代码更改为 gtoken 对我来说很有用:

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(=)

我从票据 给你中获得了这个片段。

请注意,这与 Kerem 前面建议的其他更改略有不同。

对于像我这样的外行人来说,gtoken.py 可以在 AppData Local Continum anaconda3站点中找到——在 Windows 机器上使用 Anaconda 打包 googletrans。若要查找 AppData,请进入文件资源管理器中的地址栏,键入“% AppData%”,然后按 Enter。

事实证明,将调用放在 try/but 块中解决了我的问题

try:
langs = translator.detect(update.message.text)
if langs.lang == 'en':
foo(translator.translate(update.message.text,dest='zh-cn').text)
else:
bar(translator.translate(update.message.text,dest='en').text)
except Exception as e:
print(e)

更新06.12.20: 新的“官方”alpha 版本的 googletrans 已经发布了一个补丁

安装 alpha 版本如下:

pip install googletrans==3.1.0a0

翻译例子:

translator = Translator()
translation = translator.translate("Der Himmel ist blau und ich mag Bananen", dest='en')
print(translation.text)
#output: 'The sky is blue and I like bananas'

如果它不起作用,尝试像下面这样指定服务 URL:

from googletrans import Translator
translator = Translator(service_urls=['translate.googleapis.com'])
translator.translate("Der Himmel ist blau und ich mag Bananen", dest='en')

有关详细信息和更新,请参阅此处的讨论: https://github.com/ssut/py-googletrans/pull/237

更新10.12.20: 发布了另一个补丁

正如@DesiKeki 和@Ahmed Breem 指出的那样,还有另一种方法似乎对几个人有效:

pip install googletrans==4.0.0-rc1

Github 的讨论: https://github.com/ssut/py-googletrans/issues/234#issuecomment-742460612

以防上面的修复对您不起作用

如果上面的方法对你不起作用,google_trans_new似乎是一个很好的替代方法,对某些人有效。目前还不清楚为什么上面的修复对一些人有效而对另一些人没有效果。在这里查看有关安装和使用的详细信息: https://github.com/lushan88a/google_trans_new

#pip install google_trans_new


from google_trans_new import google_translator
translator = google_translator()
translate_text = translator.translate('สวัสดีจีน',lang_tgt='en')
print(translate_text)
#output: Hello china

试试 google _ trans _ new,它帮我解决了这个问题 Https://github.com/lushan88a/google_trans_new

pip install google_trans_new

from google_trans_new import google_translator
  

translator = google_translator()
translate_text = translator.translate('Hola mundo!', lang_src='es', lang_tgt='en')
print(translate_text)
-> Hello world!

这对我很有效:

pip install googletrans==4.0.0-rc1

原始答案可以在这里找到: Https://github.com/ssut/py-googletrans/issues/234#issuecomment-742460612

更新10.12.20: 发布新的 Alpha 版本(稳定版候选) : 4.0.0-rc1

安装方式如下:

pip install googletrans==4.0.0-rc1

用法:

translation = translator.translate('이 문장은 한글로 쓰여졌습니다.', dest='en')
print(translation.text)
>>This sentence is written in Korean.
detected_lang = translator.detect('mein english me hindi likh raha hoon')
print(detected_lang)
>>Detected(lang=hi, confidence=None)
detected_lang = translator.detect('이 문장은 한글로 쓰여졌습니다.')
print(detected_lang)
>>Detected(lang=ko, confidence=None)

在得到这个答案之前,你可以用下面的方法来解答:

卸载已安装的

pip uninstall googletrans

安装以下版本

pip install googletrans==4.0.0rc1

我希望这对你有用,就像对我一样。

你现在可以试试:

from googletrans import Translator
translator = Translator()
ar = translator.translate('مرحبا').text
print(ar)

最新的 python 不支持 googletrans,所以您需要卸载它

安装新的 googletrans (pip install googletrans = = 3.1.0 a0)

截至2021年9月更新答案

pip uninstall googletrans==4.0.0-rc1


pip install googletrans==3.1.0a0

3.1.0 a0版本也可以进行批量翻译!

这就是我解决问题的方法。

pip3 uninstall googletrans
pip3 install googletrans==3.1.0a0

首先,您需要卸载以前的版本并安装3.1.0版本。

使用来自 给你的翻译程序包

  1. 它的工作(;
  2. 支持超过谷歌

安装:

pip install translators --upgrade

用法:


>>> import translators as ts
Using Israel server backend.
>>> ts.google('שלום' , to_language = 'es')
'Hola'
    



不幸的是,我既不能得到 googletrans也不能得到 google_trans_new的工作,尽管有许多提议的修复程序。

我的解决方案是转向 deep_translator软件包:

pip install -U deep-translator

然后你可以这样使用它:

>>> from deep_translator import GoogleTranslator
>>> GoogleTranslator(source='auto', target='de').translate("keep it up, you are awesome")
'weiter so, du bist toll'

有关更多信息,请参见 文件

Try-pip install googletrans = = 3.1.0 a0

如果你正在使用 Google Colab 或 Jupiter 笔记本,那么运行:

!pip uninstall googletrans

重新启动运行库,然后执行:

!pip install googletrans==4.0.0rc1