mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
🧑💻添加更多实用开发配置项 (#555)
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from nonebot import get_driver, get_plugin_config
|
from nonebot import get_driver, get_plugin_config
|
||||||
from nonebot_plugin_localstore import get_plugin_cache_dir, get_plugin_data_dir
|
from nonebot_plugin_localstore import get_plugin_cache_dir, get_plugin_data_dir
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
@@ -14,11 +16,17 @@ class Proxy(BaseModel):
|
|||||||
top: str | None = None
|
top: str | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class Dev(BaseModel):
|
||||||
|
enabled: bool = False
|
||||||
|
template_path: Path | None = None
|
||||||
|
enable_template_check: bool = True
|
||||||
|
|
||||||
|
|
||||||
class ScopedConfig(BaseModel):
|
class ScopedConfig(BaseModel):
|
||||||
request_timeout: float = 30.0
|
request_timeout: float = 30.0
|
||||||
screenshot_quality: float = 2
|
screenshot_quality: float = 2
|
||||||
proxy: Proxy = Field(default_factory=Proxy)
|
proxy: Proxy = Field(default_factory=Proxy)
|
||||||
development: bool = False
|
dev: Dev = Field(default_factory=Dev)
|
||||||
|
|
||||||
|
|
||||||
class Config(BaseModel):
|
class Config(BaseModel):
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ async def get_tetra_league_data() -> None:
|
|||||||
await session.commit()
|
await session.commit()
|
||||||
|
|
||||||
|
|
||||||
if not config.tetris.development:
|
if not config.tetris.dev.enabled:
|
||||||
|
|
||||||
@driver.on_startup
|
@driver.on_startup
|
||||||
async def _() -> None:
|
async def _() -> None:
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ class BrowserManager:
|
|||||||
"""启动浏览器实例"""
|
"""启动浏览器实例"""
|
||||||
playwright = await async_playwright().start()
|
playwright = await async_playwright().start()
|
||||||
cls._browser = await playwright.firefox.launch(
|
cls._browser = await playwright.firefox.launch(
|
||||||
headless=not config.tetris.development,
|
headless=not config.tetris.dev.enabled,
|
||||||
firefox_user_prefs={
|
firefox_user_prefs={
|
||||||
'network.http.max-persistent-connections-per-server': 64,
|
'network.http.max-persistent-connections-per-server': 64,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ class HostPage:
|
|||||||
async def __aenter__(self) -> str:
|
async def __aenter__(self) -> str:
|
||||||
return self.page_hash
|
return self.page_hash
|
||||||
|
|
||||||
if not config.tetris.development:
|
if not config.tetris.dev.enabled:
|
||||||
|
|
||||||
async def __aexit__(self, exc_type, exc, tb) -> None: # noqa: ANN001
|
async def __aexit__(self, exc_type, exc, tb) -> None: # noqa: ANN001
|
||||||
self.pages.pop(self.page_hash, None)
|
self.pages.pop(self.page_hash, None)
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ from ..config.config import CACHE_PATH, DATA_PATH, config
|
|||||||
|
|
||||||
driver = get_driver()
|
driver = get_driver()
|
||||||
|
|
||||||
TEMPLATES_DIR = DATA_PATH / 'templates'
|
TEMPLATES_DIR = config.tetris.dev.template_path or DATA_PATH / 'templates'
|
||||||
|
|
||||||
|
|
||||||
alc = on_alconna(Alconna('更新模板', Option('--revision', Args['revision', str], alias={'-R'})), permission=SUPERUSER)
|
alc = on_alconna(Alconna('更新模板', Option('--revision', Args['revision', str], alias={'-R'})), permission=SUPERUSER)
|
||||||
|
|
||||||
@@ -111,16 +112,6 @@ async def check_tag(tag: str) -> bool:
|
|||||||
).status_code != HTTPStatus.NOT_FOUND
|
).status_code != HTTPStatus.NOT_FOUND
|
||||||
|
|
||||||
|
|
||||||
@driver.on_startup
|
|
||||||
async def _():
|
|
||||||
if (path := (TEMPLATES_DIR / 'hash.sha256')).is_file() and await check_hash(path):
|
|
||||||
logger.success('模板验证成功')
|
|
||||||
return
|
|
||||||
if not await init_templates('latest'):
|
|
||||||
msg = '模板初始化失败'
|
|
||||||
raise RuntimeError(msg)
|
|
||||||
|
|
||||||
|
|
||||||
@alc.handle()
|
@alc.handle()
|
||||||
async def _(revision: str | None = None):
|
async def _(revision: str | None = None):
|
||||||
if revision is not None and not await check_tag(revision):
|
if revision is not None and not await check_tag(revision):
|
||||||
@@ -129,3 +120,17 @@ async def _(revision: str | None = None):
|
|||||||
if await init_templates(revision or 'latest'):
|
if await init_templates(revision or 'latest'):
|
||||||
await alc.finish('更新模板成功')
|
await alc.finish('更新模板成功')
|
||||||
await alc.finish('更新模板失败')
|
await alc.finish('更新模板失败')
|
||||||
|
|
||||||
|
|
||||||
|
if config.tetris.dev.enable_template_check:
|
||||||
|
# !https://github.com/python/mypy/issues/19516
|
||||||
|
# 只能放def后面了(
|
||||||
|
|
||||||
|
@driver.on_startup
|
||||||
|
async def _():
|
||||||
|
if (path := (TEMPLATES_DIR / 'hash.sha256')).is_file() and await check_hash(path):
|
||||||
|
logger.success('模板验证成功')
|
||||||
|
return
|
||||||
|
if not await init_templates('latest'):
|
||||||
|
msg = '模板初始化失败'
|
||||||
|
raise RuntimeError(msg)
|
||||||
|
|||||||
Reference in New Issue
Block a user