8
8
from datetime import datetime
9
9
from itertools import product
10
10
11
- from utils .resolution_util import get_resolution_in_name
11
+ from utils .resolution_util import get_resolution_in_name , resolution_dict
12
12
13
13
try :
14
14
from loguru import logger
@@ -81,7 +81,10 @@ def resource_path(relative_path):
81
81
# if not getattr(sys, 'frozen', False) and len(sys.argv) == 1:
82
82
# # 直接运行的目标路径
83
83
# # 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')
85
88
86
89
if len (sys .argv ) > 1 and not sys .argv [1 ].startswith ('-' ):
87
90
# 旧版的命令解析
@@ -96,6 +99,9 @@ def resource_path(relative_path):
96
99
rename_delay = int (sys .argv [2 ])
97
100
logger .info (f"{ 'rename_delay' , rename_delay } " )
98
101
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
99
105
force_rename = 0
100
106
custom_replace_pair = ""
101
107
else :
@@ -116,6 +122,9 @@ def resource_path(relative_path):
116
122
ap .add_argument ('--name_format' , required = False ,
117
123
help = '(慎用) 自定义重命名格式, 参数需要加引号 默认为 "S{season}E{ep}" 可以选择性加入 系列名称如 "{series} - S{season}E{ep}" ' ,
118
124
default = 'S{season}E{ep}' )
125
+ ap .add_argument ('--name_format_bypass' , required = False ,
126
+ help = '(慎用) 自定义重命名格式, 对满足格式的文件忽略重命名步骤' ,
127
+ default = 0 )
119
128
ap .add_argument ('--parse_resolution' , required = False ,
120
129
help = '(慎用) 识别分辨率,输出结果类似于 `S01E01 - 1080p.mp4`, 1为开启, 0为不开启. 开启后传入的 name_format 参数会失效, 强制设置为 "S{season}E{ep} - {resolution}"' ,
121
130
default = 0 )
@@ -131,6 +140,7 @@ def resource_path(relative_path):
131
140
rename_delay = args ['delay' ]
132
141
rename_overwrite = args ['overwrite' ]
133
142
name_format = args ['name_format' ]
143
+ name_format_bypass = args ['name_format_bypass' ]
134
144
parse_resolution = args ['parse_resolution' ]
135
145
force_rename = args ['force_rename' ]
136
146
custom_replace_pair = args ['replace' ]
@@ -688,6 +698,15 @@ def clean_name(s):
688
698
s = s [:- 1 ].strip ()
689
699
return s
690
700
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
691
710
692
711
if os .path .isdir (target_path ):
693
712
logger .info (f"{ '文件夹处理' } " )
@@ -744,6 +763,9 @@ def clean_name(s):
744
763
# 系列名称
745
764
series = get_series_from_season_path (season_path )
746
765
# 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
747
769
new_name = clean_name (name_format .format (** locals ())) + '.' + fix_ext (ext )
748
770
749
771
if custom_replace_pair :
@@ -765,7 +787,8 @@ def clean_name(s):
765
787
logger .info (f"{ '单文件处理' } " )
766
788
logger .info (f'{ target_path } ' )
767
789
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 )
769
792
parent_folder_path = os .path .dirname (file_path )
770
793
if ext .lower () in COMPOUND_EXTS :
771
794
season , ep = get_season_and_ep (file_path )
@@ -777,6 +800,9 @@ def clean_name(s):
777
800
# 系列名称
778
801
series = get_series_from_season_path (season_path )
779
802
# 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 ()
780
806
new_name = clean_name (name_format .format (** locals ())) + '.' + fix_ext (ext )
781
807
782
808
if custom_replace_pair :
0 commit comments