Compare commits

...

3 Commits

Author SHA1 Message Date
Cp0204
a7e61cd937 ♻️ 调整重命名逻辑:子目录文件不重命名
Some checks failed
Docker Publish / build-and-push (push) Has been cancelled
2025-05-08 22:08:16 +08:00
Cp0204
202349b3a9 增加多种类型的文件图标显示
- 新增 _get_file_icon 方法,用于获取文件图标
- 扩展图标类型,支持视频、图片、音频、文档和压缩文件等类型
2025-05-08 20:44:26 +08:00
Cp0204
54a1c222c7 改进 {I} 排序:如相同序号已存在则递增 2025-05-08 19:34:30 +08:00

View File

@ -218,7 +218,7 @@ class MagicRename:
def __init__(self, magic_regex={}, magic_variable={}):
self.magic_regex.update(magic_regex)
self.magic_variable.update(magic_variable)
self.dir_filename_list = []
self.dir_filename_dict = {}
def set_taskname(self, taskname):
"""设置任务名称"""
@ -281,7 +281,7 @@ class MagicRename:
return name.replace(keyword, f"{i:02d}") # 替换为数字,方便排序
return name
def sort_file_list(self, file_list, dir_filename_list=[]):
def sort_file_list(self, file_list, dir_filename_dict={}):
"""文件列表统一排序,给{I+}赋值"""
filename_list = [
f["file_name_re"]
@ -289,20 +289,21 @@ class MagicRename:
if f.get("file_name_re") and not f["dir"]
]
# print(f"filename_list_before: {filename_list}")
dir_filename_list = dir_filename_list or self.dir_filename_list
dir_filename_dict = dir_filename_dict or self.dir_filename_dict
# print(f"dir_filename_list: {dir_filename_list}")
# 合并目录文件列表
filename_list = list(set(filename_list) | set(dir_filename_list))
filename_list = list(set(filename_list) | set(dir_filename_dict.values()))
filename_list.sort(key=self._custom_sort_key)
# print(f"filename_list_sort: {filename_list}")
for file in file_list:
if file.get("file_name_re"):
if match := re.search(r"\{I+\}", file["file_name_re"]):
i = filename_list.index(file["file_name_re"]) + 1
while i in dir_filename_dict.keys():
i += 1
file["file_name_re"] = re.sub(
match.group(),
str(filename_list.index(file["file_name_re"]) + 1).zfill(
match.group().count("I")
),
str(i).zfill(match.group().count("I")),
file["file_name_re"],
)
@ -310,7 +311,7 @@ class MagicRename:
"""设置目录文件列表"""
if not file_list:
return
self.dir_filename_list = []
self.dir_filename_dict = {}
filename_list = [f["file_name"] for f in file_list if not f["dir"]]
filename_list.sort()
if match := re.search(r"\{I+\}", replace):
@ -330,7 +331,7 @@ class MagicRename:
# 目录文件列表
for filename in filename_list:
if match := re.match(pattern, filename):
self.dir_filename_list.append(
self.dir_filename_dict[int(match.group(2))] = (
match.group(1) + magic_i + match.group(3)
)
# print(f"filename_list: {self.filename_list}")
@ -793,7 +794,7 @@ class Quark:
self.recycle_remove(record_id_list)
return save_file
else:
return False
return []
except Exception as e:
print(f"转存测试失败: {str(e)}")
@ -894,8 +895,8 @@ class Quark:
dir_filename_list,
(task.get("ignore_extension") and not share_file["dir"]),
):
# 文件夹不进行重命名
if share_file["dir"]:
# 文件夹、子目录文件不进行重命名
if share_file["dir"] or subdir_path:
share_file["file_name_re"] = share_file["file_name"]
need_save_list.append(share_file)
else:
@ -954,11 +955,7 @@ class Quark:
if query_task_return["code"] == 0:
# 建立目录树
for index, item in enumerate(need_save_list):
icon = (
"📁"
if item["dir"] == True
else "🎞️" if item["obj_category"] == "video" else ""
)
icon = self._get_file_icon(item)
tree.create_node(
f"{icon}{item['file_name_re']}",
item["fid"],
@ -986,13 +983,27 @@ class Quark:
for child in tree.children(node_id):
file = child.data
if file.get("is_dir"):
self.do_rename(tree, child.identifier)
if file.get("file_name_re") and file["file_name_re"] != file["file_name"]:
# self.do_rename(tree, child.identifier)
pass
elif file.get("file_name_re") and file["file_name_re"] != file["file_name"]:
rename_ret = self.rename(file["fid"], file["file_name_re"])
print(f"重命名:{file['file_name']}{file['file_name_re']}")
if rename_ret["code"] != 0:
print(f" ↑ 失败,{rename_ret['message']}")
def _get_file_icon(self, f):
if f.get("dir"):
return "📁"
ico_maps = {
"video": "🎞️",
"image": "🖼️",
"audio": "🎵",
"doc": "📄",
"archive": "📦",
"default": "",
}
return ico_maps.get(f.get("obj_category"), "")
def verify_account(account):
# 验证账号