mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-16 01:30:03 +08:00
重写原神今日素材
This commit is contained in:
@@ -14,7 +14,7 @@ import asyncio
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
__zx_plugin_name__ = "原神今日素材"
|
__zx_plugin_name__ = "今日素材"
|
||||||
__plugin_usage__ = """
|
__plugin_usage__ = """
|
||||||
usage:
|
usage:
|
||||||
看看原神今天要刷什么
|
看看原神今天要刷什么
|
||||||
@@ -57,7 +57,7 @@ async def _(event: MessageEvent):
|
|||||||
await material.send(
|
await material.send(
|
||||||
Message(
|
Message(
|
||||||
image(f"{file_name}.png", "genshin/material")
|
image(f"{file_name}.png", "genshin/material")
|
||||||
+ "\n※ 每日素材数据来源于 genshin.pub"
|
+ "\n※ 每日素材数据来源于米游社"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
logger.info(
|
logger.info(
|
||||||
@@ -86,69 +86,20 @@ async def update_image():
|
|||||||
if not browser:
|
if not browser:
|
||||||
logger.warning("获取 browser 失败,请部署至 linux 环境....")
|
logger.warning("获取 browser 失败,请部署至 linux 环境....")
|
||||||
return False
|
return False
|
||||||
url = "https://genshin.pub/daily"
|
# url = "https://genshin.pub/daily"
|
||||||
page = await browser.new_page()
|
url = "https://bbs.mihoyo.com/ys/obc/channel/map/193"
|
||||||
await page.goto(url, wait_until="networkidle", timeout=10000)
|
page = await browser.new_page(viewport={'width': 860, 'height': 3000})
|
||||||
await page.set_viewport_size({"width": 2560, "height": 1080})
|
await page.goto(url)
|
||||||
await page.evaluate(
|
await page.wait_for_timeout(3000)
|
||||||
"""
|
|
||||||
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
|
|
||||||
file_name = str((datetime.now() - timedelta(hours=4)).date())
|
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()
|
await page.close()
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"原神每日素材更新出错... {type(e)}: {e}")
|
logger.error(f"原神每日素材更新出错... {type(e)}: {e}")
|
||||||
if page:
|
if page:
|
||||||
await page.close()
|
page.close()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user