diff --git a/src/module/app.py b/src/module/app.py index 34540dd9..7c381898 100644 --- a/src/module/app.py +++ b/src/module/app.py @@ -2,13 +2,12 @@ import os import time import logging -from module.conf import setup_logger, LOG_PATH, DATA_PATH, RSSLink, VERSION -from module.utils import load_program_data, save_program_data +from module.conf import setup_logger, LOG_PATH, RSSLink, VERSION from module.core import DownloadClient from module.manager import Renamer, FullSeasonGet from module.rss import RSSAnalyser -from module.models import ProgramData, Config +from module.models import Config logger = logging.getLogger(__name__) @@ -19,35 +18,17 @@ def reset_log(): os.remove(LOG_PATH) -def load_data_file(rss_link: str, data_version) -> ProgramData: - empty_data = ProgramData( - rss_link=rss_link, - data_version=data_version, - ) - if not os.path.exists(DATA_PATH): - program_data = empty_data - save_program_data(DATA_PATH, program_data) - logger.info("Building data information...") - else: - program_data = load_program_data(DATA_PATH) - if program_data.rss_link != rss_link or program_data.data_version != data_version: - program_data = empty_data - logger.info("Rebuilding data information...") - return program_data - - -def main_process(program_data: ProgramData, download_client: DownloadClient, _settings: Config): +def main_process(rss_link: str, download_client: DownloadClient, _settings: Config): rename = Renamer(download_client, _settings) rss_analyser = RSSAnalyser(_settings) while True: times = 0 if _settings.rss_parser.enable: - rss_analyser.run(program_data.bangumi_info, program_data.rss_link) - download_client.add_rules(program_data.bangumi_info, program_data.rss_link) - if _settings.bangumi_manage.eps_complete and program_data.bangumi_info != []: - FullSeasonGet(settings=_settings).eps_complete(program_data.bangumi_info, download_client) + extra_data = rss_analyser.run(rss_link=rss_link) + download_client.add_rules(extra_data, rss_link) + if _settings.bangumi_manage.eps_complete: + FullSeasonGet(settings=_settings).eps_complete(download_client) logger.info("Running....") - save_program_data(DATA_PATH, program_data) while times < _settings.program.rename_times: if _settings.bangumi_manage.enable: rename.rename() @@ -77,6 +58,5 @@ def run(settings: Config): download_client.auth() download_client.init_downloader() download_client.rss_feed(rss_link) - bangumi_data = load_data_file(rss_link, settings.data_version) # 主程序循环 - main_process(bangumi_data, download_client, settings) + main_process(rss_link, download_client, settings) diff --git a/src/module/database/connector.py b/src/module/database/connector.py index 56c0c776..8e1f43fd 100644 --- a/src/module/database/connector.py +++ b/src/module/database/connector.py @@ -30,11 +30,11 @@ class DataConnector: ); """ ) + self._conn.commit() def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): - self._conn.commit() self._conn.close() diff --git a/src/module/database/operator.py b/src/module/database/operator.py index a4c5deec..03456ea6 100644 --- a/src/module/database/operator.py +++ b/src/module/database/operator.py @@ -5,7 +5,8 @@ from module.models import BangumiData class DataOperator(DataConnector): - def data_to_db(self, data: BangumiData) -> dict: + @staticmethod + def data_to_db(data: BangumiData) -> dict: db_data = data.dict() for key, value in db_data.items(): if isinstance(value, bool): @@ -13,8 +14,9 @@ class DataOperator(DataConnector): elif isinstance(value, list): db_data[key] = ",".join(value) return db_data - - def db_to_data(self, db_data: dict) -> BangumiData: + + @staticmethod + def db_to_data(db_data: dict) -> BangumiData: for key, item in db_data.items(): if isinstance(item, int): if key not in ["id", "offset", "season"]: @@ -56,6 +58,7 @@ class DataOperator(DataConnector): :rss ) ''', db_data) + self._conn.commit() def insert_list(self, data: list[BangumiData]): db_data = [self.data_to_db(x) for x in data] @@ -90,6 +93,7 @@ class DataOperator(DataConnector): :rss ) ''', db_data) + self._conn.commit() def update(self, data: BangumiData) -> bool: db_data = self.data_to_db(data) @@ -108,6 +112,7 @@ class DataOperator(DataConnector): filter = :filter WHERE id = :id ''', db_data) + self._conn.commit() return self._cursor.rowcount == 1 def search(self, _id: int) -> BangumiData | None: diff --git a/src/module/downloader/__init__.py b/src/module/downloader/__init__.py index b7b33989..692c7f3e 100644 --- a/src/module/downloader/__init__.py +++ b/src/module/downloader/__init__.py @@ -9,7 +9,7 @@ def getClient(settings: Config): password = settings.downloader.password ssl = settings.downloader.ssl if type == "qbittorrent": - from .qb_downloader import QbDownloader + from module.downloader.client.qb_downloader import QbDownloader return QbDownloader(host, username, password, ssl) else: raise Exception(f"Unsupported downloader type: {type}") diff --git a/src/module/downloader/tr_downloader.py b/src/module/downloader/client/__init__.py similarity index 100% rename from src/module/downloader/tr_downloader.py rename to src/module/downloader/client/__init__.py diff --git a/src/module/downloader/aria2_downloader.py b/src/module/downloader/client/aria2_downloader.py similarity index 94% rename from src/module/downloader/aria2_downloader.py rename to src/module/downloader/client/aria2_downloader.py index 95400334..b612e63c 100644 --- a/src/module/downloader/aria2_downloader.py +++ b/src/module/downloader/client/aria2_downloader.py @@ -6,7 +6,7 @@ from aria2p import Client, ClientException, API from module.conf import settings -from .exceptions import ConflictError +from module.downloader.exceptions import ConflictError logger = logging.getLogger(__name__) diff --git a/src/module/downloader/qb_downloader.py b/src/module/downloader/client/qb_downloader.py similarity index 100% rename from src/module/downloader/qb_downloader.py rename to src/module/downloader/client/qb_downloader.py diff --git a/src/module/downloader/client/tr_downloader.py b/src/module/downloader/client/tr_downloader.py new file mode 100644 index 00000000..e69de29b