diff --git a/.vscode/settings.json b/.vscode/settings.json index 3e28ec8a..8a02d663 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -31,5 +31,6 @@ ], "python.analysis.include": [ "${workspaceFolder}/../../../" - ] + ], + "python.analysis.autoImportCompletions": true } \ No newline at end of file diff --git a/GenshinUID/genshinuid_etcimg/img_data/抗性表.jpg b/GenshinUID/genshinuid_etcimg/img_data/抗性表.jpg index 9c97f383..1e2f77b6 100644 Binary files a/GenshinUID/genshinuid_etcimg/img_data/抗性表.jpg and b/GenshinUID/genshinuid_etcimg/img_data/抗性表.jpg differ diff --git a/GenshinUID/genshinuid_etcimg/img_data/血量排行.jpg b/GenshinUID/genshinuid_etcimg/img_data/血量排行.jpg index ae4701de..4bc95873 100644 Binary files a/GenshinUID/genshinuid_etcimg/img_data/血量排行.jpg and b/GenshinUID/genshinuid_etcimg/img_data/血量排行.jpg differ diff --git a/GenshinUID/genshinuid_etcimg/img_data/血量表.jpg b/GenshinUID/genshinuid_etcimg/img_data/血量表.jpg index 18a4526e..d9b62a5a 100644 Binary files a/GenshinUID/genshinuid_etcimg/img_data/血量表.jpg and b/GenshinUID/genshinuid_etcimg/img_data/血量表.jpg differ diff --git a/GenshinUID/genshinuid_eventlist/draw_event_img.py b/GenshinUID/genshinuid_eventlist/draw_event_img.py index d4fc2796..7d579eab 100644 --- a/GenshinUID/genshinuid_eventlist/draw_event_img.py +++ b/GenshinUID/genshinuid_eventlist/draw_event_img.py @@ -3,6 +3,7 @@ from re import findall from pathlib import Path from typing import List, Literal +import aiofiles from httpx import get from PIL import Image, ImageDraw from gsuid_core.utils.api.ambr.request import get_ambr_event_info @@ -10,11 +11,12 @@ from gsuid_core.utils.api.ambr.request import get_ambr_event_info from ..version import Genshin_version from ..utils.image.convert import convert_img from ..utils.image.image_tools import get_color_bg -from ..utils.fonts.genshin_fonts import genshin_font_origin +from ..utils.resource.RESOURCE_PATH import TEMP_PATH +from ..utils.fonts.genshin_fonts import gs_font_26, gs_font_62 TEXT_PATH = Path(__file__).parent / 'texture2d' -EVENT_IMG_PATH = Path(__file__).parent / 'event.jpg' -GACHA_IMG_PATH = Path(__file__).parent / 'gacha.jpg' +EVENT_IMG_PATH = TEMP_PATH / 'event.jpg' +GACHA_IMG_PATH = TEMP_PATH / 'gacha.jpg' PATTERN = r'<[a-zA-Z]+.*?>([\s\S]*?)' @@ -105,11 +107,6 @@ class DrawEventList: base_h = 100 + len(self.normal_event) * 380 base_img = await get_color_bg(950, base_h) - font_l = genshin_font_origin(62) - # font_m = genshin_font_origin(34) - font_s = genshin_font_origin(26) - - # now_time = datetime.now().strftime('%Y/%m/%d') event_cover = Image.open(TEXT_PATH / 'normal_event_cover.png') for index, value in enumerate(self.normal_event): @@ -123,7 +120,11 @@ class DrawEventList: # 写标题 event_img_draw.text( - (475, 47), value['full_name'], text_color, font_s, 'mm' + (475, 47), + value['full_name'], + text_color, + gs_font_26, + 'mm', ) # 纠错 if isinstance(value['start_time'], str): @@ -143,28 +144,28 @@ class DrawEventList: (74, 149), value['start_time'][0], text_color, - font_l, + gs_font_62, anchor='lm', ) event_img_draw.text( (74, 191), value['start_time'][1], text_color, - font_s, + gs_font_26, anchor='lm', ) event_img_draw.text( (115, 275), value['end_time'][0], text_color, - font_l, + gs_font_62, anchor='lm', ) event_img_draw.text( (115, 318), value['end_time'][1], text_color, - font_s, + gs_font_26, anchor='lm', ) event_img.paste(event_cover, (0, 0), event_cover) @@ -182,11 +183,6 @@ class DrawEventList: base_h = 100 + len(self.gacha_event) * 480 base_img = await get_color_bg(950, base_h) - font_l = genshin_font_origin(62) - # font_m = genshin_font_origin(34) - font_s = genshin_font_origin(26) - - # now_time = datetime.now().strftime('%Y/%m/%d') gacha_cover = Image.open(TEXT_PATH / 'gacha_event_cover.png') for index, value in enumerate(self.gacha_event): @@ -200,7 +196,11 @@ class DrawEventList: # 写标题 gacha_img_draw.text( - (475, 47), value['full_name'], text_color, font_s, 'mm' + (475, 47), + value['full_name'], + text_color, + gs_font_26, + 'mm', ) # 纠错 if isinstance(value['start_time'], str): @@ -220,28 +220,28 @@ class DrawEventList: (74, 199), value['start_time'][0], text_color, - font_l, + gs_font_62, anchor='lm', ) gacha_img_draw.text( (74, 241), value['start_time'][1], text_color, - font_s, + gs_font_26, anchor='lm', ) gacha_img_draw.text( (115, 325), value['end_time'][0], text_color, - font_l, + gs_font_62, anchor='lm', ) gacha_img_draw.text( (115, 368), value['end_time'][1], text_color, - font_s, + gs_font_26, anchor='lm', ) gacha_img.paste(gacha_cover, (0, 0), gacha_cover) @@ -266,12 +266,12 @@ async def get_all_event_img(): async def get_event_img(event_type: Literal['EVENT', 'GACHA']) -> bytes: if event_type == 'EVENT': if EVENT_IMG_PATH.exists(): - with open(EVENT_IMG_PATH, 'rb') as f: - return f.read() + async with aiofiles.open(EVENT_IMG_PATH, 'rb') as f: + return await f.read() else: if GACHA_IMG_PATH.exists(): - with open(GACHA_IMG_PATH, 'rb') as f: - return f.read() + async with aiofiles.open(GACHA_IMG_PATH, 'rb') as f: + return await f.read() event_list = DrawEventList() await event_list.get_event_data() diff --git a/GenshinUID/genshinuid_gachalog/lelaer_tools.py b/GenshinUID/genshinuid_gachalog/lelaer_tools.py index 8a7a1dab..112fc977 100644 --- a/GenshinUID/genshinuid_gachalog/lelaer_tools.py +++ b/GenshinUID/genshinuid_gachalog/lelaer_tools.py @@ -7,7 +7,7 @@ from gsuid_core.logger import logger from urllib3 import encode_multipart_formdata from gsuid_core.utils.error_reply import get_error_img from gsuid_core.utils.api.mys.api import GET_GACHA_LOG_URL -from gsuid_core.utils.api.mys.request import RECOGNIZE_SERVER +from gsuid_core.utils.api.mys.base_request import RECOGNIZE_SERVER from ..utils.mys_api import mys_api from .export_and_import import export_gachalogs, import_gachalogs diff --git a/GenshinUID/genshinuid_guide/__init__.py b/GenshinUID/genshinuid_guide/__init__.py index a697e5f7..2734f946 100644 --- a/GenshinUID/genshinuid_guide/__init__.py +++ b/GenshinUID/genshinuid_guide/__init__.py @@ -14,10 +14,18 @@ from ..version import Genshin_version from ..utils.image.convert import convert_img from .get_new_abyss_data import get_review_data from ..utils.resource.RESOURCE_PATH import REF_PATH +from .get_bbs_post_guide import get_material_way_post from ..utils.map.name_covert import alias_to_char_name sv_char_guide = SV('查询角色攻略') sv_abyss_review = SV('查询深渊阵容') +sv_bbs_post_guide = SV('查询BBS攻略') + + +@sv_bbs_post_guide.on_suffix(('路线')) +async def send_bbs_post_guide(bot: Bot, ev: Event): + name = ev.text.strip().replace('材料', '').replace('采集', '') + await bot.send(await get_material_way_post(name)) @sv_char_guide.on_prefix(('参考攻略', '攻略', '推荐')) diff --git a/GenshinUID/genshinuid_guide/get_bbs_post_guide.py b/GenshinUID/genshinuid_guide/get_bbs_post_guide.py new file mode 100644 index 00000000..4d87b2aa --- /dev/null +++ b/GenshinUID/genshinuid_guide/get_bbs_post_guide.py @@ -0,0 +1,33 @@ +from gsuid_core.logger import logger +from gsuid_core.utils.cache import gs_cache +from gsuid_core.utils.error_reply import get_error +from gsuid_core.utils.image.mys.bbs import get_post_img + +from ..utils.mys_api import mys_api + +CID = '1386819' +colloctions = [] + + +@gs_cache(14200) +async def get_material_way_post(name: str): + global colloctions + if not colloctions: + colloctions = await mys_api.get_bbs_collection(CID) + + if isinstance(colloctions, int): + error = get_error(colloctions) + colloctions = [] + return error + + logger.info(f'[BBS_Guide] 合集存在, 开始获取攻略: {name}') + + for c in colloctions: + post = c['post'] + if name in post['subject']: + post_id = post['post_id'] + break + else: + return '未找到该攻略, 等待补充, 或请检查输入材料名是否正确。' + + return await get_post_img(post_id) diff --git a/README.md b/README.md index d219769a..493537a1 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ - [@Asgater](https://www.miyoushe.com/ys/accountCenter/postList?id=79695828) - 原牌图鉴的**授权**使用 - [虚空数据库](https://akashadata.com/) - 深渊出场数据的**授权**使用 - [@祈鸢ya](https://www.miyoushe.com/ys/accountCenter/postList?id=137101761) - 「4.6~」原石预估数据图片的**授权**使用 +- [@燕返晓归](https://www.miyoushe.com/ys/accountCenter/postList?id=184505932) - 材料收集路线图的**授权**使用 - [@七月的休](https://www.miyoushe.com/ys/accountCenter/postList?id=218945821) - 「~4.5」原石预估数据图片的**授权**使用 - [玉衡杯深渊数据库](http://www.yuhengcup.top/abyss) - `版本深渊`功能数据提供 - [@lgc233](https://github.com/lgc2333) - 众多优秀PR贡献