优化&更新 xx能用啥 命令的推荐表

This commit is contained in:
KimgiaiiWuyi 2022-06-04 22:03:14 +08:00
parent 7a5380e27f
commit 3cfec0e799
4 changed files with 1648 additions and 70 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -5,6 +5,8 @@ from base64 import b64encode
from io import BytesIO from io import BytesIO
from typing import List from typing import List
import aiofiles
from openpyxl import load_workbook from openpyxl import load_workbook
sys.path.append(os.path.dirname(os.path.abspath(__file__))) sys.path.append(os.path.dirname(os.path.abspath(__file__)))
@ -161,88 +163,58 @@ char_adv_im = """【{}】
async def weapon_adv(name): async def weapon_adv(name):
char_adv_path = os.path.join(FILE_PATH, 'Genshin All Char.xlsx') async with aiofiles.open(os.path.join(FILE_PATH, 'mihoyo_libs/char_adv_list.json'), encoding='utf-8') as f:
wb = load_workbook(char_adv_path) adv_li = json.loads(await f.read())
ws = wb.active weapons = {}
for char, info in adv_li.items():
char_weapons = []
for i in info['weapon'].values(): # 3 stars, 4 stars, 5 stars
char_weapons.extend(i)
weapons={} for weapon_name in char_weapons:
for c in range(2, 5): if name in weapon_name: # fuzzy search
for r in range(2, 300): char_weapon = weapons.get(weapon_name, [])
if ws.cell(r, c).value: char_weapon.append(char)
# if all(i in ws.cell(r,c).value for i in name): weapons[weapon_name] = char_weapon
if name in ws.cell(r, c).value:
weapon_name = ws.cell(r, c).value
weapon=weapons.get(weapon_name,[])
weapon.append(ws.cell(2 + ((r - 2) // 5) * 5, 1).value)
weapons[weapon_name]=weapon
if weapons: if weapons:
im = [] im = []
for k, v in weapons.items(): for k, v in weapons.items():
im.append(f'{"".join(v)}可能会用到【{k}') im.append(f'{"".join(v)} 可能会用到【{k}')
im = '\n'.join(im) im = '\n'.join(im)
else: else:
im = '没有角色能使用【{}'.format(weapon_name) im = '没有角色能使用【{}'.format(name)
# print(im)
return im return im
async def char_adv(name): async def char_adv(name):
char_name = None async with aiofiles.open(os.path.join(FILE_PATH, 'mihoyo_libs/char_adv_list.json'), encoding='utf-8') as f:
char_adv_path = os.path.join(FILE_PATH, 'Genshin All Char.xlsx') adv_li = json.loads(await f.read())
# char_adv_path = FILE_PATH for char, info in adv_li.items():
wb = load_workbook(char_adv_path) if name in char:
ws = wb.active im = [f'{char}', '-=-=-=-=-=-=-=-=-=-']
char_list = ws['A'] if weapon_5 := info['weapon']['5']:
index = None im.append(f'推荐5★武器{"".join(weapon_5)}')
for i in char_list: if weapon_4 := info['weapon']['4']:
if i.value: im.append(f'推荐4★武器{"".join(weapon_4)}')
if all(g in i.value for g in name): if weapon_3 := info['weapon']['3']:
# if name in i.value: im.append(f'推荐3★武器{"".join(weapon_3)}')
index = i.row if artifacts := info['artifact']:
char_name = i.value im.append('推荐圣遗物搭配:')
if index: for arti in artifacts:
weapon_5star = '' if len(arti) > 1:
for i in range(index, index + 5): im.append(f'[{arti[0]}]两件套 + [{arti[1]}]两件套')
if ws.cell(i, 2).value: else:
weapon_5star += ws.cell(i, 2).value + '>' im.append(f'[{arti[0]}]四件套')
if weapon_5star != '': if remark := info['remark']:
weapon_5star = weapon_5star[:-1] im.append('-=-=-=-=-=-=-=-=-=-')
else: im.append('备注:')
weapon_5star = '无推荐' mark = "\n".join(remark)
im.append(f'{mark}')
return '\n'.join(im)
weapon_4star = '' return '没有找到角色信息'
for i in range(index, index + 5):
if ws.cell(i, 3).value:
weapon_4star += ws.cell(i, 3).value + '>'
if weapon_4star != '':
weapon_4star = weapon_4star[:-1]
else:
weapon_4star = '无推荐'
weapon_3star = ''
for i in range(index, index + 5):
if ws.cell(i, 4).value:
weapon_3star += ws.cell(i, 4).value + '>'
if weapon_3star != '':
weapon_3star = weapon_3star[:-1]
else:
weapon_3star = '无推荐'
artifacts = ''
for i in range(index, index + 5):
if ws.cell(i, 5).value:
if ws.cell(i, 6).value:
artifacts += ws.cell(i, 5).value + '*2' + ws.cell(i, 6).value + '*2' + '\n'
else:
artifacts += ws.cell(i, 5).value + '*4' + '\n'
if artifacts != '':
artifacts = artifacts[:-1]
else:
artifacts = '无推荐'
im = char_adv_im.format(char_name, weapon_5star, weapon_4star, weapon_3star, artifacts)
return im
async def deal_ck(mes, qid): async def deal_ck(mes, qid):

50
tools/gen_char_li.py Normal file
View File

@ -0,0 +1,50 @@
import copy
import json
from typing import Optional
from pathlib import Path
from openpyxl import load_workbook
R_PATH = Path(__file__).parents[0]
sample = {
'weapon': {
'5': [],
'4': [],
'3': []
},
'artifact': [], # type: list[list[str,Optional[str]]] # 四件套 / 2+2
'remark': []
}
char_json = {}
wb = load_workbook('../mihoyo_libs/Genshin All Char.xlsx')
ws = wb.active
for char_i in range(2, 336, 5): # 角色行
char_name = ws.cell(char_i, 1).value.replace('\n', '')
char_sample = copy.deepcopy(sample)
for i in range(5):
row = i + char_i
if star_5 := ws.cell(row, 2).value:
char_sample['weapon']['5'].append(star_5)
if star_4 := ws.cell(row, 3).value:
char_sample['weapon']['4'].append(star_4)
artifact = []
if arti_1 := ws.cell(row, 5).value:
artifact.append(arti_1)
if arti_2 := ws.cell(row, 6).value:
artifact.append(arti_2)
if artifact:
char_sample['artifact'].append(artifact)
if remark := ws.cell(row, 7).value:
if row > 7:
char_sample['remark'].append(remark)
char_json[char_name] = char_sample
with open('../mihoyo_libs/char_adv_list.json', 'w', encoding='utf-8') as f:
json.dump(char_json, f, indent=2, ensure_ascii=False)