From 2161cbd917cbf4c139238575b3dd346639e7d956 Mon Sep 17 00:00:00 2001 From: EstrellaXD Date: Thu, 7 Jul 2022 19:55:53 +0800 Subject: [PATCH] =?UTF-8?q?2.5.7=20=E4=BF=AE=E5=A4=8D=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E4=B8=8D=E4=B8=8Aqb=E4=B9=8B=E5=90=8E=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BF=AE=E5=A4=8D=E5=90=8E?= =?UTF-8?q?=E7=BC=80=E4=B8=A2=E5=A4=B1=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/core/renamer.py | 11 +++++--- auto_bangumi/downloader/qb_downloader.py | 5 +++- auto_bangumi/parser/analyser/raw_parser.py | 2 +- auto_bangumi/parser/analyser/rename_parser.py | 28 +++++++++---------- auto_bangumi/parser/title_parser.py | 4 +-- 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/auto_bangumi/core/renamer.py b/auto_bangumi/core/renamer.py index 4feeb69c..a6a67748 100644 --- a/auto_bangumi/core/renamer.py +++ b/auto_bangumi/core/renamer.py @@ -1,6 +1,7 @@ import logging import os.path import re +import os.path from pathlib import PurePath, PureWindowsPath @@ -27,6 +28,7 @@ class Renamer: return recent_info, torrent_count def split_path(self, path: str): + suffix = os.path.splitext(path)[-1] path = path.replace(settings.download_path, "") path_parts = PurePath(path).parts \ if PurePath(path).name != path \ @@ -45,7 +47,7 @@ class Renamer: download_path = path_parts[1] except IndexError: download_path = "" - return path_name, season, folder_name, download_path + return path_name, season, folder_name, suffix, download_path def run(self): recent_info, torrent_count = self.get_torrent_info() @@ -53,9 +55,10 @@ class Renamer: for info in recent_info: name = info.name torrent_hash = info.hash - path_name, season, folder_name, _ = self.split_path(info.content_path) + path_name, season, folder_name, suffix, _ = self.split_path(info.content_path) + try: - new_name = self._renamer.download_parser(name, folder_name, season, settings.method) + new_name = self._renamer.download_parser(name, folder_name, season, suffix, settings.method) if path_name != new_name: self.client.rename_torrent_file(torrent_hash, path_name, new_name) rename_count += 1 @@ -71,7 +74,7 @@ class Renamer: recent_info, _ = self.get_torrent_info() for info in recent_info: torrent_hash = info.hash - _, season, folder_name, download_path = self.split_path(info.content_path) + _, season, folder_name, _, download_path = self.split_path(info.content_path) new_path = os.path.join(settings.download_path, folder_name, f"Season {season}") # print(new_path) self.client.move_torrent(torrent_hash, new_path) diff --git a/auto_bangumi/downloader/qb_downloader.py b/auto_bangumi/downloader/qb_downloader.py index a74307fe..440be7f2 100644 --- a/auto_bangumi/downloader/qb_downloader.py +++ b/auto_bangumi/downloader/qb_downloader.py @@ -12,8 +12,8 @@ from downloader.exceptions import ConflictError logger = logging.getLogger(__name__) -@qb_connect_failed_wait class QbDownloader: + @qb_connect_failed_wait def __init__(self, host, username, password): self._client = Client( host=host, @@ -30,12 +30,15 @@ class QbDownloader: ) time.sleep(settings.connect_retry_interval) + @qb_connect_failed_wait def prefs_init(self, prefs): return self._client.app_set_preferences(prefs=prefs) + @qb_connect_failed_wait def get_app_prefs(self): return self._client.app_preferences() + @qb_connect_failed_wait def torrents_info(self, status_filter, category): return self._client.torrents_info(status_filter, category) diff --git a/auto_bangumi/parser/analyser/raw_parser.py b/auto_bangumi/parser/analyser/raw_parser.py index e951b736..c045c360 100644 --- a/auto_bangumi/parser/analyser/raw_parser.py +++ b/auto_bangumi/parser/analyser/raw_parser.py @@ -84,7 +84,7 @@ class RawParser: if l > compare: compare = l compare_idx = idx - return split[compare_idx], split + return split[compare_idx].strip(), split @staticmethod def find_tags(other): diff --git a/auto_bangumi/parser/analyser/rename_parser.py b/auto_bangumi/parser/analyser/rename_parser.py index 231e8aa8..56290267 100644 --- a/auto_bangumi/parser/analyser/rename_parser.py +++ b/auto_bangumi/parser/analyser/rename_parser.py @@ -31,6 +31,7 @@ class DownloadParser: def rename_pn(self, info_dict): name = info_dict["name"] season = info_dict["season"] + suffix = info_dict["suffix"] n = re.split(r"[\[\]()【】()]", name) file_name = name.replace(f"[{n[1]}]", "") if season < 10: @@ -42,13 +43,14 @@ class DownloadParser: new_name = re.sub( r"[\[\]]", "", - f"{title} S{season}E{match_obj.group(2)}{path.splitext(name)[-1]}", + f"{title} S{season}E{match_obj.group(2)}{suffix}", ) return new_name def rename_advance(self, info_dict): name = info_dict["name"] folder_name = info_dict["folder_name"] + suffix = info_dict["suffix"] season = info_dict["season"] n = re.split(r"[\[\]()【】()]", name) file_name = name.replace(f"[{n[1]}]", "") @@ -60,12 +62,13 @@ class DownloadParser: new_name = re.sub( r"[\[\]]", "", - f"{folder_name} S{season}E{match_obj.group(2)}{path.splitext(name)[-1]}", + f"{folder_name} S{season}E{match_obj.group(2)}{suffix}", ) return new_name def rename_no_season_pn(self, info_dict): name = info_dict["name"] + suffix = info_dict["suffix"] n = re.split(r"[\[\]()【】()]", name) file_name = name.replace(f"[{n[1]}]", "") for rule in self.rules: @@ -75,38 +78,33 @@ class DownloadParser: new_name = re.sub( r"[\[\]]", "", - f"{title} E{match_obj.group(2)}{path.splitext(name)[-1]}", + f"{title} E{match_obj.group(2)}{suffix}", ) return new_name - def download_rename(self, name, folder_name, season, method): + def rename_none(self, info_dict): + return info_dict["name"] + + def download_rename(self, name, folder_name, season,suffix, method): info_dict = { "name": name, "folder_name": folder_name, "season": season, + "suffix": suffix } method_dict = { "normal": self.rename_normal, "pn": self.rename_pn, "advance": self.rename_advance, "no_season_pn": self.rename_no_season_pn, + "none": self.rename_none } logger.debug(f"Name: {folder_name}, File type: {path.splitext(name)[-1]}, Season {season}") return method_dict[method](info_dict) - # if method.lower() == "pn": - # return self.rename_pn(name, season) - # elif method.lower() == "normal": - # return self.rename_normal(name, season) - # elif method.lower() == "none": - # return name - # elif method.lower() == "advance": - # return self.rename_advance(name, folder_name, season) - # elif method.lower() == "no_season_pn": - # return self.rename_no_season_pn(name) if __name__ == "__main__": name = "[NC-Raws] 來自深淵 烈日的黃金鄉 - 01 (Baha 1920x1080 AVC AAC MP4) [89D4923F].mp4" rename = DownloadParser() - new_name = rename.download_rename(name, "Made abyess", 1, "pn") + new_name = rename.download_rename(name, "Made abyess", 1, ".mp4", "pn") print(new_name) \ No newline at end of file diff --git a/auto_bangumi/parser/title_parser.py b/auto_bangumi/parser/title_parser.py index c3a0678a..889f2c43 100644 --- a/auto_bangumi/parser/title_parser.py +++ b/auto_bangumi/parser/title_parser.py @@ -14,8 +14,8 @@ class TitleParser: def raw_parser(self, raw): return self._raw_parser.analyse(raw) - def download_parser(self, download_raw, folder_name, season, method=settings.method): - return self._download_parser.download_rename(download_raw, folder_name, season, method) + def download_parser(self, download_raw, folder_name, season, suffix, method=settings.method): + return self._download_parser.download_rename(download_raw, folder_name, season, suffix, method) def return_dict(self, raw): tmdb = TMDBMatcher()