diff --git a/auto_bangumi/core/renamer.py b/auto_bangumi/core/renamer.py index 31ae5d9c..fbaa690b 100644 --- a/auto_bangumi/core/renamer.py +++ b/auto_bangumi/core/renamer.py @@ -41,7 +41,10 @@ class Renamer: logger.debug("No Season info") season = 1 folder_name = path_parts[1] if path_parts[0] == "/" else path_parts[0] - download_path = path_parts[1] + try: + download_path = path_parts[1] + except IndexError: + download_path = "" return path_name, season, folder_name, download_path def run(self): diff --git a/auto_bangumi/parser/analyser/raw_parser.py b/auto_bangumi/parser/analyser/raw_parser.py index 5082a7e4..f5512faa 100644 --- a/auto_bangumi/parser/analyser/raw_parser.py +++ b/auto_bangumi/parser/analyser/raw_parser.py @@ -132,5 +132,5 @@ class RawParser: if __name__ == "__main__": test = RawParser() - ep = test.analyse("【幻樱字幕组】【4月新番】【古见同学有交流障碍症 第二季 Komi-san wa, Komyushou Desu. S02】【22】【GB_MP4】【1920X1080】") - print(ep.season_info.raw) + ep = test.analyse("[Nekomoe kissaten] Komi-san wa, Komyushou Desu. 02 [WebRip 1080p HEVC-10bit AAC ASSx2]") + print(ep.title) diff --git a/auto_bangumi/parser/analyser/rename_parser.py b/auto_bangumi/parser/analyser/rename_parser.py index f8ca27eb..8142b14b 100644 --- a/auto_bangumi/parser/analyser/rename_parser.py +++ b/auto_bangumi/parser/analyser/rename_parser.py @@ -2,6 +2,7 @@ import re import logging from os import path +# from .raw_parser import RawParser logger = logging.getLogger(__name__) @@ -9,13 +10,11 @@ logger = logging.getLogger(__name__) class DownloadParser: def __init__(self): self.rules = [ - r"(.*)\[(\d{1,3}|\d{1,3}\.\d{1,2})(?:v\d{1,2})?(?:END)?\](.*)", - r"(.*)\[E(\d{1,3}|\d{1,3}\.\d{1,2})(?:v\d{1,2})?(?:END)?\](.*)", + r"(.*)(?: -)[\[ E](\d{1,3}|\d{1,3}\.\d{1,2})(?:v\d{1,2})?(?: )?(?:END)?[\] ](.*)", r"(.*)\[第(\d*\.*\d*)话(?:END)?\](.*)", r"(.*)\[第(\d*\.*\d*)話(?:END)?\](.*)", r"(.*)第(\d*\.*\d*)话(?:END)?(.*)", r"(.*)第(\d*\.*\d*)話(?:END)?(.*)", - r"(.*)- (\d{1,3}|\d{1,3}\.\d{1,2})(?:v\d{1,2})?(?:END)?(.*)", ] def rename_normal(self, name, season): @@ -57,6 +56,20 @@ class DownloadParser: ) return new_name + def rename_no_season_pn(self, name): + n = re.split(r"[\[\]()【】()]", name) + file_name = name.replace(f"[{n[1]}]", "") + for rule in self.rules: + match_obj = re.match(rule, file_name, re.I) + if match_obj is not None: + title = match_obj.group(1).strip() + new_name = re.sub( + r"[\[\]]", + "", + f"{title} E{match_obj.group(2)}{path.splitext(name)[-1]}", + ) + return new_name + def download_rename(self, name, folder_name, season, method): if method.lower() == "pn": return self.rename_pn(name, season) @@ -66,10 +79,12 @@ class DownloadParser: 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]Summer Time Rendering S02 - 09(B-Global 3840x2160 HEVC AAC MKV).mkv" + name = "[Nekomoe kissaten] Komi-san wa, Komyushou Desu. S02 - 02 [WebRip 1080p HEVC-10bit AAC ASSx2].mkv" rename = DownloadParser() new_name = rename.rename_pn(name, 1) print(new_name) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index ac90a379..cc2d907a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,11 @@ qbittorrent-api -bs4~=4.11.1 +bs4 requests==2.28.0 pysocks lxml setuptools~=62.1.0 -fastapi~=0.78.0 +fastapi uvicorn~=0.17.6 jinja2 pydantic~=1.9.1 \ No newline at end of file