diff --git a/.gitignore b/.gitignore index ff0573f4..451c94c8 100644 --- a/.gitignore +++ b/.gitignore @@ -165,3 +165,4 @@ cython_debug/ /auto_bangumi/tester.py /resource/names.txt +/auto_bangumi/webui/ diff --git a/.idea/Bangumi_Auto_Rename.iml b/.idea/Bangumi_Auto_Rename.iml index 25a1b778..f79e6193 100644 --- a/.idea/Bangumi_Auto_Rename.iml +++ b/.idea/Bangumi_Auto_Rename.iml @@ -4,7 +4,8 @@ - + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 37b833f1..e863a931 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/auto_bangumi/app.py b/auto_bangumi/app.py index a8c84658..c21113eb 100644 --- a/auto_bangumi/app.py +++ b/auto_bangumi/app.py @@ -3,8 +3,6 @@ import os import time import logging -from multiprocessing import Process - from conf import settings from argument_parser import parse from log import setup_logger @@ -31,6 +29,7 @@ def load_data_file(): bangumi_data = json_config.load(info_path) if bangumi_data["data_version"] != settings.data_version or bangumi_data["rss_link"] != settings.rss_link: bangumi_data["bangumi_info"] = [] + bangumi_data["data_version"] = settings.data_version bangumi_data["first_run"] = True bangumi_data["rss_link"] = settings.rss_link logger.info("Rebuilding data information...") @@ -51,18 +50,21 @@ def show_info(): logger.info(" /_/ \_\__,_|\__\___/|____/ \__,_|_| |_|\__, |\__,_|_| |_| |_|_|") logger.info(" __/ | ") logger.info(" |___/ ") - logger.info("Version 2.4.10 Author: EstrellaXD Twitter: https://twitter.com/Estrella_Pan") + logger.info(f"Version {settings.version} Author: EstrellaXD Twitter: https://twitter.com/Estrella_Pan") logger.info("GitHub: https://github.com/EstrellaXD/Auto_Bangumi/") logger.info("Starting AutoBangumi...") + def run(): args = parse() if args.debug: try: from const_dev import DEV_SETTINGS + import sys except ModuleNotFoundError: logger.debug("Please copy `const_dev.py` to `const_dev.py` to use custom settings") + sys.path.append('/opt/homebrew/Caskroom/miniforge/base/envs/auto_bangumi/bin/python') settings.init(DEV_SETTINGS) else: settings.init() @@ -83,7 +85,7 @@ def run(): rss_collector.collect(bangumi_data) if settings.enable_eps_complete: download_client.eps_collect(bangumi_data["bangumi_info"]) - download_client.add_rules(bangumi_data["bangumi_info"]) + download_client.add_rules(bangumi_data["bangumi_info"], settings.rss_link) if bangumi_data["first_run"]: logger.info(f"Waiting for downloading torrents...") time.sleep(settings.first_sleep) diff --git a/auto_bangumi/bangumi_parser/fuzz_match.py b/auto_bangumi/bangumi_parser/fuzz_match.py index 61241c2e..d0e8ffb3 100644 --- a/auto_bangumi/bangumi_parser/fuzz_match.py +++ b/auto_bangumi/bangumi_parser/fuzz_match.py @@ -10,11 +10,11 @@ class FuzzMatch: def __init__(self): try: anidb_data = json_config.get(settings.anidb_url) - json_config.save("anidb.json", anidb_data) + json_config.save(settings.anidb_path, anidb_data) except Exception as e: logger.debug(e) logger.info(f"Fail to get anidb data, reading local data") - anidb_data = json_config.load("anidb.json") + anidb_data = json_config.load(settings.anidb_path) self.match_data = anidb_data @staticmethod diff --git a/auto_bangumi/const.py b/auto_bangumi/const.py index cb371b9d..6bd7d0c7 100644 --- a/auto_bangumi/const.py +++ b/auto_bangumi/const.py @@ -1,11 +1,13 @@ # -*- encoding: utf-8 -*- DEFAULT_SETTINGS = { - "host_ip": "localhost:8181", + "version": "2.5.0-beta1", + "data_version": 4.0, + "host_ip": "localhost:8080", "sleep_time": 1800, "user_name": "admin", "password": "adminadmin", - "download_path": "", + "download_path": "/downloads/Bangumi", "method": "pn", "enable_group_tag": False, "info_path": "/config/bangumi.json", @@ -18,7 +20,6 @@ DEFAULT_SETTINGS = { "season_one_tag": True, "remove_bad_torrent": False, "dev_debug": False, - "data_version": 4.0, "enable_eps_complete": False, "first_sleep": 600, "webui_port": 7892, diff --git a/auto_bangumi/core/download_client.py b/auto_bangumi/core/download_client.py index 68bede5b..6934e5d8 100644 --- a/auto_bangumi/core/download_client.py +++ b/auto_bangumi/core/download_client.py @@ -30,7 +30,8 @@ class DownloadClient: prefs = self.client.get_app_prefs() settings.download_path = os.path.join(prefs["save_path"], "Bangumi") - def set_rule(self, official_name, raw_name, group, season, rss): + def set_rule(self, info: dict, rss): + official_name, raw_name, season, group = info["title"], info["title_raw"], info["season"], info["group"] rule = { "enable": True, "mustContain": raw_name, @@ -53,7 +54,7 @@ class DownloadClient: ), } rule_name = f"[{group}] {official_name}" if settings.enable_group_tag else official_name - self.client.rss_set_rule(rule_name=rule_name, rule_def=rule) + self.client.rss_set_rule(rule_name=f"{rule_name} {season}", rule_def=rule) def rss_feed(self): try: @@ -72,11 +73,11 @@ class DownloadClient: self.client.rss_add_feed(url=rss_link, item_path=item_path) logger.info("Add RSS Feed successfully.") - def add_rules(self, bangumi_info, rss_link=settings.rss_link): + def add_rules(self, bangumi_info, rss_link): logger.info("Start adding rules.") for info in bangumi_info: if not info["added"]: - self.set_rule(info["title"], info["title_raw"], info["group"], info["season"], rss_link) + self.set_rule(info, rss_link) info["added"] = True logger.info("Finished.") diff --git a/auto_bangumi/core/eps_complete.py b/auto_bangumi/core/eps_complete.py index 595f2fa8..b1bcb10a 100644 --- a/auto_bangumi/core/eps_complete.py +++ b/auto_bangumi/core/eps_complete.py @@ -13,19 +13,10 @@ logger = logging.getLogger(__name__) class FullSeasonGet: def __init__(self, group, bangumi_name, season, sub, source, dpi): self.bangumi_name = re.sub(settings.rule_name_re, " ", bangumi_name).strip() - if group is not None: - self.group = group - else: - self.group = "" + self.group = "" if group is None else group self.season = season - if sub is not None: - self.subtitle = sub - else: - self.subtitle = "" - if source is not None: - self.source = source - else: - self.source = "" + self.subtitle = "" if sub is None else sub + self.source = "" if source is None else source self.dpi = dpi def get_season_rss(self): diff --git a/auto_bangumi/web.py b/auto_bangumi/web.py index 08b88d63..83964aaa 100644 --- a/auto_bangumi/web.py +++ b/auto_bangumi/web.py @@ -72,9 +72,20 @@ async def receive(link: RSS): settings.init(DEV_SETTINGS) client = DownloadClient() client.add_collection_feed(link.link, item_path=data["title"]) - client.add_rules(data, rss_link=link.link) + client.set_rule(data, link.link) return "Successed" +class Search(BaseModel): + group: str + title: str + subtitle: str + + +@app.post("/api/v1/search") +async def search(input: Search): + return "Nothing Happened" + + if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=settings.webui_port) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 2e934b92..c2e858e0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,10 @@ qbittorrent-api -bs4~=4.11.1 +bs4 requests~=2.27.1 lxml thefuzz~=0.19.0 setuptools~=62.1.0 -fastapi~=0.78.0 -uvicorn \ No newline at end of file +fastapi +uvicorn +jinja2 \ No newline at end of file