summaryrefslogtreecommitdiff
path: root/AyaBot/plugins/translate.py
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2020-06-06 17:37:17 +0800
committerKyomotoi <[email protected]>2020-06-06 17:37:17 +0800
commitb6ee52b1e53cd44f43b588a59d590bb7cf02b6d5 (patch)
treef41ee7f886cb6aa979fd6de7d29d0ea5521e2df3 /AyaBot/plugins/translate.py
parent69e577fa093fdb8fdf3bc8f23b35951d8abb3b2c (diff)
downloadATRI-b6ee52b1e53cd44f43b588a59d590bb7cf02b6d5.tar.gz
ATRI-b6ee52b1e53cd44f43b588a59d590bb7cf02b6d5.tar.bz2
ATRI-b6ee52b1e53cd44f43b588a59d590bb7cf02b6d5.zip
some changes for weather
Diffstat (limited to 'AyaBot/plugins/translate.py')
-rw-r--r--AyaBot/plugins/translate.py150
1 files changed, 8 insertions, 142 deletions
diff --git a/AyaBot/plugins/translate.py b/AyaBot/plugins/translate.py
index b49aedd..6422380 100644
--- a/AyaBot/plugins/translate.py
+++ b/AyaBot/plugins/translate.py
@@ -1,155 +1,21 @@
import re
-import requests
+import sys
+sys.path.append('D:\code\Aya\AyaBot\plugins\Module')
import demjson
+import requests
from pprint import pformat, pprint
from urllib.parse import urlencode
from nonebot import on_command, CommandSession
+import google_translate
#FROM Joenothing-lst
-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
-
-
@on_command('ja_to_zh', aliases=('日语翻译',), only_to_me=False)
async def _(session: CommandSession):
if ' ' in session.ctx['raw_message']:
msg=session.ctx['raw_message'][5:]
- re_msg = translate(msg[:4999], to='zh-CN', source='ja')
+ re_msg = google_translate.translate(msg[:4999], to='zh-CN', source='ja')
if re_msg[0]!='' and re_msg[0]!=msg:
await session.send(re_msg[0])
@@ -157,7 +23,7 @@ async def _(session: CommandSession):
async def _(session: CommandSession):
if ' ' in session.ctx['raw_message']:
msg=session.ctx['raw_message'][5:]
- re_msg = translate(msg[:4999], to='zh-CN', source='en')
+ re_msg = google_translate.translate(msg[:4999], to='zh-CN', source='en')
if re_msg[0]!='':
await session.send(re_msg[0])
@@ -165,7 +31,7 @@ async def _(session: CommandSession):
async def _(session: CommandSession):
if ' ' in session.ctx['raw_message']:
msg=session.ctx['raw_message'][5:]
- re_msg = translate(msg[:4999], to='ja', source='zh-CN')
+ re_msg = google_translate.translate(msg[:4999], to='ja', source='zh-CN')
if re_msg[0]!='':
await session.send(re_msg[0])
@@ -173,6 +39,6 @@ async def _(session: CommandSession):
async def _(session: CommandSession):
if ' ' in session.ctx['raw_message']:
msg=session.ctx['raw_message'][5:]
- re_msg = translate(msg[:4999], to='en', source='zh-CN')
+ re_msg = google_translate.translate(msg[:4999], to='en', source='zh-CN')
if re_msg[0]!='':
await session.send(re_msg[0]) \ No newline at end of file