mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-04-13 18:11:03 +08:00
Fix rss token can not be hot changed
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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"],
|
||||
|
||||
Reference in New Issue
Block a user