From ecf4a26a53467de952c4b0e152e684f512bd8891 Mon Sep 17 00:00:00 2001 From: x1ao4 Date: Wed, 2 Jul 2025 02:20:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E5=85=A8=E5=B1=80=E7=9A=84=E5=89=A7?= =?UTF-8?q?=E9=9B=86=E7=BC=96=E5=8F=B7=E6=8F=90=E5=8F=96=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E4=B8=AD=E5=A2=9E=E5=8A=A0=E7=A7=BB=E9=99=A4=E5=88=86=E8=BE=A8?= =?UTF-8?q?=E7=8E=87=E6=A0=87=E8=AF=86=E7=9A=84=E9=A2=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- quark_auto_save.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/quark_auto_save.py b/quark_auto_save.py index 58a59d1..5e27087 100644 --- a/quark_auto_save.py +++ b/quark_auto_save.py @@ -301,7 +301,17 @@ def extract_episode_number(filename, episode_patterns=None, config_data=None): # 如果能确定月日且是有效的日期,则从文件名中删除该日期 if month and day and 1 <= month <= 12 and 1 <= day <= 31: filename_without_dates = filename_without_dates.replace(date_str, " ") - + + # 预处理:移除分辨率标识(如 720p, 1080P, 2160p 等) + resolution_patterns = [ + r'\b\d+[pP]\b', # 匹配 720p, 1080P, 2160p 等 + r'\b\d+x\d+\b', # 匹配 1920x1080 等 + # 注意:不移除4K/8K,因为剧集匹配规则中有 (\d+)[-_\s]*4[Kk] 模式 + ] + + for pattern in resolution_patterns: + filename_without_dates = re.sub(pattern, ' ', filename_without_dates) + # 优先匹配SxxExx格式 match_s_e = re.search(r'[Ss](\d+)[Ee](\d+)', filename_without_dates) if match_s_e: @@ -358,12 +368,12 @@ def extract_episode_number(filename, episode_patterns=None, config_data=None): match = re.search(pattern_regex, filename_without_dates) if match: episode_num = int(match.group(1)) - + # 检查提取的数字是否可能是日期的一部分 # 如果是纯数字并且可能是日期格式,则跳过 if str(episode_num).isdigit() and is_date_format(str(episode_num)): continue - + return episode_num except: continue @@ -390,8 +400,11 @@ def extract_episode_number(filename, episode_patterns=None, config_data=None): episode_num = int(num_match.group(1)) # 检查提取的数字是否可能是日期 if not is_date_format(str(episode_num)): + # 检查是否是过大的数字(可能是时间戳、文件大小等) + if episode_num > 9999: + return None # 跳过过大的数字 return episode_num - + return None # 全局变量