Merge pull request #37 from x1ao4/dev

修复大量文件转存时的索引越界错误和分享链接检查时的网络错误问题
This commit is contained in:
x1ao4 2025-07-09 23:29:30 +08:00 committed by GitHub
commit a80378d5de
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 37 additions and 12 deletions

View File

@ -75,7 +75,7 @@ docker run -d \
x1ao4/quark-auto-save-x:latest
```
Docker Compose
Docker Compose(推荐)
```yaml
version: "3.3"
@ -89,7 +89,6 @@ services:
- /自定义配置文件的存储目录/quark-auto-save-x/config:/app/config
- /自定义生成文件的存储目录:/media # 可选,插件 alist_strm_gen 生成 strm 使用
restart: unless-stopped
networks: {}
```
默认管理地址http://yourhost:5005

View File

@ -2453,7 +2453,7 @@
checkShareUrlStatus() {
// 只在任务列表页面检查
if (this.activeTab !== 'tasklist') return;
// 遍历所有任务
this.formData.tasklist.forEach((task, index) => {
// 如果任务有分享链接且没有设置shareurl_ban
@ -2463,7 +2463,13 @@
.then(response => {
const share_detail = response.data.data;
if (!response.data.success) {
// 使用格式化函数处理错误信息
// 检查是否是 request error如果是则忽略
if (share_detail.error && share_detail.error.includes("request error")) {
// 忽略 request error不设置 shareurl_ban
console.log('检查分享链接时出现网络错误,忽略此错误:', share_detail.error);
return;
}
// 使用格式化函数处理其他错误信息
this.$set(task, "shareurl_ban", this.formatShareUrlBanMessage(share_detail.error));
} else if (share_detail.list !== undefined && share_detail.list.length === 0) {
// 检查文件列表是否为空,确保列表存在且为空
@ -2471,8 +2477,8 @@
}
})
.catch(error => {
// 错误处理
console.error('检查分享链接状态失败:', error);
// 网络请求失败,忽略错误,不设置 shareurl_ban
console.log('检查分享链接状态时网络请求失败,忽略此错误:', error);
});
}
});
@ -3173,8 +3179,15 @@
return;
}
}
// 使用格式化函数处理错误信息
// 检查是否是 request error如果是则忽略
if (share_detail.error && share_detail.error.includes("request error")) {
// 忽略 request error不设置 shareurl_ban
console.log('修改分享链接时出现网络错误,忽略此错误:', share_detail.error);
return;
}
// 使用格式化函数处理其他错误信息
this.$set(task, "shareurl_ban", this.formatShareUrlBanMessage(share_detail.error));
} else {
// 检查文件列表是否为空
@ -3188,7 +3201,8 @@
}
})
.catch(error => {
// 错误处理
// 网络请求失败,忽略错误,不设置 shareurl_ban
console.log('修改分享链接时网络请求失败,忽略此错误:', error);
});
},
clearData(target) {
@ -3401,14 +3415,21 @@
// 检查是否包含已知的失效原因
const error = response.data.data.error || "";
let isInvalid = false;
// 如果是 request error视为有效网络问题不是资源问题
if (error.includes("request error")) {
this.smart_param.validateProgress.valid++;
resolve(link);
return;
}
for (const term of invalidTerms) {
if (error.includes(term)) {
isInvalid = true;
break;
}
}
// 如果不是已知的失效原因,保留该结果
if (!isInvalid) {
this.smart_param.validateProgress.valid++;

View File

@ -2752,6 +2752,7 @@ class Quark:
if query_task_return["code"] == 0:
# 建立目录树
saved_files = []
for index, item in enumerate(need_save_list):
icon = (
"📁"
@ -2779,12 +2780,16 @@ class Quark:
saved_files.append(format_file_display("", icon, display_name))
# 检查节点是否已存在于树中,避免重复添加
if not tree.contains(item["fid"]):
# 安全地获取save_as_top_fids中的fid防止索引越界
save_as_top_fids = query_task_return.get('data', {}).get('save_as', {}).get('save_as_top_fids', [])
saved_fid = save_as_top_fids[index] if index < len(save_as_top_fids) else item["fid"]
tree.create_node(
display_name, # 只存储文件名,不包含图标
item["fid"],
parent=pdir_fid,
data={
"fid": f"{query_task_return['data']['save_as']['save_as_top_fids'][index]}",
"fid": f"{saved_fid}",
"path": f"{savepath}/{item['save_name']}",
"is_dir": item["dir"],
"icon": icon, # 将图标存储在data中