zhenxun_bot/zhenxun/utils/browser.py
2024-02-25 03:18:34 +08:00

46 lines
998 B
Python

from nonebot import get_driver
from playwright.async_api import Browser, Playwright, async_playwright
from zhenxun.services.log import logger
driver = get_driver()
_playwright: Playwright | None = None
_browser: Browser | None = None
@driver.on_startup
async def start_browser():
global _playwright
global _browser
_playwright = await async_playwright().start()
_browser = await _playwright.chromium.launch()
@driver.on_shutdown
async def shutdown_browser():
if _browser:
await _browser.close()
if _playwright:
await _playwright.stop() # type: ignore
def get_browser() -> Browser:
if not _browser:
raise RuntimeError("playwright is not initalized")
return _browser
def install():
"""自动安装、更新 Chromium"""
logger.info("正在检查 Chromium 更新")
import sys
from playwright.__main__ import main
sys.argv = ["", "install", "chromium"]
try:
main()
except SystemExit:
pass