summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AyaBot/plugins/__pycache__/covid19.cpython-37.pycbin1607 -> 3945 bytes
-rw-r--r--AyaBot/plugins/__pycache__/r6invalid.cpython-37.pycbin0 -> 1371 bytes
-rw-r--r--AyaBot/plugins/covid19.py101
3 files changed, 98 insertions, 3 deletions
diff --git a/AyaBot/plugins/__pycache__/covid19.cpython-37.pyc b/AyaBot/plugins/__pycache__/covid19.cpython-37.pyc
index da2efcb..edecda4 100644
--- a/AyaBot/plugins/__pycache__/covid19.cpython-37.pyc
+++ b/AyaBot/plugins/__pycache__/covid19.cpython-37.pyc
Binary files differ
diff --git a/AyaBot/plugins/__pycache__/r6invalid.cpython-37.pyc b/AyaBot/plugins/__pycache__/r6invalid.cpython-37.pyc
new file mode 100644
index 0000000..3798fd4
--- /dev/null
+++ b/AyaBot/plugins/__pycache__/r6invalid.cpython-37.pyc
Binary files differ
diff --git a/AyaBot/plugins/covid19.py b/AyaBot/plugins/covid19.py
index 1c9028c..1dbed70 100644
--- a/AyaBot/plugins/covid19.py
+++ b/AyaBot/plugins/covid19.py
@@ -1,5 +1,9 @@
+import re
import json
+import demjson
import requests
+from pprint import pformat, pprint
+from urllib.parse import urlencode
from nonebot import on_command, CommandSession
@@ -23,13 +27,104 @@ LIST = """截至: {lastChecked}
最后检查时间: {lastReported}"""
+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 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
+
+
@on_command('covid19', aliases=['疫情', '疫情查询', '疫情情况'], only_to_me=False)
async def covid19(session: CommandSession):
country = session.get('country', prompt='请用Eng键入需要查询的国家(例:China)')
+ re_msg = translate(country[:4999], to='en', source='zh-CN')
+ # if re_msg[0]!='':
+ # await session.send(re_msg[0])
await session.send('开始搜寻...\n如返回国名为Global的则为提供的国家名有问题,必须为英文全称')
try:
querystring = {"country":"cy"}
- querystring["country"] = country
+ querystring["country"] = re_msg[0]
print(querystring)
headers = {
'x-rapidapi-host': "covid-19-coronavirus-statistics.p.rapidapi.com",
@@ -40,13 +135,13 @@ async def covid19(session: CommandSession):
html = response.text
c19 = json.loads(html)
await session.send(LIST.format(
- lastChecked=c19["data"]["lastChecked"],
+ lastChecked=c19["data"]["lastReported"],
location=c19["data"]["location"],
recovered=c19["data"]["recovered"],
deaths=c19["data"]["deaths"],
confirmed=c19["data"]["confirmed"],
nowConfirmed=c19["data"]["confirmed"] - c19["data"]["deaths"] - c19["data"]["recovered"],
- lastReported=c19["data"]["lastReported"],
+ lastReported=c19["data"]["lastChecked"],
)
)
except: