Skip to content

Commit e3ce4bc

Browse files
committed
添加name_format_bypass处理 fix #33
1 parent e0861d0 commit e3ce4bc

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

EpisodeReName.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from datetime import datetime
99
from itertools import product
1010

11-
from utils.resolution_util import get_resolution_in_name
11+
from utils.resolution_util import get_resolution_in_name, resolution_dict
1212

1313
try:
1414
from loguru import logger
@@ -81,7 +81,10 @@ def resource_path(relative_path):
8181
# if not getattr(sys, 'frozen', False) and len(sys.argv) == 1:
8282
# # 直接运行的目标路径
8383
# # sys.argv.append(r'\\DSM\DSM_share5\season1\aaa E02 AAA.mp4')
84-
# sys.argv.append(r'\\DSM\DSM_share5\season1')
84+
# # sys.argv.append(r'\\DSM\DSM_share5\season1')
85+
# # sys.argv.append(r'E:\test\极端试验样本\s01\极端试验样本 - S01E01.mp4')
86+
# # sys.argv.append(r'E:\test\极端试验样本\s01\S01E01 - 720p.mp4')
87+
# sys.argv.append(r'E:\test\极端试验样本\s01')
8588

8689
if len(sys.argv) > 1 and not sys.argv[1].startswith('-'):
8790
# 旧版的命令解析
@@ -96,6 +99,9 @@ def resource_path(relative_path):
9699
rename_delay = int(sys.argv[2])
97100
logger.info(f"{'rename_delay', rename_delay}")
98101
name_format = 'S{season}E{ep}'
102+
# name_format = '{series} - S{season}E{ep}'
103+
# name_format = 'S{season}E{ep} - {resolution}'
104+
name_format_bypass = True
99105
force_rename = 0
100106
custom_replace_pair = ""
101107
else:
@@ -116,6 +122,9 @@ def resource_path(relative_path):
116122
ap.add_argument('--name_format', required=False,
117123
help='(慎用) 自定义重命名格式, 参数需要加引号 默认为 "S{season}E{ep}" 可以选择性加入 系列名称如 "{series} - S{season}E{ep}" ',
118124
default='S{season}E{ep}')
125+
ap.add_argument('--name_format_bypass', required=False,
126+
help='(慎用) 自定义重命名格式, 对满足格式的文件忽略重命名步骤',
127+
default=0)
119128
ap.add_argument('--parse_resolution', required=False,
120129
help='(慎用) 识别分辨率,输出结果类似于 `S01E01 - 1080p.mp4`, 1为开启, 0为不开启. 开启后传入的 name_format 参数会失效, 强制设置为 "S{season}E{ep} - {resolution}"',
121130
default=0)
@@ -131,6 +140,7 @@ def resource_path(relative_path):
131140
rename_delay = args['delay']
132141
rename_overwrite = args['overwrite']
133142
name_format = args['name_format']
143+
name_format_bypass = args['name_format_bypass']
134144
parse_resolution = args['parse_resolution']
135145
force_rename = args['force_rename']
136146
custom_replace_pair = args['replace']
@@ -688,6 +698,15 @@ def clean_name(s):
688698
s = s[:-1].strip()
689699
return s
690700

701+
def name_format_bypass_check(name):
702+
"""检查是否已满足 name_format """
703+
tmp_pat = '^' + name_format.replace('{season}', '\d+').replace('{ep}', '\d+').replace('{series}', series).replace('{resolution}', '(' + '|'.join(resolution_dict.values()) + ')') + '$'
704+
# logger.info(name)
705+
# logger.info(tmp_pat)
706+
res = re.match(tmp_pat, name)
707+
if res:
708+
return True
709+
return False
691710

692711
if os.path.isdir(target_path):
693712
logger.info(f"{'文件夹处理'}")
@@ -744,6 +763,9 @@ def clean_name(s):
744763
# 系列名称
745764
series = get_series_from_season_path(season_path)
746765
# new_name = f'S{season}E{ep}' + '.' + fix_ext(ext)
766+
if name_format_bypass and name_format_bypass_check(file_name):
767+
logger.info('命名已满足 name_format 跳过')
768+
continue
747769
new_name = clean_name(name_format.format(**locals())) + '.' + fix_ext(ext)
748770

749771
if custom_replace_pair:
@@ -765,7 +787,8 @@ def clean_name(s):
765787
logger.info(f"{'单文件处理'}")
766788
logger.info(f'{target_path}')
767789
file_path = get_absolute_path(target_path)
768-
file_name, ext = get_file_name_ext(target_path)
790+
file_full_name = os.path.basename(file_path)
791+
file_name, ext = get_file_name_ext(file_full_name)
769792
parent_folder_path = os.path.dirname(file_path)
770793
if ext.lower() in COMPOUND_EXTS:
771794
season, ep = get_season_and_ep(file_path)
@@ -777,6 +800,9 @@ def clean_name(s):
777800
# 系列名称
778801
series = get_series_from_season_path(season_path)
779802
# new_name = f'S{season}E{ep}' + '.' + fix_ext(ext)
803+
if name_format_bypass and name_format_bypass_check(file_name):
804+
logger.info('当前命名已满足 name_format 的格式, 退出')
805+
exit()
780806
new_name = clean_name(name_format.format(**locals())) + '.' + fix_ext(ext)
781807

782808
if custom_replace_pair:

0 commit comments

Comments
 (0)