修复:活动列表时间 fix #116

This commit is contained in:
Wuyi无疑 2022-02-14 23:52:20 +08:00
parent 47a9595785
commit 5d11ec7998
2 changed files with 29 additions and 26 deletions

View File

@ -3,6 +3,7 @@ import os
import random import random
import threading import threading
import time import time
from bs4 import BeautifulSoup
from base64 import b64encode from base64 import b64encode
from io import BytesIO from io import BytesIO
from re import findall from re import findall
@ -1300,31 +1301,31 @@ async def draw_event_pic():
for k in data: for k in data:
for i in raw_time_data["data"]["list"]: for i in raw_time_data["data"]["list"]:
if k["title"] in i["title"]: if k["title"] in i["title"]:
time_data = findall(r"[0-9]{4}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}", i["content"]) content_bs = BeautifulSoup(i['content'], 'lxml')
time_limit_end = findall(r"起至[0-9].[0-9]版本结束", i["content"]) for index,value in enumerate(content_bs.find_all("p")):
time_limit_start = findall(r"[0-9].[0-9]版本更新后 ~", i["content"]) if value.text == "〓任务开放时间〓":
if len(time_data) == 2: time_data = content_bs.find_all("p")[index+1].text
k["act_begin_time"] = time_data[0] if "<t class=" in time_data:
k["act_end_time"] = time_data[1] time_data = findall("<[a-zA-Z]+.*?>([\s\S]*?)</[a-zA-Z]*?>", time_data)[0]
elif len(time_data) == 1 and len(time_limit_end) == 1: k["time_data"] = time_data
k["act_begin_time"] = time_data[0] elif value.text == "〓活动时间〓":
k["act_end_time"] = time_limit_end[0] time_data = content_bs.find_all("p")[index+1].text
elif len(time_data) == 1 and len(time_limit_start) == 1: time_data = time_data.replace("</t>","")[16:]
k["act_begin_time"] = time_limit_start[0][:-2] k["time_data"] = time_data
k["act_end_time"] = time_data[0] elif value.text == "〓祈愿介绍〓":
elif len(time_data) == 1: start_time = content_bs.find_all("tr")[1].td.find_all("p")[0].text
k["act_begin_time"] = time_data[0] if "<t class=" in start_time:
k["act_end_time"] = "永久开放" start_time = findall("<[a-zA-Z]+.*?>([\s\S]*?)</[a-zA-Z]*?>", start_time)[0]
elif len(time_data) > 2: end_time = findall("<[a-zA-Z]+.*?>([\s\S]*?)</[a-zA-Z]*?>",
k["act_begin_time"] = time_data[0] content_bs.find_all("tr")[1].td.find_all("p")[2].text)[0]
k["act_end_time"] = k["end_time"] if "<t class=" in end_time:
elif len(time_data) == 0: end_time = findall("<[a-zA-Z]+.*?>([\s\S]*?)</[a-zA-Z]*?>", end_time)[0]
k["act_begin_time"] = k["start_time"] + "(?)" time_data = start_time + "~" + end_time
k["act_end_time"] = k["end_time"] + "(?)" k["time_data"] = time_data
if "冒险助力礼包" in k["title"] or "纪行" in k["title"]: if "冒险助力礼包" in k["title"] or "纪行" in k["title"]:
continue continue
# if "角色试用" in k["title"] or "传说任务" in k["title"]: #if "角色试用" in k["title"] or "传说任务" in k["title"]:
# event_data['other_event'].append(k) # event_data['other_event'].append(k)
elif k["tag_label"] == "扭蛋": elif k["tag_label"] == "扭蛋":
event_data['gacha_event'].append(k) event_data['gacha_event'].append(k)
@ -1357,7 +1358,7 @@ async def draw_event_pic():
for index, value in enumerate(event_data['normal_event']): for index, value in enumerate(event_data['normal_event']):
img = Image.open(BytesIO(get(value["banner"]).content)) img = Image.open(BytesIO(get(value["banner"]).content))
base_draw.text((540, 300 + 45 + 390 + (390 + 90) * index + 1), base_draw.text((540, 300 + 45 + 390 + (390 + 90) * index + 1),
value["act_begin_time"] + " —— " + value["act_end_time"], (255, 255, 255), genshin_font(42), value["time_data"], (255, 255, 255), genshin_font(42),
anchor="mm") anchor="mm")
# base_img.paste(img,((index%2)*1080,300 + 390*(index//2))) # base_img.paste(img,((index%2)*1080,300 + 390*(index//2)))
base_img.paste(img, (0, 300 + (390 + 90) * index)) base_img.paste(img, (0, 300 + (390 + 90) * index))
@ -1365,7 +1366,7 @@ async def draw_event_pic():
for index, value in enumerate(event_data['gacha_event']): for index, value in enumerate(event_data['gacha_event']):
img = Image.open(BytesIO(get(value["banner"]).content)) img = Image.open(BytesIO(get(value["banner"]).content))
base_draw.text((540, 600 + 45 + (390 + 90) * len(event_data['normal_event']) + 533 + index * (533 + 90)), base_draw.text((540, 600 + 45 + (390 + 90) * len(event_data['normal_event']) + 533 + index * (533 + 90)),
value["act_begin_time"] + " —— " + value["act_end_time"], (255, 255, 255), genshin_font(42), value["time_data"], (255, 255, 255), genshin_font(42),
anchor="mm") anchor="mm")
# base_img.paste(img,((index%2)*1080,600 + ((1 + len(event_data['normal_event']))//2)*390 + 533*(index//2))) # base_img.paste(img,((index%2)*1080,600 + ((1 + len(event_data['normal_event']))//2)*390 + 533*(index//2)))
base_img.paste(img, (0, 600 + (390 + 90) * len(event_data['normal_event']) + index * (533 + 90))) base_img.paste(img, (0, 600 + (390 + 90) * len(event_data['normal_event']) + index * (533 + 90)))

View File

@ -3,4 +3,6 @@ requests==2.25.1
httpx==0.18.1 httpx==0.18.1
Pillow>=8.3.1 Pillow>=8.3.1
wordcloud>=1.8.1 wordcloud>=1.8.1
numpy~=1.22.2 numpy~=1.22.2
beautifulsoup4>=4.10.0
lxml>=4.7.1