Почему «Googletrans.Translator» вдруг перестал работать? - PullRequest
0 голосов
/ 21 сентября 2018

Я написал несколько строк, используя функцию Переводчик в Googletrans несколько дней назад.Но я пытался перезапустить эти строки сегодня, и это выдало ряд ошибок ... Я действительно смущен этим.Если у вас возникла подобная проблема, пожалуйста, прокомментируйте ниже.Любая помощь приветствуется !!

from googletrans import Translator
translator = Translator()
trans1 = translator.translate('Hello', dest = 'es')

Я получил следующую ошибку:

AttributeError                            Traceback (most recent call last)
<ipython-input-19-c0f9e5495a2f> in <module>()
----> 1 trans1 = translator.translate('Hello', dest = 'es')

~\AppData\Local\Continuum\anaconda3\lib\site-packages\googletrans\client.py in translate(self, text, dest, src)
    170 
    171         origin = text
--> 172         data = self._translate(text, dest, src)
    173 
    174         # this code will be updated when the format is changed.

~\AppData\Local\Continuum\anaconda3\lib\site-packages\googletrans\client.py in _translate(self, text, dest, src)
     73             text = text.decode('utf-8')
     74 
---> 75         token = self.token_acquirer.do(text)
     76         params = utils.build_params(query=text, src=src, dest=dest,
     77                                     token=token)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\googletrans\gtoken.py in do(self, text)
    178 
    179     def do(self, text):
--> 180         self._update()
    181         tk = self.acquire(text)
    182         return tk

~\AppData\Local\Continuum\anaconda3\lib\site-packages\googletrans\gtoken.py in _update(self)
     57         r = self.session.get(self.host)
     58         # this will be the same as python code after stripping out a reserved word 'var'
---> 59         code = unicode(self.RE_TKK.search(r.text).group(1)).replace('var ', '')
     60         # unescape special ascii characters such like a \x3d(=)
     61         if PY3:  # pragma: no cover

AttributeError: 'NoneType' object has no attribute 'group'

Я пытался исследовать эту ошибку, но ничего не получил.Больше всего меня смутило то, что этот простой код прекрасно работал 3 дня назад.Но когда я открываюсь этим утром, я выскакивал ошибки.Пожалуйста помоги.Большое вам спасибо!

Ответы [ 4 ]

0 голосов
/ 11 декабря 2018

Я получил решение ниже от этой ссылки.

Решение:

pip install git+https://github.com/BoseCorp/py-googletrans.git --upgrade

Это отлично сработало для меня!

0 голосов
/ 03 октября 2018

ПРЯМОЕ КОПИРОВАНИЕ ИЗ: googletrans перестал работать с ошибкой «У объекта NoneType» нет атрибута «группа»

По-видимому, это недавняя и широко распространенная проблема на стороне Google.Цитируя различные обсуждения на Github, это происходит, когда Google отправляет вам напрямую необработанный токен.

Это обсуждается прямо сейчас, и уже есть запрос на исправление, чтобы исправить это, поэтому он должен быть решен в ближайшие несколько дней.

Для справки см .:

https://github.com/ssut/py-googletrans/issues/48 <- точно такая же проблема, о которой сообщалось в репозитории Github <a href="https://github.com/pndurette/gTTS/issues/60" rel="nofollow noreferrer">https://github.com/pndurette/gTTS/issues/60 <- казалось бы, та же проблема с текстом на-speech library <a href="https://github.com/ssut/py-googletrans/pull/78" rel="nofollow noreferrer">https://github.com/ssut/py-googletrans/pull/78 <- запрос на извлечение для устранения проблемы </p>

Чтобы применить этот патч (не дожидаясь принятия запроса на извлечение), просто установите библиотеку из разветвленного репо 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.

0 голосов
/ 02 декабря 2018

Обновление py-googletrans/googletrans/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
0 голосов
/ 23 сентября 2018

Google изменил способ создания токена.Там нет никакого исправления на момент написания.Вам нужно дождаться обновления googletrans.

...