为 Aria2 插件新增了成功添加下载任务后自动删除夸克网盘对应文件的功能

This commit is contained in:
x1ao4 2025-05-26 15:42:53 +08:00
parent bced07dbe3
commit f48c06efc8

View File

@ -29,6 +29,7 @@ class Aria2:
default_task_config = {
"auto_download": False, # 是否自动添加下载任务
"pause": False, # 添加任务后为暂停状态,不自动开始(手动下载)
"auto_delete_quark_files": False, # 是否在添加下载任务后自动删除夸克网盘文件
}
is_active = False
rpc_url = None
@ -116,6 +117,7 @@ class Aria2:
# 筛选出当次转存的文件
file_fids = []
file_paths = []
file_info = [] # 存储文件的完整信息包括ID和路径
for file in dir_files:
if file.get("dir", False):
@ -132,7 +134,14 @@ class Aria2:
if is_current_file:
file_fids.append(file["fid"])
file_paths.append(f"{savepath}/{file_name}")
file_path = f"{savepath}/{file_name}"
file_paths.append(file_path)
# 保存完整信息
file_info.append({
"fid": file["fid"],
"path": file_path,
"name": file_name
})
if not file_fids:
print("📝 Aria2: 未能匹配到需要下载的文件")
@ -162,6 +171,9 @@ class Aria2:
# 使用全局排序函数对文件进行排序
download_items.sort(key=lambda x: x["sort_key"])
# 记录成功添加到下载队列的文件信息,用于后续删除
downloaded_files = []
# 按排序后的顺序下载文件
for item in download_items:
file_path = item["file_path"]
@ -193,9 +205,35 @@ class Aria2:
]
try:
self.add_uri(aria2_params)
# 记录成功添加到下载队列的文件信息
idx = file_paths.index(file_path)
if idx >= 0 and idx < len(file_info):
downloaded_files.append(file_info[idx])
except Exception as e:
print(f"📥 Aria2 添加下载任务失败: {e}")
# 如果配置了自动删除且有成功添加下载任务的文件,则删除夸克网盘中的文件
if task_config.get("auto_delete_quark_files") and downloaded_files:
try:
# 提取要删除的文件ID
files_to_delete = []
for file_data in downloaded_files:
# 再次确认文件路径,确保只删除指定目录下的文件
if file_data["path"].startswith(savepath):
files_to_delete.append(file_data["fid"])
if files_to_delete:
account.delete(files_to_delete)
except Exception as e:
print(f"📝 Aria2: 删除夸克网盘文件失败: {e}")
else:
if not task_config.get("auto_delete_quark_files"):
# 未启用自动删除,不需要输出信息
pass
elif not downloaded_files:
# 没有需要删除的文件,不需要输出信息
pass
def _make_rpc_request(self, method, params=None):
"""发出 JSON-RPC 请求."""
jsonrpc_data = {