我正在尝试googletrans
,并且运行良好。从今天早上开始,我开始遇到错误。我浏览了来自stackoverflow和其他网站的多个帖子,发现可能我的ip被禁止使用该服务一段时间。我尝试使用具有不同ip和stil的多个服务提供商Internet面临同一问题?我还尝试在不同的笔记本电脑上使用googletrans
,仍然是同一问题。.googletrans
的包装是否损坏或google到底做了什么?
>>> 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'
答案 0 :(得分:25)
显然,这是Google方面最近普遍存在的问题。 引用各种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 <-拉动请求以解决此问题
要应用此补丁程序(无需等待拉取请求被接受),只需从派生仓库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
内安装。
答案 1 :(得分:20)
按如下所示安装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'
如果它不起作用,请尝试这样指定服务网址:
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
如果以上方法都不适合您,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
答案 2 :(得分: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
答案 3 :(得分:9)
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)
答案 4 :(得分:7)
尝试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!
答案 5 :(得分:6)
固定在这里https://pypi.org/project/py-translator/
$ pip3 install py_translator == 1.8.9
style="background-image: url("Stock/uploads/<?php echo $row ["image_location"]; ?>");
out:Hola mi amigo
答案 6 :(得分:5)
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
在这里不再起作用。
答案 7 :(得分:2)
到此答案时,您可以通过以下方式解决:
卸载您已安装的
版本pip uninstall googletrans
安装以下版本
pip install googletrans==4.0.0rc1
我希望这对你有用,因为它对我有用。
你现在可以试试:
from googletrans import Translator
translator = Translator()
ar = translator.translate('مرحبا').text
print(ar)
答案 8 :(得分:1)
事实证明,将呼叫放在try / except块中为我解决了问题
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)
答案 9 :(得分:0)
对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(=)
我从票证here中获得了此摘要。
请注意,这与Kerem先前建议的其他更改略有不同。
对于像我这样的其他未初学者,可以在使用Anaconda的Windows机器上的AppData \ Local \ Continuum \ anaconda3 \ site-packages \ googletrans中找到gtoken.py。要查找AppData,请进入文件资源管理器中的地址栏,键入'%AppData%',然后按Enter。
答案 10 :(得分:0)
这对我有用:
pip install googletrans==4.0.0-rc1
原始答案可以在这里找到: https://github.com/ssut/py-googletrans/issues/234#issuecomment-742460612
答案 11 :(得分:0)
最新的python不支持googletrans,所以你需要卸载它
安装新的 googletrans ( pip install googletrans==3.1.0a0)