From a95b27c1811a27c01ee991451d24fe51c70742c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wuyi=E6=97=A0=E7=96=91?= <444835641@qq.com> Date: Thu, 30 Dec 2021 00:41:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=AD=A6=E5=99=A8?= =?UTF-8?q?=E5=B7=B2=E6=94=AF=E6=8C=81=E6=9F=A5=E8=AF=A2=E6=9F=90=E4=B8=AA?= =?UTF-8?q?=E5=9B=BA=E5=AE=9A=E7=AD=89=E7=BA=A7=E5=B1=9E=E6=80=A7=20&=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=A8=A1=E7=B3=8A=E6=9F=A5=E8=AF=A2=EF=BC=9B?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E8=A7=92=E8=89=B2=E6=9F=A5=E7=AD=89?= =?UTF-8?q?=E7=BA=A7=E6=97=B6=E5=85=83=E7=B4=A0=E7=B2=BE=E9=80=9A=E6=95=B0?= =?UTF-8?q?=E5=80=BC=E4=B8=8D=E6=AD=A3=E7=A1=AE=E6=98=BE=E7=A4=BA=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __init__.py | 75 ++++++++++++++++++++++++++++++++--------------------- getDB.py | 8 +++--- 2 files changed, 48 insertions(+), 35 deletions(-) diff --git a/__init__.py b/__init__.py index 474e3a2d..0aaf7927 100644 --- a/__init__.py +++ b/__init__.py @@ -162,7 +162,12 @@ async def _(bot:HoshinoBot, ev: CQEvent): @sv.on_prefix('武器') async def _(bot:HoshinoBot, ev: CQEvent): message = ev.message.extract_plain_text() - im = await weapon_wiki(message) + name = ''.join(re.findall('[\u4e00-\u9fa5]', message)) + level = re.findall(r"[0-9]+", message) + if len(level) == 1: + im = await weapon_wiki(name,level=level[0]) + else: + im = await weapon_wiki(name) await bot.send(ev,im,at_sender=True) @sv.on_prefix('角色') @@ -714,36 +719,45 @@ async def daily(mode="push", uid=None): {"qid": row[2], "gid": row[3], "message": send_mes}) return temp_list -async def weapon_wiki(name): +async def weapon_wiki(name,level = None): data = await GetWeaponInfo(name) - name = data['name'] - type = data['weapontype'] - star = data['rarity'] + "星" - info = data['description'] - atk = str(data['baseatk']) - sub_name = data['substat'] - if data['subvalue'] != "": - sub_val = (data['subvalue'] + - '%') if sub_name != '元素精通' else data['subvalue'] - sub = "\n" + "【" + sub_name + "】" + sub_val + if level: + data2 = await GetWeaponInfo(name,level+"plus" if level else level) + if data["substat"] != "": + sp = data["substat"] + ":" + '%.1f%%' % (data2["specialized"] * 100) if data["substat"] != "元素精通" else data["substat"] + ":" + str(math.floor(data2["specialized"])) + else: + sp = "" + im = (data["name"] + "\n等级:" + str(data2["level"]) + "(突破" + str(data2["ascension"]) + ")" + + "\n攻击力:" + str(math.floor(data2["attack"])) + "\n" + sp) else: - sub = "" + name = data['name'] + type = data['weapontype'] + star = data['rarity'] + "星" + info = data['description'] + atk = str(data['baseatk']) + sub_name = data['substat'] + if data['subvalue'] != "": + sub_val = (data['subvalue'] + + '%') if sub_name != '元素精通' else data['subvalue'] + sub = "\n" + "【" + sub_name + "】" + sub_val + else: + sub = "" - if data['effectname'] != "": - raw_effect = data['effect'] - rw_ef = [] - for i in range(len(data['r1'])): - now = '' - for j in range(1, 6): - now = now + data['r{}'.format(j)][i] + "/" - now = now[:-1] - rw_ef.append(now) - raw_effect = raw_effect.format(*rw_ef) - effect = "\n" + "【" + data['effectname'] + "】" + ":" + raw_effect - else: - effect = "" - im = weapon_im.format(name, type, star, info, atk, - sub, effect) + if data['effectname'] != "": + raw_effect = data['effect'] + rw_ef = [] + for i in range(len(data['r1'])): + now = '' + for j in range(1, 6): + now = now + data['r{}'.format(j)][i] + "/" + now = now[:-1] + rw_ef.append(now) + raw_effect = raw_effect.format(*rw_ef) + effect = "\n" + "【" + data['effectname'] + "】" + ":" + raw_effect + else: + effect = "" + im = weapon_im.format(name, type, star, info, atk, + sub, effect) return im async def char_wiki(name, mode=0, num="", extra=""): @@ -790,9 +804,10 @@ async def char_wiki(name, mode=0, num="", extra=""): elif extra == "stats": data2 = await GetCharInfo(name, mode, num) - im = (name + "\n等级:" + str(data2["level"]) + "\n血量:" + str(math.floor(data2["hp"])) + + sp = data["substat"] + ":" + '%.1f%%' % (data2["specialized"] * 100) if data["substat"] != "元素精通" else data["substat"] + ":" + str(math.floor(data2["specialized"])) + im = (data["name"] + "\n等级:" + str(data2["level"]) + "\n血量:" + str(math.floor(data2["hp"])) + "\n攻击力:" + str(math.floor(data2["attack"])) + "\n防御力:" + str(math.floor(data2["defense"])) + - "\n" + data["substat"] + ":" + '%.1f%%' % (data2["specialized"] * 100)) + "\n" + sp) else: name = data['title'] + ' — ' + data['name'] star = data['rarity'] diff --git a/getDB.py b/getDB.py index 371df5f3..aedd4955 100644 --- a/getDB.py +++ b/getDB.py @@ -668,16 +668,14 @@ async def GetMysInfo(mysid,ck): print("米游社信息读取老Api失败!") print(e.with_traceback) -async def GetWeaponInfo(name): +async def GetWeaponInfo(name,level = None): async with AsyncClient() as client: req = await client.get( - url="https://genshin.minigg.cn/?weapons=" + name, + url="https://api.minigg.cn/weapons?query=" + name + "&stats=" + level if level else "https://api.minigg.cn/weapons?query=" + name, headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36', 'Referer': 'https://genshin.minigg.cn/index.html'}) - soup = BeautifulSoup(req.text, "lxml") - item = soup.select_one("pre").text - data = json.loads(item) + data = jsonfy(req.text) return data async def GetCharTalentsInfo(name):