From f61bbd00b78897c37310c89ef4021e3fa738cf9a Mon Sep 17 00:00:00 2001 From: shoucandanghehe Date: Thu, 27 Jun 2024 13:53:34 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=88=AA=E5=9B=BE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_plugin_tetris_stats/utils/screenshot.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/nonebot_plugin_tetris_stats/utils/screenshot.py b/nonebot_plugin_tetris_stats/utils/screenshot.py index bad942a..fa4579f 100644 --- a/nonebot_plugin_tetris_stats/utils/screenshot.py +++ b/nonebot_plugin_tetris_stats/utils/screenshot.py @@ -1,5 +1,5 @@ from nonebot import get_plugin_config -from playwright.async_api import TimeoutError +from playwright.async_api import TimeoutError, ViewportSize from ..config.config import Config from .browser import BrowserManager @@ -12,10 +12,18 @@ config = get_plugin_config(Config) async def screenshot(url: str) -> bytes: browser = await BrowserManager.get_browser() async with ( - await browser.new_page( - viewport={'width': 3000, 'height': 3000}, device_scale_factor=config.tetris_screenshot_quality - ) as page, + await browser.new_page(device_scale_factor=config.tetris_screenshot_quality) as page, ): await page.goto(url) await page.wait_for_load_state('networkidle') + size: ViewportSize = await page.evaluate(""" + () => { + const element = document.querySelector('#content'); + return { + width: element.offsetWidth, + height: element.offsetHeight, + }; + }; + """) + await page.set_viewport_size(size) return await page.locator('id=content').screenshot(timeout=5000, type='png')