This repository has been archived on 2024-09-10. You can view files and clone it, but cannot push or open issues or pull requests.
Douyin_Web_Live/config/manager.py
2022-07-15 17:22:58 +08:00

78 lines
2.3 KiB
Python

import logging
import os
from ruamel.yaml import YAML
from common import Singleton
_log = logging.getLogger("ConfigManager")
class ConfigManager(metaclass=Singleton):
"""默认配置"""
_default_config = {
"mitm": {
"host": "127.0.0.1",
"port": 8080,
},
"webdriver": {
"headless": False,
"use": "chrome",
"chrome": {
"bin": "chromedriver",
"no_sandbox": True
}
},
"output": {
"use": [],
"xml": {
"save_path": "./",
"file_pattern": "{room_id}_{ts}.xml"
},
"debug": {
"save_path": "./debug",
"known": False
},
},
"douyin": {
"rooms": [],
"users": [],
},
}
"""配置文件路径"""
_config_file: "os.PathLike[str] || str"
"""当前实例中,配置文件内容"""
_current_config: "dict" = {}
def __init__(self, config_file="settings.yml"):
_log.debug("配置文件路径:%s", config_file)
self._config_file = config_file
if not os.path.exists(config_file):
_log.warning("配置文件不存在,写入初始化配置")
self._current_config = self._default_config
self.save_config()
else:
self.load_config()
def load_config(self):
_log.debug("读取文件%s的配置内容", self._config_file)
with open(self._config_file, "r", encoding="UTF8") as _f:
yaml = YAML(typ="unsafe", pure=True)
self._current_config = yaml.load(_f)
_log.debug("读取文件%s的配置内容完毕", self._config_file)
def save_config(self):
_log.debug("向文件%s写入配置", self._config_file)
with open(self._config_file, "w", encoding="UTF8") as _f:
_log.debug("配置内容:", self._current_config)
yaml = YAML(typ="unsafe", pure=True)
yaml.dump(self._current_config, _f)
_log.debug("向文件%s写入配置完毕", self._config_file)
@property
def config(self):
return self._current_config
def get(self, key: str, default: str = None):
...