From d05713878f1a15a6fc8499561c971cecda714ec6 Mon Sep 17 00:00:00 2001 From: JoeanAmier Date: Sun, 29 Dec 2024 22:42:36 +0800 Subject: [PATCH] =?UTF-8?q?style(XHS-Downloader.js):=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=84=9A=E6=9C=AC=E5=8A=9F=E8=83=BD=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/XHS-Downloader.js | 53 ++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/static/XHS-Downloader.js b/static/XHS-Downloader.js index 1a8ff74..4b6f2b4 100644 --- a/static/XHS-Downloader.js +++ b/static/XHS-Downloader.js @@ -253,41 +253,42 @@ XHS-Downloader 用户脚本 详细说明: }; const downloadFiles = async (urls, name) => { - // TODO: 功能异常 - // 创建一个 JSZip 实例 + // TODO: 打包下载功能异常 const zip = new JSZip(); - - // 用于存储是否有错误发生的标志 - let hasError = false; - - // 获取每个图片并添加到 ZIP - await Promise.all(urls.map(async (url, index) => { + const results = await Promise.all(urls.map(async (link, index) => { try { - const response = await fetch(url, {method: "GET"}); + const response = await fetch(link, {method: "GET"}); + if (!response.ok) { - console.error(`下载失败: ${url},状态码: ${response.status}`); - hasError = true; // 标记为有错误发生 - return; + console.error(`下载失败,状态码: ${response.status},URL: ${link}`); + return false; // 这里返回 false } + const blob = await response.blob(); zip.file(`${name}_${index + 1}.png`, blob); - } catch (err) { - console.error('下载图片失败:', err); - hasError = true; // 标记为有错误发生 + return true; // 成功时返回 true + } catch (error) { + console.error(`下载失败 (${name}),错误信息:`, error); + return false; // 这里返回 false } })); - // 生成 ZIP 文件 - await zip.generateAsync({type: "blob"}) - .then(content => { - saveAs(content, `${name}.zip`); // 下载 ZIP 文件 - }) - .catch(err => { - console.error('生成 ZIP 文件失败:', err); - hasError = true; // 标记为有错误发生 - }); + // 检查结果,是否有任何一个失败 + const allDownloadedSuccessfully = results.every(result => result === true); - return !hasError; // 如果没有错误返回 true,有错误则返回 false + if (!allDownloadedSuccessfully) { + return false; // 如果有任何失败,返回 false + } + + // 生成 ZIP 文件 + try { + const content = await zip.generateAsync({type: "blob"}); + saveAs(content, `${name}.zip`); + return true; // 如果 ZIP 文件生成成功,返回 true + } catch (err) { + console.error('生成 ZIP 文件失败:', err); + return false; // 生成 ZIP 文件失败,返回 false + } }; const truncateString = (str, maxLength) => { @@ -321,7 +322,7 @@ XHS-Downloader 用户脚本 详细说明: abnormal(); } - // TODO: 未生效 + // TODO: 打包下载功能未实现 // let success; // if (urls.length > 1) { // success = await downloadFiles(urls, name,);