zhenxun_bot/utils/browser.py

39 lines
1.0 KiB
Python
Raw Normal View History

2022-06-18 14:31:44 +08:00
import asyncio
2021-11-23 21:44:59 +08:00
from typing import Optional
from nonebot.log import logger
from playwright.async_api import Browser, async_playwright
from services.log import logger
_browser: Optional[Browser] = None
async def init(**kwargs) -> Optional[Browser]:
2022-04-26 14:45:04 +08:00
global _browser
2022-06-18 14:31:44 +08:00
browser = await async_playwright().start()
2021-11-23 21:44:59 +08:00
try:
_browser = await browser.chromium.launch(**kwargs)
return _browser
2022-04-26 14:45:04 +08:00
except Exception as e:
2022-07-03 22:00:49 +08:00
# logger.warning(f"启动chromium发生错误 {type(e)}{e}")
await asyncio.get_event_loop().run_in_executor(None, install)
2022-06-18 14:31:44 +08:00
_browser = await browser.chromium.launch(**kwargs)
2022-04-26 14:45:04 +08:00
return None
2021-11-23 21:44:59 +08:00
async def get_browser(**kwargs) -> Browser:
return _browser or await init(**kwargs)
def install():
"""自动安装、更新 Chromium"""
logger.info("正在检查 Chromium 更新")
import sys
from playwright.__main__ import main
sys.argv = ["", "install", "chromium"]
2022-02-19 18:20:19 +08:00
try:
main()
except SystemExit:
pass