mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
重写原神今日素材
This commit is contained in:
parent
362ef519b7
commit
c99292d327
@ -14,7 +14,7 @@ import asyncio
|
||||
import time
|
||||
|
||||
|
||||
__zx_plugin_name__ = "原神今日素材"
|
||||
__zx_plugin_name__ = "今日素材"
|
||||
__plugin_usage__ = """
|
||||
usage:
|
||||
看看原神今天要刷什么
|
||||
@ -57,7 +57,7 @@ async def _(event: MessageEvent):
|
||||
await material.send(
|
||||
Message(
|
||||
image(f"{file_name}.png", "genshin/material")
|
||||
+ "\n※ 每日素材数据来源于 genshin.pub"
|
||||
+ "\n※ 每日素材数据来源于米游社"
|
||||
)
|
||||
)
|
||||
logger.info(
|
||||
@ -86,69 +86,20 @@ async def update_image():
|
||||
if not browser:
|
||||
logger.warning("获取 browser 失败,请部署至 linux 环境....")
|
||||
return False
|
||||
url = "https://genshin.pub/daily"
|
||||
page = await browser.new_page()
|
||||
await page.goto(url, wait_until="networkidle", timeout=10000)
|
||||
await page.set_viewport_size({"width": 2560, "height": 1080})
|
||||
await page.evaluate(
|
||||
"""
|
||||
document.getElementsByClassName('GSTitleBar_gs_titlebar__2IJqy')[0].remove();
|
||||
e = document.getElementsByClassName('GSContainer_gs_container__2FbUz')[0];
|
||||
e.setAttribute("style", "height:880px");
|
||||
"""
|
||||
)
|
||||
await page.click("button")
|
||||
div = await page.query_selector(".GSContainer_content_box__1sIXz")
|
||||
for i, card in enumerate(
|
||||
await page.query_selector_all(".GSTraitCotainer_trait_section__1f3bc")
|
||||
):
|
||||
index = 0
|
||||
type_ = "char" if not i else "weapons"
|
||||
for x in await card.query_selector_all("xpath=child::*"):
|
||||
await x.screenshot(
|
||||
path=f"{IMAGE_PATH}/genshin/material/{type_}_{index}.png",
|
||||
timeout=100000,
|
||||
)
|
||||
# 下滑两次
|
||||
for _ in range(3):
|
||||
await div.press("PageDown")
|
||||
index += 1
|
||||
# 结束后上滑至顶
|
||||
for _ in range(index * 3):
|
||||
await div.press("PageUp")
|
||||
file_list = os.listdir(f"{IMAGE_PATH}/genshin/material")
|
||||
char_img = [
|
||||
f"{IMAGE_PATH}/genshin/material/{x}"
|
||||
for x in file_list
|
||||
if x.startswith("char")
|
||||
]
|
||||
weapons_img = [
|
||||
f"{IMAGE_PATH}/genshin/material/{x}"
|
||||
for x in file_list
|
||||
if x.startswith("weapons")
|
||||
]
|
||||
char_img.sort()
|
||||
weapons_img.sort()
|
||||
height = await asyncio.get_event_loop().run_in_executor(
|
||||
None, get_background_height, weapons_img
|
||||
)
|
||||
background_img = BuildImage(1200, height + 100, color="#f6f2ee")
|
||||
current_width = 50
|
||||
for img_list in [char_img, weapons_img]:
|
||||
current_height = 20
|
||||
for img in img_list:
|
||||
x = BuildImage(0, 0, background=img)
|
||||
background_img.paste(x, (current_width, current_height))
|
||||
current_height += x.size[1]
|
||||
current_width += 600
|
||||
# url = "https://genshin.pub/daily"
|
||||
url = "https://bbs.mihoyo.com/ys/obc/channel/map/193"
|
||||
page = await browser.new_page(viewport={'width': 860, 'height': 3000})
|
||||
await page.goto(url)
|
||||
await page.wait_for_timeout(3000)
|
||||
file_name = str((datetime.now() - timedelta(hours=4)).date())
|
||||
background_img.save(f"{IMAGE_PATH}/genshin/material/{file_name}.png")
|
||||
# background_img.save(f"{IMAGE_PATH}/genshin/material/{file_name}.png")
|
||||
await page.locator('//*[@id="__layout"]/div/div[2]/div[2]/div/div[1]/div[2]/div/div').screenshot(path=f"{IMAGE_PATH}/genshin/material/{file_name}.png")
|
||||
await page.close()
|
||||
return True
|
||||
except Exception as e:
|
||||
logger.error(f"原神每日素材更新出错... {type(e)}: {e}")
|
||||
if page:
|
||||
await page.close()
|
||||
page.close()
|
||||
return False
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user