diff options
Diffstat (limited to 'ATRI/modules/google_translate')
| -rw-r--r-- | ATRI/modules/google_translate/__init__.py | 142 | 
1 files changed, 0 insertions, 142 deletions
| diff --git a/ATRI/modules/google_translate/__init__.py b/ATRI/modules/google_translate/__init__.py deleted file mode 100644 index c42b774..0000000 --- a/ATRI/modules/google_translate/__init__.py +++ /dev/null @@ -1,142 +0,0 @@ -import re -import requests -import demjson - - -def int_overflow(val): -    maxint = 2147483647 -    if not -maxint - 1 <= val <= maxint: -        val = (val + (maxint + 1)) % (2 * (maxint + 1)) - maxint - 1 -    return val - - -def ansii(a): -    return a.encode('gbk') - - -def kr(a: int, b): -    c = 0 -    b = ansii(b) -    while c < len(b) - 2: -        d = b[c + 2] -        d = d - 87 if ansii("a")[0] <= d else int(chr(d)) -        d = a >> d if ansii("+")[0] == b[c + 1] else a << d -        d = int_overflow(d) -        a = a + d & 4294967295 if ansii("+")[0] == b[c] else a ^ d -        c += 3 -    return int_overflow(a) - - -def mr(q, TKK): -    e = q.encode() -    d = str(TKK).split('.') -    a = int(d[0]) -    b = int(d[0]) - -    for f in e: -        a += f -        a = kr(a, "+-a^+6") -    a = kr(a, "+-3^+b+-f") -    a &= 0xffffffff  # 出错了,转回无符号 -    a ^= (int(d[1]) or 0) -    if 0 > a: -        a = (a & 2147483647) + 2147483648 -    a %= 1E6 -    a = int(a) - -    # c = '&tk=' -    # return c + (str(a) + "." + str(a ^ b)) -    return (str(a) + "." + str(a ^ b)) - - -""" -def Sr(a, TKK): -    a = ''.join(a['a']['b']['q']) -    return mr(a, TKK) -d = { -    'a':{ -        'a': ['q'], -        'b': { -            'q': ['me'] -        }, -        'c': 1, -        'g': 1 -    }, -    'b': 1, -    'c': None, -    'j': False, -} -TKK = '426151.3141811846' -tk = Sr(d, TKK) -print(tk) -""" - -session = requests.session() - - -def translate(q='hello', source='en', to='zh-CN', tkk=None): -    """ -    限制最大5000,按utf-8算,一个汉字算1个,1个英文算一个,超过会失败 -    """ -    if not tkk: -        tkk = '426151.3141811846' -    tk = mr(q, tkk) -    params = { -        'client': 't', -        'sl': source, -        'tl': to, -        'hl': source, -        'dt': [ -            'at', 'qca', 'rw', 'rm', 'ss', 't' -        ], -        'tk': tk, -        'ie': 'UTF-8', -        'oe': 'UTF-8', -        'pc': 1, -        'kc': 1, -        'ssel': 0, -        'otf': 1 -    } -    data = { -        'q': q -    } -    headers = { -        'Referer': 'https://translate.google.cn/', -        'Host': 'translate.google.cn', -    } -    resp = requests.post('https://translate.google.cn/translate_a/single', params=params, data=data, headers=headers) -    if resp.status_code == 200: -        resp.encoding = 'utf-8' -        data = resp.json() - -        result = [] -        result.append(''.join(map(lambda x: x[0], data[0][:-1]))) -        result.append(data[0][-1][-1]) -        return result -    else: -        return None - - -def ref_words(q='hello', source='en', to='zh-CN'): -    params = { -        'q': q, -        'client': 'translate-web', -        'ds': 'translate', -        'hl': source, -        'requiredfields': f'tl:{to}', -        'callback': 'window.google.ref_words' -    } -    url = 'https://clients1.google.com/complete/search?' -    headers = { -        'Referer': 'https://translate.google.cn/', -        'Host': 'clients1.google.cn', -    } -    resp = session.get(url, params=params, headers=headers) -    if resp.status_code == 200: -        resp.encoding = 'utf-8' -        result = re.search(r'window.google.ref_words\((.*)\)', resp.text).group(1) -        json_data = demjson.decode(result) -        data_list = list(map(lambda x: x[0], json_data[1])) -        return data_list -    else: -        return None
\ No newline at end of file | 
