diff --git a/src/module/app.py b/src/module/app.py index 579d2708..5eb02247 100644 --- a/src/module/app.py +++ b/src/module/app.py @@ -3,7 +3,7 @@ import time import logging from module.conf import settings, setup_logger, LOG_PATH, DATA_PATH, RSSLink, VERSION -from module.utils import load_program_data, save_program_data, json_config +from module.utils import load_program_data, save_program_data from module.core import DownloadClient from module.manager import Renamer, FullSeasonGet @@ -12,7 +12,6 @@ from module.models import ProgramData logger = logging.getLogger(__name__) -RSS_LINK = RSSLink() def reset_log(): @@ -20,9 +19,9 @@ def reset_log(): os.remove(LOG_PATH) -def load_data_file() -> ProgramData: +def load_data_file(rss_link: str) -> ProgramData: empty_data = ProgramData( - rss_link=RSS_LINK, + rss_link=rss_link, data_version=settings.data_version, ) if not os.path.exists(DATA_PATH): @@ -31,20 +30,19 @@ def load_data_file() -> ProgramData: 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 != settings.data_version: + if program_data.rss_link != rss_link or program_data.data_version != settings.data_version: program_data = empty_data logger.info("Rebuilding data information...") return program_data - def main_process(program_data: ProgramData, download_client: DownloadClient): rename = Renamer(download_client) rss_analyser = RSSAnalyser() while True: times = 0 if settings.rss_parser.enable: - rss_analyser.run(program_data.bangumi_info, download_client) + rss_analyser.run(program_data.bangumi_info, download_client, program_data.rss_link) if settings.bangumi_manage.eps_complete and program_data.bangumi_info != []: FullSeasonGet().eps_complete(program_data.bangumi_info, download_client) logger.info("Running....") @@ -68,16 +66,17 @@ def show_info(): def run(): # 初始化 settings.reload() + rss_link = RSSLink() reset_log() setup_logger() show_info() - download_client = DownloadClient() - download_client.auth() - download_client.init_downloader() if settings.rss_parser.token in ["", "token", None]: logger.error("Please set your RSS token in config file.") exit(1) - download_client.rss_feed() - bangumi_data = load_data_file() + download_client = DownloadClient() + download_client.auth() + download_client.init_downloader() + download_client.rss_feed(rss_link) + bangumi_data = load_data_file(rss_link) # 主程序循环 main_process(bangumi_data, download_client) diff --git a/src/module/conf/__init__.py b/src/module/conf/__init__.py index 7911a72d..ffc8702d 100644 --- a/src/module/conf/__init__.py +++ b/src/module/conf/__init__.py @@ -6,7 +6,6 @@ TMDB_API = "32b19d6a05b512190a056fa4e747cbbc" DATA_PATH = "data/data.json" - class RSSLink(str): def __new__(cls): if "://" not in settings.rss_parser.custom_url: diff --git a/src/module/core/download_client.py b/src/module/core/download_client.py index a1a03e92..ef4d3ce1 100644 --- a/src/module/core/download_client.py +++ b/src/module/core/download_client.py @@ -3,10 +3,9 @@ import logging import os from module.downloader import getClient -from module.conf import settings, RSSLink +from module.conf import settings from module.models import BangumiData -RSS_LINK = RSSLink() logger = logging.getLogger(__name__) @@ -63,20 +62,20 @@ class DownloadClient: self.client.rss_set_rule(rule_name=f"{rule_name} S{season}", rule_def=rule) logger.info(f"Add {official_name} Season {season}") - def rss_feed(self): + def rss_feed(self, rss_link): # TODO: 定时刷新 RSS - if self.client.get_rss_info() == RSS_LINK: + if self.client.get_rss_info() == rss_link: logger.info("RSS Already exists.") else: logger.info("No feed exists, start adding feed.") - self.client.rss_add_feed(url=RSS_LINK, item_path="Mikan_RSS") + self.client.rss_add_feed(url=rss_link, item_path="Mikan_RSS") logger.info("Add RSS Feed successfully.") def add_collection_feed(self, rss_link, item_path): self.client.rss_add_feed(url=rss_link, item_path=item_path) logger.info("Add RSS Feed successfully.") - def add_rules(self, bangumi_info: list[BangumiData], rss_link=RSS_LINK): + def add_rules(self, bangumi_info: list[BangumiData], rss_link: str): logger.debug("Start adding rules.") for info in bangumi_info: if not info.added: diff --git a/src/module/rss/rss_analyser.py b/src/module/rss/rss_analyser.py index f90ad34e..b2e8e7c7 100644 --- a/src/module/rss/rss_analyser.py +++ b/src/module/rss/rss_analyser.py @@ -1,30 +1,29 @@ import re import logging + from module.network import RequestContent from module.parser import TitleParser -from module.conf import RSSLink from module.core import DownloadClient from module.models import BangumiData logger = logging.getLogger(__name__) -RSS_LINK = RSSLink() class RSSAnalyser: def __init__(self): self._title_analyser = TitleParser() - - def find_id(self, bangumi_info: list[BangumiData]) -> int: + @staticmethod + def find_id(bangumi_info: list[BangumiData]) -> int: _id = 0 for info in bangumi_info: if info.id > _id: _id = info.id return _id - def rss_to_datas(self, bangumi_info: list[BangumiData]) -> list[BangumiData]: + def rss_to_datas(self, bangumi_info: list[BangumiData], rss_link: str) -> list[BangumiData]: with RequestContent() as req: - rss_torrents = req.get_torrents(RSS_LINK) + rss_torrents = req.get_torrents(rss_link) # Find largest bangumi id _id = self.find_id(bangumi_info) for torrent in rss_torrents: @@ -53,11 +52,11 @@ class RSSAnalyser: except Exception as e: logger.debug(e) - def run(self, bangumi_info: list[BangumiData], download_client: DownloadClient): + def run(self, bangumi_info: list[BangumiData], download_client: DownloadClient, rss_link: str): logger.info("Start collecting RSS info.") try: - self.rss_to_datas(bangumi_info) - download_client.add_rules(bangumi_info, rss_link=RSS_LINK) + self.rss_to_datas(bangumi_info, rss_link) + download_client.add_rules(bangumi_info, rss_link=rss_link) except Exception as e: logger.debug(e) logger.info("Finished") diff --git a/src/module/utils/bangumi_data.py b/src/module/utils/bangumi_data.py index e01a6d14..248e6d93 100644 --- a/src/module/utils/bangumi_data.py +++ b/src/module/utils/bangumi_data.py @@ -11,8 +11,9 @@ def load_program_data(path: str) -> ProgramData: try: data = ProgramData(**data) logger.info("Data file loaded") - except TypeError: + except Exception as e: logger.warning("Data file is not compatible with the current version, rebuilding...") + logger.debug(e) data = ProgramData( rss_link=data["rss_link"], data_version=data["data_version"],