From a05a1a50a7780baef77dea24df6a19434b76f531 Mon Sep 17 00:00:00 2001 From: EstrellaXD Date: Thu, 9 Jun 2022 00:43:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=87=8D=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=87=BA=E7=8E=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auto_bangumi/app.py | 3 +-- auto_bangumi/bangumi_parser/episode.py | 1 + auto_bangumi/bangumi_parser/fuzz_match.py | 30 +++++++++++++++++------ auto_bangumi/core/renamer.py | 10 +++++--- resource/anidb.py | 4 +-- 5 files changed, 33 insertions(+), 15 deletions(-) diff --git a/auto_bangumi/app.py b/auto_bangumi/app.py index a6841ace..568c9188 100644 --- a/auto_bangumi/app.py +++ b/auto_bangumi/app.py @@ -74,7 +74,6 @@ def run(): quit() download_client.rss_feed() rss_collector = RSSCollector() - renamer = Renamer(download_client) while True: bangumi_data = load_data_file() try: @@ -87,7 +86,7 @@ def run(): time.sleep(settings.first_sleep) bangumi_data["first_run"] = False save_data_file(bangumi_data) - renamer.run() + Renamer(download_client).run() time.sleep(settings.sleep_time) except Exception as e: if args.debug: diff --git a/auto_bangumi/bangumi_parser/episode.py b/auto_bangumi/bangumi_parser/episode.py index 0cbc3ca5..c738319b 100644 --- a/auto_bangumi/bangumi_parser/episode.py +++ b/auto_bangumi/bangumi_parser/episode.py @@ -8,6 +8,7 @@ class Episode: def __init__(self) -> None: self.raw: str = None self.name: str = None + self.official: str = None @dataclass class SeasonInfo: diff --git a/auto_bangumi/bangumi_parser/fuzz_match.py b/auto_bangumi/bangumi_parser/fuzz_match.py index 43325e9f..7a05890d 100644 --- a/auto_bangumi/bangumi_parser/fuzz_match.py +++ b/auto_bangumi/bangumi_parser/fuzz_match.py @@ -1,12 +1,28 @@ from thefuzz import fuzz +import logging + +logger = logging.getLogger(__name__) -# TODO 模糊匹配模块 +class FuzzMatch: + def __init__(self, anidb_data): + self.match_data = anidb_data + def match(self, title, info): + compare_value = [] + for type in ["main", "en", "ja", "zh-Hans", "zh-Hant"]: + if info[type] is not None: + a = fuzz.ratio(title.replace(" ", "").lower(), info[type].replace(" ", "").lower()) + compare_value.append(a) + for compare in info["other"]: + a = fuzz.ratio(title.replace(" ", "").lower(), compare.replace(" ", "").lower()) + compare_value.append(a) + return max(compare_value) -# class FuzzMatch: -# def __init__(self, anidb_data): -# self.match_data = anidb_data -# -# def fuzz(self, raw_name): -# fuzz.radio() \ No newline at end of file + def find_max_name(self, title): + value = [] + for info in self.match_data: + a = self.match(title, info) + value.append([a, info]) + logger.debug(max(value)) + return max(value) diff --git a/auto_bangumi/core/renamer.py b/auto_bangumi/core/renamer.py index 02ee22f1..5dbdc763 100644 --- a/auto_bangumi/core/renamer.py +++ b/auto_bangumi/core/renamer.py @@ -17,14 +17,14 @@ class Renamer: self.torrent_count = len(self.recent_info) def print_result(self): - logger.info(f"Finished checking {self.torrent_count} file's name.") + logger.info(f"Finished checking {self.torrent_count} files' name.") logger.info(f"Renamed {self.rename_count} files.") logger.info(f"Finished rename process.") def run(self): method_dict = {"pn": self._renamer.rename_pn, "normal": self._renamer.rename_normal} if settings.method not in method_dict: - logger.error(f"error method") + logger.error(f"Error method") else: for i in range(0, self.torrent_count): info = self.recent_info[i] @@ -35,11 +35,13 @@ class Renamer: else PureWindowsPath(info.content_path).name try: new_name = method_dict[settings.method](name) - logger.debug(f"{path_name}") - logger.debug(f"{new_name}") + logger.debug(f"Origin name: {path_name}") + logger.debug(f"New name: {new_name}") if path_name != new_name: self.client.rename_torrent_file(hash, path_name, new_name) self.rename_count += 1 + else: + continue except: logger.warning(f"{path_name} rename failed") if settings.remove_bad_torrent: diff --git a/resource/anidb.py b/resource/anidb.py index 4ea62aa3..713c0eb4 100644 --- a/resource/anidb.py +++ b/resource/anidb.py @@ -97,11 +97,11 @@ def get_title(id): if __name__ == "__main__": - ids = get_list(2022, 2) + ids = get_list(2022, 0) json = [] for id in ids: data = get_title(id) print(data) time.sleep(2.5) json.append(data) - json_config.save("season_summer.json", json) + json_config.save("season_winter.json", json)