diff --git a/biliup/__main__.py b/biliup/__main__.py index 60d38b0..335e915 100644 --- a/biliup/__main__.py +++ b/biliup/__main__.py @@ -8,7 +8,6 @@ import shutil import biliup.common.reload from biliup.config import config -from biliup.database.db import SessionLocal, init from biliup import __version__, LOG_CONF from biliup.common.Daemon import Daemon from biliup.common.reload import AutoReload @@ -39,25 +38,33 @@ def arg_parser(): parser.set_defaults(func=lambda: asyncio.run(main(args))) args = parser.parse_args() biliup.common.reload.program_args = args.__dict__ - # 初始化数据库 - with SessionLocal() as db: - if init(args.no_http): + + is_stop = args.func == daemon.stop + + if not is_stop: + from biliup.database.db import SessionLocal, init + # 初始化数据库 + with SessionLocal() as db: try: config.load(args.config) - config.save_to_db(db) + # 如果配置文件不存在,不修改已有数据库 + if init(args.no_http): + config.save_to_db(db) except FileNotFoundError: - print(f'新版本不依赖配置文件,请访问 WebUI 修改配置') - config.load_from_db(db) - # db.remove() - LOG_CONF.update(config.get('LOGGING', {})) - if args.verbose: - LOG_CONF['loggers']['biliup']['level'] = args.verbose - LOG_CONF['root']['level'] = args.verbose - logging.config.dictConfig(LOG_CONF) - logging.getLogger('httpx').addFilter(DebugLevelFilter()) - # logging.getLogger('hpack').setLevel(logging.CRITICAL) - # logging.getLogger('httpx').setLevel(logging.CRITICAL) + print(f'新版本不依赖配置文件,请访问 WebUI 修改配置') + config.load_from_db(db) + # db.remove() + LOG_CONF.update(config.get('LOGGING', {})) + if args.verbose: + LOG_CONF['loggers']['biliup']['level'] = args.verbose + LOG_CONF['root']['level'] = args.verbose + logging.config.dictConfig(LOG_CONF) + logging.getLogger('httpx').addFilter(DebugLevelFilter()) + # logging.getLogger('hpack').setLevel(logging.CRITICAL) + # logging.getLogger('httpx').setLevel(logging.CRITICAL) if platform.system() == 'Windows': + if is_stop: + return return asyncio.run(main(args)) args.func() diff --git a/biliup/config.py b/biliup/config.py index 7f69b3f..ac02e1e 100644 --- a/biliup/config.py +++ b/biliup/config.py @@ -5,7 +5,6 @@ import os from collections import UserDict from sqlalchemy import select -from biliup.database.models import Configuration, LiveStreamers, UploadStreamers try: import tomllib @@ -30,6 +29,7 @@ class Config(UserDict): self.data["user"]["access_token"] = s["token_info"]["access_token"] def load_from_db(self, db): + from biliup.database.models import Configuration, LiveStreamers context = { 'url_upload_count': self.data.get('url_upload_count', {}), 'upload_filename': self.data.get('upload_filename', []), @@ -55,6 +55,7 @@ class Config(UserDict): # config.data[con.key] = con.value def save_to_db(self, db): + from biliup.database.models import Configuration, LiveStreamers, UploadStreamers for k, v in self['streamers'].items(): us = UploadStreamers(**UploadStreamers.filter_parameters( {"template_name": k, "tags": v.pop('tags', [k]), ** v})) diff --git a/biliup/engine/download.py b/biliup/engine/download.py index 99ed312..347ad10 100644 --- a/biliup/engine/download.py +++ b/biliup/engine/download.py @@ -80,6 +80,7 @@ class DownloadBase(ABC): raise NotImplementedError() def download(self): + logger.debug(f"{self.plugin_msg}: Start downloading {self.raw_stream_url}") if self.is_download: if not shutil.which("ffmpeg"): logger.error("未安装 FFMpeg 或不存在于 PATH 内")