from DrissionPage import Chromium, ChromiumOptions
from loguru import logger

from .ua import random_ua
from ..config.config import AppCtx


class DPEngine:
    """DrissionPage 引擎"""

    def __init__(self, is_wap: bool = False, no_img: bool = True):
        chrome_opts = ChromiumOptions()
        chrome_opts.mute(True)  # 静音
        logger.debug(f"{AppCtx.g_app_config.headless_chrome=}")
        chrome_opts.headless(AppCtx.g_app_config.headless_chrome)  # 无头模式
        chrome_opts.no_imgs(no_img)  # 不加载图片
        chrome_opts.set_argument("--disable-gpu")  # 禁用GPU
        chrome_opts.set_argument('--ignore-certificate-errors')  # 忽略证书错误
        chrome_opts.set_argument('--start-maximized')  # 最大化启动
        chrome_opts.set_argument(f'--user-agent={random_ua(is_wap)}')  # 设置 UA
        # chrome_opts.incognito(True)
        chrome_opts.auto_port(True)
        # 设置代理
        if AppCtx.g_app_config.chrome.proxy:
            chrome_opts.set_argument('--proxy-server', AppCtx.g_app_config.chrome.proxy)

        # 创建浏览器对象
        self.browser = Chromium(addr_or_opts=chrome_opts)

    def close(self):
        self.browser.quit()
