Fix rss token can not be hot changed

This commit is contained in:
EstrellaXD
2023-04-26 21:36:50 +08:00
parent c07d9466d5
commit cfe1fba9c7
5 changed files with 26 additions and 29 deletions

View File

@@ -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)

View File

@@ -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:

View File

@@ -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:

View File

@@ -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")

View File

@@ -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"],