From c99292d3270402312eb53c0121e4821dbbb53d86 Mon Sep 17 00:00:00 2001 From: McElaga <1728903318@qq.com> Date: Thu, 9 Feb 2023 22:07:08 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=86=99=E5=8E=9F=E7=A5=9E=E4=BB=8A?= =?UTF-8?q?=E6=97=A5=E7=B4=A0=E6=9D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/genshin/material_remind/__init__.py | 69 +++------------------ 1 file changed, 10 insertions(+), 59 deletions(-) diff --git a/plugins/genshin/material_remind/__init__.py b/plugins/genshin/material_remind/__init__.py index df64ee27..68fe1afa 100755 --- a/plugins/genshin/material_remind/__init__.py +++ b/plugins/genshin/material_remind/__init__.py @@ -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