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')