googletrans停止使用错误'NoneType'对象没有属性'group'

ste*_*veJ 21 python

我正在努力googletrans,它运作得很好.从今天早上起,我开始低于错误.我经历了stackoverflow和其他网站的多个帖子,发现可能我的ip被禁止使用该服务一段时间.我尝试使用多个服务提供商互联网,有不同的IP和stil面临同样的问题?我也尝试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'
Run Code Online (Sandbox Code Playgroud)

Mor*_*itz 113

20 年 12 月 6 日更新:发布了带有修复程序的新“官方”alpha 版 googletrans

像这样安装 alpha 版本:

pip install googletrans==3.1.0a0
Run Code Online (Sandbox Code Playgroud)

翻译示例:

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'
Run Code Online (Sandbox Code Playgroud)

如果它不起作用,请尝试像这样指定服务 url:

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

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

10.12.20 更新:发布了另一个修复程序

正如@DesiKeki 和@Ahmed Breem 所指出的,还有一个似乎对几个人都有效的修复方法:

pip install googletrans==4.0.0-rc1
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,这也可以在不指定 url 的情况下工作。不过,在 en 和 es 之间进行翻译。 (2认同)
  • @Moritz更新,它突然停止为我工作,返回原始单词而不是西班牙语翻译。必须切换到 google_trans_new (2认同)
  • @Moritz我和@ludgo有同样的问题。该软件包运行了 3 天,之后只返回相同的文本。我尝试放置“service_urls”,但它给出了著名的错误,该错误与令牌有关并且仍然是相同的文本。我不确定为什么会发生这种情况,但我在 github 上发布了一个问题。(链接)[https://github.com/ssut/py-googletrans/issues/254] (2认同)
  • @StackOffend:根据 github 的说法,贡献者 py-googletrans 和 google_trans_new 不是同一个人。我的另一个朋友安装了上面描述的 py-googletrans alpha 版本,它对他们有用。(我刚刚又尝试了一次,它仍然对我有用)。最好的方法可能是尝试 alpha 版本,如果它不适合您,请切换到 google_trans_new。不幸的是,不知道问题从何而来:/ (2认同)

bud*_*mat 51

不幸的是,尽管有许多建议的修复方案,但我googletrans既不能工作也不能工作。google_trans_new

我的解决方案是切换到deep_translator包:

pip install -U deep-translator
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它:

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

请参阅文档以获取更多信息。


小智 41

试试 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!
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用!谢谢! (2认同)
  • 拯救了我的一天,谢谢! (2认同)

Mal*_*dus 25

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

它现在正在讨论,并且已经有一个拉动请求来修复它,因此应该在接下来的几天内解决.

供参考,请参阅:

https://github.com/ssut/py-googletrans/issues/48 < - 在Github repo https://github.com/pndurette/gTTS/issues/60上报告完全相同的问题 < - 看似相同的问题文本到语音库 https://github.com/ssut/py-googletrans/pull/78 < - 提出解决问题的请求

要应用此补丁(无需等待拉取请求被接受),只需从分叉回购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
Run Code Online (Sandbox Code Playgroud)

您可以在系统的任何位置克隆它,并在全局或内部安装它virtualenv.

  • 由于某些原因,它仅在我添加如下服务 URL 参数时才有效:translator = Translator(service_urls=['translate.googleapis.com']) (4认同)
  • 在您现在面临此问题的代码副本上:ValueError:无法解码JSON对象 (3认同)
  • 嗯..我完全按照上面的描述卸载并gitcloned,但我仍然收到“AttributeError:'NoneType'对象没有属性'group'” (3认同)

Har*_*jah 21

截至 2021 年 9 月更新答案

pip uninstall googletrans==4.0.0-rc1

pip install googletrans==3.1.0a0
Run Code Online (Sandbox Code Playgroud)

3.1.0a0 版本也支持批量翻译!


Ker*_*rem 10

以下是Darkblader24中提到的这个问题的非官方修复: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
Run Code Online (Sandbox Code Playgroud)

  • 另一个解决方案对我不起作用,但这个解决方案对我有用!谢谢! (2认同)

小智 10

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

它可以安装如下:

pip install googletrans==4.0.0-rc1
Run Code Online (Sandbox Code Playgroud)

用法:

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)
Run Code Online (Sandbox Code Playgroud)

  • 它于 2022 年 2 月 14 日在 Linux 上的 Python 3.8.10 中适用于我。谢谢! (2认同)

小智 6

修复在这里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)
Run Code Online (Sandbox Code Playgroud)

出:Hola mi amigo


con*_* yu 5

pip uninstall googletrans googletrans-temp
pip install googletrans-temp
Run Code Online (Sandbox Code Playgroud)

从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在这里不再起作用。


小智 5

这对我有用:

pip install googletrans==4.0.0-rc1
Run Code Online (Sandbox Code Playgroud)

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


AKM*_*adi 5

到此答案时,您可以使用以下方法解决它:

卸载已安装的版本

pip uninstall googletrans
Run Code Online (Sandbox Code Playgroud)

安装以下版本

pip install googletrans==4.0.0rc1
Run Code Online (Sandbox Code Playgroud)

我希望这对你有用,因为它对我有用。

你现在可以试试:

from googletrans import Translator
translator = Translator()
ar = translator.translate('?????').text
print(ar)
Run Code Online (Sandbox Code Playgroud)