Skip to content

Commit

Permalink
马娘技能代码格式优化
Browse files Browse the repository at this point in the history
  • Loading branch information
azmiao committed Apr 18, 2024
1 parent 941f461 commit a45afc3
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 17 deletions.
34 changes: 20 additions & 14 deletions uma_skills/generate.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
from prettytable import PrettyTable
from PIL import Image, ImageDraw, ImageFont
import os
from fuzzywuzzy import process

from PIL import Image, ImageDraw, ImageFont
from fuzzywuzzy import process
from hoshino import R, logger
from prettytable import PrettyTable

from ..plugin_utils.base_util import get_img_cq


async def create_msg(skill_name: str, f_data):
msg = f'''
技能名:{skill_name}
Expand All @@ -24,6 +26,7 @@ async def create_msg(skill_name: str, f_data):
'''.strip()
return msg


# 获取马娘技能内容
async def get_skill_info(skill_name: str, f_data):
jp_name_list = list(f_data['skills'].keys())
Expand Down Expand Up @@ -54,8 +57,9 @@ async def get_skill_info(skill_name: str, f_data):
msg = f'未找到相关技能,您有{score}%的可能在查询技能:{skill_name}'
return msg


# 获取马娘技能列表
async def get_skill_list(rarity: str, limit: str, color: str, skill_type_list:list, f_data):
async def get_skill_list(rarity: str, limit: str, color: str, skill_type_list: list, f_data):
data_dict = {
'title': '',
'info': {}
Expand All @@ -66,7 +70,8 @@ async def get_skill_list(rarity: str, limit: str, color: str, skill_type_list:li
limit_tmp = limit if limit else f_data['skills'][skill_jp_name]['条件限制']
color_tmp = color if color else f_data['skills'][skill_jp_name]['颜色']
# 当前技能类型列表
text = f_data['skills'][skill_jp_name]['技能类型'].replace('条件1: ', '、').replace('条件2: ', '、').replace('条件3: ', '、')
text = f_data['skills'][skill_jp_name]['技能类型'].replace('条件1: ', '、').replace('条件2: ', '、').replace(
'条件3: ', '、')
currrent_type_list = text.split('、')
# 去除空值
currrent_type_list = list(set(currrent_type_list))
Expand All @@ -76,10 +81,10 @@ async def get_skill_list(rarity: str, limit: str, color: str, skill_type_list:li
type_list_tmp = skill_type_list if skill_type_list else currrent_type_list
# 判断条件
if rarity_tmp == f_data['skills'][skill_jp_name]['稀有度'] and \
limit_tmp == f_data['skills'][skill_jp_name]['条件限制'] and \
color_tmp == f_data['skills'][skill_jp_name]['颜色'] and \
all(elem in currrent_type_list for elem in type_list_tmp):
data_dict['info'][skill_jp_name] = f_data['skills'][skill_jp_name]
limit_tmp == f_data['skills'][skill_jp_name]['条件限制'] and \
color_tmp == f_data['skills'][skill_jp_name]['颜色'] and \
all(elem in currrent_type_list for elem in type_list_tmp):
data_dict['info'][skill_jp_name] = f_data['skills'][skill_jp_name]
# 如果未找到任何数据
if not data_dict['info']:
return f'没有搜索出任何马娘技能呢,请确保你输入的检索条件正确且无冲突!'
Expand Down Expand Up @@ -107,6 +112,7 @@ async def get_skill_list(rarity: str, limit: str, color: str, skill_type_list:li
msg = await get_img_cq(img_dir)
return msg


# 生成图片
async def create_img(info_data, filename_tmp):
field_names = (
Expand All @@ -115,7 +121,7 @@ async def create_img(info_data, filename_tmp):
'需要PT', 'PT评价比', '触发条件', '技能类型'
)
titles = info_data['title']
table = PrettyTable(field_names = field_names, title = titles)
table = PrettyTable(field_names=field_names, title=titles)

for skill_name in list(info_data['info'].keys()):
cn_name = info_data['info'][skill_name]['中文名']
Expand All @@ -139,17 +145,17 @@ async def create_img(info_data, filename_tmp):
space = 5
current_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'simhei.ttf')
font = ImageFont.truetype(current_dir, 20, encoding='utf-8')
im = Image.new('RGB',(10, 10),(255, 255, 255, 0))
im = Image.new('RGB', (10, 10), (255, 255, 255, 0))
draw = ImageDraw.Draw(im, 'RGB')
img_size = draw.multiline_textsize(table_info, font=font)
im_new = im.resize((img_size[0]+space*2, img_size[1]+space*2))
im_new = im.resize((img_size[0] + space * 2, img_size[1] + space * 2))
del draw
del im
draw = ImageDraw.Draw(im_new, 'RGB')
draw.multiline_text((space,space), table_info, fill=(0, 0, 0), font=font)
draw.multiline_text((space, space), table_info, fill=(0, 0, 0), font=font)
save_dir = os.path.join(R.img('umamusume').path, 'uma_skills/')
if not os.path.exists(save_dir):
os.mkdir(save_dir)
path_dir = os.path.join(save_dir, filename_tmp)
im_new.save(path_dir, 'PNG')
del draw
del draw
8 changes: 6 additions & 2 deletions uma_skills/update_init.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import os
import json
import os

from hoshino import logger, R

from .update_skills import update_info, judge_update, del_img

# 启动时自动更新至最新版马娘技能信息
current_dir = os.path.join(os.path.dirname(__file__), f'skills_config.json')


async def update():
if not os.path.exists(current_dir):
logger.info('====未检测到马娘技能信息文件,正在开始创建文件和更新信息====')
Expand All @@ -21,6 +24,7 @@ async def update():
except Exception as e:
logger.info(f'====马娘技能信息更新失败:{e}====')


# 自动更新
async def auto_update():
flag = await judge_update()
Expand All @@ -33,4 +37,4 @@ async def auto_update():
await del_img(R.img('umamusume').path)
logger.info('马娘技能信息刷新完成')
except Exception as e:
logger.error(f'马娘技能信息刷新失败:{e}')
logger.error(f'马娘技能信息刷新失败:{e}')
1 change: 0 additions & 1 deletion uma_skills/update_skills.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ async def update_info():
# 获取所有技能
f_data['skills'] = {}
res_tag = soup.find('div', {'id': 'jn-json'})
res_tag = soup.find('div', {'id': 'jn-json'})
data_list_str = res_tag.text.replace(' ', '').replace('<br/>', '').replace('&#160;', '_').replace(',]', ']')
# print(data_list_str)
data_list = json.loads(data_list_str)
Expand Down

0 comments on commit a45afc3

Please sign in to comment.