From 8b7de6745bdc2cad11dbdeb75136f1fc550ef60e Mon Sep 17 00:00:00 2001 From: shoucandanghehe Date: Mon, 28 Apr 2025 04:08:55 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E6=B7=BB=E5=8A=A0=20development=20?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_plugin_tetris_stats/config/config.py | 1 + .../games/tetrio/rank/__init__.py | 19 +++++++++++-------- nonebot_plugin_tetris_stats/utils/browser.py | 3 +++ nonebot_plugin_tetris_stats/utils/host.py | 12 +++++++++--- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/nonebot_plugin_tetris_stats/config/config.py b/nonebot_plugin_tetris_stats/config/config.py index e4426d7..259e5ec 100644 --- a/nonebot_plugin_tetris_stats/config/config.py +++ b/nonebot_plugin_tetris_stats/config/config.py @@ -18,6 +18,7 @@ class ScopedConfig(BaseModel): request_timeout: float = 30.0 screenshot_quality: float = 2 proxy: Proxy = Field(default_factory=Proxy) + development: bool = False class Config(BaseModel): diff --git a/nonebot_plugin_tetris_stats/games/tetrio/rank/__init__.py b/nonebot_plugin_tetris_stats/games/tetrio/rank/__init__.py index 53a06c6..7af74a6 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/rank/__init__.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/rank/__init__.py @@ -12,6 +12,7 @@ from nonebot_plugin_apscheduler import scheduler from nonebot_plugin_orm import get_session from sqlalchemy import select +from ....config.config import config from ....utils.exception import RequestError from ....utils.retry import retry from .. import alc @@ -136,14 +137,16 @@ async def get_tetra_league_data() -> None: await session.commit() -@driver.on_startup -async def _() -> None: - async with get_session() as session: - latest_time = await session.scalar( - select(TETRIOLeagueStats.update_time).order_by(TETRIOLeagueStats.id.desc()).limit(1) - ) - if latest_time is None or datetime.now(tz=UTC) - latest_time.replace(tzinfo=UTC) > timedelta(hours=6): - await get_tetra_league_data() +if not config.tetris.development: + + @driver.on_startup + async def _() -> None: + async with get_session() as session: + latest_time = await session.scalar( + select(TETRIOLeagueStats.update_time).order_by(TETRIOLeagueStats.id.desc()).limit(1) + ) + if latest_time is None or datetime.now(tz=UTC) - latest_time.replace(tzinfo=UTC) > timedelta(hours=6): + await get_tetra_league_data() from . import all, detail # noqa: A004, E402 diff --git a/nonebot_plugin_tetris_stats/utils/browser.py b/nonebot_plugin_tetris_stats/utils/browser.py index cb6f5f8..9891577 100644 --- a/nonebot_plugin_tetris_stats/utils/browser.py +++ b/nonebot_plugin_tetris_stats/utils/browser.py @@ -10,6 +10,8 @@ from nonebot.log import logger from playwright.__main__ import main from playwright.async_api import Browser, BrowserContext, async_playwright +from ..config.config import config + driver = get_driver() global_config = driver.config @@ -76,6 +78,7 @@ class BrowserManager: """启动浏览器实例""" playwright = await async_playwright().start() cls._browser = await playwright.firefox.launch( + headless=not config.tetris.development, firefox_user_prefs={ 'network.http.max-persistent-connections-per-server': 64, }, diff --git a/nonebot_plugin_tetris_stats/utils/host.py b/nonebot_plugin_tetris_stats/utils/host.py index 288e403..150d968 100644 --- a/nonebot_plugin_tetris_stats/utils/host.py +++ b/nonebot_plugin_tetris_stats/utils/host.py @@ -12,7 +12,7 @@ from nonebot import get_app, get_driver from nonebot.log import logger from yarl import URL -from ..config.config import CACHE_PATH +from ..config.config import CACHE_PATH, config from ..games.tetrio.api.cache import request from .image import img_to_png from .templates import TEMPLATES_DIR @@ -45,8 +45,14 @@ class HostPage: async def __aenter__(self) -> str: return self.page_hash - async def __aexit__(self, exc_type, exc, tb) -> None: # noqa: ANN001 - self.pages.pop(self.page_hash, None) + if not config.tetris.development: + + async def __aexit__(self, exc_type, exc, tb) -> None: # noqa: ANN001 + self.pages.pop(self.page_hash, None) + else: + + async def __aexit__(self, exc_type, exc, tb) -> None: # noqa: ANN001 + pass @driver.on_startup