from io import BytesIO from re import findall from typing import List from pathlib import Path from datetime import datetime from httpx import get from bs4 import BeautifulSoup from PIL import Image, ImageDraw from .get_event_data import get_genshin_events from ..utils.genshin_fonts.genshin_fonts import genshin_font_origin TEXT_PATH = Path(__file__).parent / 'texture2d' IMG_PATH = Path(__file__).parent / 'event.jpg' PATTERN = r'<[a-zA-Z]+.*?>([\s\S]*?)' async def get_month_and_time(time_data: str) -> List: """ :说明: 接收时间字符串`2022/02/09 18:59:59` 转换为`['02/09', '18:59PM']` :参数: * time_data (str): 时间字符串。 :返回: * [month, time] (list): ['02/09', '18:59PM']。 """ if '永久开放' in time_data: month = time_data[:5] time = '永久开放' if '更新后' in time_data: month = time_data[:5] time = '更新后' else: time_data = time_data.split(' ') # type: ignore time_data[0] = time_data[0].replace('-', '/') # type: ignore month = time_data[0].split('/', 1)[1] time = ':'.join(time_data[1].split(':')[:-1]) if int(time.split(':')[0]) <= 12: time = time + 'AM' else: time = time + 'PM' return [month, time] async def save_draw_event_img() -> None: """ :说明: 绘制原神活动列表图片,存放至同级目录``event.png``。 """ raw_data = await get_genshin_events('List') raw_time_data = await get_genshin_events('Content') data = raw_data['data']['list'][1]['list'] event_data = {'gacha_event': [], 'normal_event': [], 'other_event': []} for k in data: for i in raw_time_data['data']['list']: if k['title'] in i['title']: content_bs = BeautifulSoup(i['content'], 'lxml') for index, value in enumerate(content_bs.find_all('p')): if value.text == '〓任务开放时间〓': time_data = content_bs.find_all('p')[index + 1].text if '