You've already forked Douyin_Web_Live
架构修改,删除Edge浏览器支持,配置可以自己保存
This commit is contained in:
79
core/manager.py
Normal file
79
core/manager.py
Normal file
@ -0,0 +1,79 @@
|
||||
import logging
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from common import Singleton
|
||||
from common.items import TabInfo
|
||||
from config import ConfigManager
|
||||
from browser import BrowserManager
|
||||
from proxy import ProxyManager
|
||||
|
||||
_log = logging.getLogger("CoreManager")
|
||||
_log.setLevel(logging.DEBUG)
|
||||
|
||||
|
||||
class CoreManager(metaclass=Singleton):
|
||||
config_manager: "ConfigManager"
|
||||
browser_manager: "BrowserManager"
|
||||
proxy_manager: "ProxyManager"
|
||||
|
||||
def __del__(self):
|
||||
"""
|
||||
析构CoreManager,需要gracefully shutdown
|
||||
"""
|
||||
_log.debug("析构开始")
|
||||
try:
|
||||
_log.debug("析构浏览器管理器")
|
||||
self.browser_manager.terminate()
|
||||
except:
|
||||
pass
|
||||
finally:
|
||||
_log.debug("析构浏览器管理器完毕")
|
||||
try:
|
||||
_log.debug("析构Mitm代理管理器")
|
||||
self.proxy_manager.terminate()
|
||||
except:
|
||||
pass
|
||||
finally:
|
||||
_log.debug("析构Mitm代理管理器完毕")
|
||||
|
||||
def __init__(self):
|
||||
"""
|
||||
初始化CoreManager,初始化所有模块
|
||||
"""
|
||||
_log.debug("初始化配置管理器")
|
||||
self.config_manager = ConfigManager()
|
||||
_log.info("初始化配置管理器完毕")
|
||||
_log.debug("初始化Mitm代理管理器")
|
||||
self.proxy_manager = ProxyManager(self.config_manager)
|
||||
self.proxy_manager.start_loop()
|
||||
_log.info("初始化Mitm代理管理器完毕")
|
||||
_log.debug("初始化浏览器管理器")
|
||||
self.browser_manager = BrowserManager(self.config_manager)
|
||||
_log.info("初始化浏览器管理器完毕")
|
||||
self._open_config_tabs()
|
||||
|
||||
def restart(self):
|
||||
"""服务有问题?重启一下把"""
|
||||
self.__del__()
|
||||
self.__init__()
|
||||
|
||||
def open_tab(self, tab_info: "TabInfo"):
|
||||
self.browser_manager.open_tab(tab_info)
|
||||
|
||||
def close_tab(self, tab_info: "TabInfo"):
|
||||
self.browser_manager.close_tab(tab_info)
|
||||
|
||||
def _open_config_tabs(self):
|
||||
rooms = self.config_manager.config["douyin"]["rooms"]
|
||||
if type(rooms) is not list:
|
||||
rooms = [rooms]
|
||||
for room in rooms:
|
||||
if not urlparse(room).scheme:
|
||||
# 单独的房间号
|
||||
live_url = "https://live.douyin.com/" + room
|
||||
else:
|
||||
live_url = room
|
||||
tab_info = TabInfo()
|
||||
tab_info.url = live_url
|
||||
tab_info.tab_type = TabInfo.TAB_TYPE_LIVE
|
||||
self.open_tab(tab_info)
|
Reference in New Issue
Block a user