';
+ html += `
作品 ${carNum2} 匹配到 ${matchList.length} 个文件夹:
`;
+ html += '
';
+ for (let i = 0; i < matchList.length; i++) {
+ const m = matchList[i];
+ html += `
+
+
`;
+ }
+ html += "
";
+ const layerIndex = layer.open({
+ type: 1,
+ title: `删除115作品文件夹`,
+ content: html,
+ area: ["520px", "auto"],
+ btn: ["确定删除", "取消"],
+ shadeClose: false,
+ yes: async (index) => {
+ const $layer = $(`#layui-layer${index}`);
+ const checked = $layer.find(".jhs-delete-folder-cb:checked");
+ if (0 === checked.length) {
+ show.error("请至少选择一个文件夹");
+ return;
+ }
+ const selected = checked.map((function () {
+ return parseInt($(this).data("index"));
+ })).get();
+ layer.close(index);
let loadObj = loading();
+ let deletedCount = 0;
try {
- const result = await gmHttp.postForm("https://webapi.115.com/rb/delete", {
- pid: 0,
- "fid[0]": dirId
- });
- loadObj.close();
- if (result && result.state) {
- show.ok(`作品 "${carNum2}" 已从115删除`);
- const matchPlugin = this.getBean("WangPan115MatchPlugin");
- const matchList = await matchPlugin.searchFiles(carNum2);
- matchPlugin.updateMatchStatus($box2, carNum2, matchList);
- this.getBean("WangPan115TaskPlugin").deleteOfflineTasksByKeyword(carNum2);
- } else {
- const errMsg = result && result.error_msg ? result.error_msg : "未知错误";
- show.error(`删除失败: ${errMsg}`);
+ for (const i of selected) {
+ const m = matchList[i];
+ const result = await gmHttp.postForm("https://webapi.115.com/rb/delete", {
+ pid: m.dirId,
+ "fid[0]": m.folderId
+ });
+ result && result.state ? deletedCount++ : console.error(`删除失败: ${m.name}`, result);
}
+ loadObj.close();
+ show.ok(`作品 "${carNum2}" 已删除 ${deletedCount} 个文件夹`);
+ const matchPlugin = this.getBean("WangPan115MatchPlugin");
+ const newMatchList = await matchPlugin.searchFiles(carNum2);
+ matchPlugin.updateMatchStatus($box2, carNum2, newMatchList);
+ this.getBean("WangPan115TaskPlugin").deleteOfflineTasksByKeyword(carNum2);
} catch (error) {
loadObj.close();
console.error("删除115文件失败:", error);
show.error(`删除失败: ${error.message || "网络错误"}`);
}
- }));
+ }
+ });
+ $(`#layui-layer${layerIndex}`).on("change", ".jhs-delete-select-all", (function () {
+ const checked = $(this).prop("checked");
+ $(`#layui-layer${layerIndex} .jhs-delete-folder-cb`).prop("checked", checked);
}));
}
showImg($svgElement, $img, carNum2) {
diff --git a/src/plugins/cover-button.js b/src/plugins/cover-button.js
index 492c714..8e0df64 100644
--- a/src/plugins/cover-button.js
+++ b/src/plugins/cover-button.js
@@ -139,40 +139,88 @@ class CoverButtonPlugin extends BasePlugin {
event.preventDefault();
event.stopPropagation();
const $btn = $(event.currentTarget);
- const dirId = $btn.attr("data-dir-id");
- if (!dirId) {
- show.error("未找到115目录ID");
+ const matchData = $btn.attr("data-match");
+ if (!matchData) {
+ show.error("未找到115匹配数据");
return;
}
+ const matchList = JSON.parse(matchData);
const $box2 = $btn.closest(".item");
const {carNum: carNum2} = this.getBoxCarInfo($box2);
- utils.q(event, `确认删除115中作品 "${carNum2}" 的整个目录吗?此操作不可撤销!`, (async () => {
+ this.showDeleteDialog(carNum2, matchList, $box2);
+ }));
+ }
+
+ showDeleteDialog(carNum2, matchList, $box2) {
+ const formatSize = bytes => {
+ if (!bytes) return "-";
+ const units = ["B", "KB", "MB", "GB", "TB"];
+ let size = parseFloat(bytes), unit = 0;
+ for (; size >= 1024 && unit < units.length - 1;) size /= 1024, unit++;
+ return size.toFixed(2) + " " + units[unit];
+ };
+ let html = '';
+ html += `
作品 ${carNum2} 匹配到 ${matchList.length} 个文件夹:
`;
+ html += '
';
+ for (let i = 0; i < matchList.length; i++) {
+ const m = matchList[i];
+ html += `
+
+
`;
+ }
+ html += "
";
+ const layerIndex = layer.open({
+ type: 1,
+ title: `删除115作品文件夹`,
+ content: html,
+ area: ["520px", "auto"],
+ btn: ["确定删除", "取消"],
+ shadeClose: !1,
+ yes: async index => {
+ const $layer = $(`#layui-layer${index}`);
+ const checked = $layer.find(".jhs-delete-folder-cb:checked");
+ if (0 === checked.length) {
+ show.error("请至少选择一个文件夹");
+ return;
+ }
+ const selected = checked.map((function () {
+ return parseInt($(this).data("index"));
+ })).get();
+ layer.close(index);
let loadObj = loading();
+ let deletedCount = 0;
try {
- // 使用旧版115删除API删除整个作品目录
- // 删除后也会尝试删除对应的离线下载任务记录,避免重新下载时提示"任务已存在"
- // 注意:旧版任务删除接口(task_del)可能已失效,新版接口需要安全验证,若删除失败请手动清理
- const result = await gmHttp.postForm("https://webapi.115.com/rb/delete", {
- pid: 0,
- "fid[0]": dirId
- });
- loadObj.close();
- if (result && result.state) {
- show.ok(`作品 "${carNum2}" 已从115删除`);
- const matchPlugin = this.getBean("WangPan115MatchPlugin");
- const matchList = await matchPlugin.searchFiles(carNum2);
- matchPlugin.updateMatchStatus($box2, carNum2, matchList);
- // this.getBean("WangPan115TaskPlugin").deleteOfflineTasksByKeyword(carNum2);
- } else {
- const errMsg = result && result.error_msg ? result.error_msg : "未知错误";
- show.error(`删除失败: ${errMsg}`);
+ for (const i of selected) {
+ const m = matchList[i];
+ const result = await gmHttp.postForm("https://webapi.115.com/rb/delete", {
+ pid: m.dirId,
+ "fid[0]": m.folderId
+ });
+ result && result.state ? deletedCount++ : console.error(`删除失败: ${m.name}`, result);
}
+ loadObj.close();
+ show.ok(`作品 "${carNum2}" 已删除 ${deletedCount} 个文件夹`);
+ const matchPlugin = this.getBean("WangPan115MatchPlugin");
+ const newMatchList = await matchPlugin.searchFiles(carNum2);
+ matchPlugin.updateMatchStatus($box2, carNum2, newMatchList);
+ //暂时没有删除离线任务的功能
+ //this.getBean("WangPan115TaskPlugin").deleteOfflineTasksByKeyword(carNum2);
} catch (error) {
loadObj.close();
console.error("删除115文件失败:", error);
show.error(`删除失败: ${error.message || "网络错误"}`);
}
- }));
+ }
+ });
+ $(`#layui-layer${layerIndex}`).on("change", ".jhs-delete-select-all", (function () {
+ const checked = $(this).prop("checked");
+ $(`#layui-layer${layerIndex} .jhs-delete-folder-cb`).prop("checked", checked);
}));
}
showImg($svgElement, $img, carNum2) {
diff --git a/src/plugins/wangpan-115-task.js b/src/plugins/wangpan-115-task.js
index 4548442..9b7c4e8 100644
--- a/src/plugins/wangpan-115-task.js
+++ b/src/plugins/wangpan-115-task.js
@@ -146,6 +146,7 @@ class WangPan115TaskPlugin extends BasePlugin {
return fileId;
}
+ //TODO: 暂时没有删除离线任务
// async deleteOfflineTasksByKeyword(keyword) {
// try {
// const singInfo = await (async () => {
diff --git a/src/plugins/wangpan-115.js b/src/plugins/wangpan-115.js
index 8014177..cf010bd 100644
--- a/src/plugins/wangpan-115.js
+++ b/src/plugins/wangpan-115.js
@@ -345,14 +345,14 @@ const _WangPan115MatchPlugin = class _WangPan115MatchPlugin extends BasePlugin {
$box2.find(".jhs-match-btn").replaceWith(`