feat(XHS-Downloader.js): 新增下载失败重试机制

This commit is contained in:
JoeanAmier 2025-01-04 22:25:46 +08:00
parent ef68346f28
commit b3974fe8f3
2 changed files with 29 additions and 23 deletions

View File

@ -18,13 +18,14 @@
**用户脚本更新内容:**
**版本号1.8.4**
**版本号1.8.6**
1. 重构自动滚动页面功能
2. 新增文件名称长度限制
3. 优化文件名称过滤规则
4. 新增文件打包下载功能
5. 优化作品文件下载速度
6. 优化文件下载功能
6. 新增下载失败重试机制
7. 优化文件下载功能
<p><strong>注意:自动滚动页面功能默认关闭!启用该功能可能会被小红书检测为自动化操作,从而导致账号受到风控或封禁!该功能在使用过程中遇到任何问题请及时向开发者反馈!</strong></p>

View File

@ -1,7 +1,7 @@
// ==UserScript==
// @name XHS-Downloader
// @namespace https://github.com/JoeanAmier/XHS-Downloader
// @version 1.8.5
// @version 1.8.6
// @description 提取小红书作品/用户链接,下载小红书无水印图文/视频作品文件
// @author JoeanAmier
// @match http*://xhslink.com/*
@ -240,29 +240,34 @@ XHS-Downloader 用户脚本 详细说明:
console.info(`文件已成功下载: ${name}`);
}
const downloadFile = async (link, name, trigger = true,) => {
try {
// 使用 fetch 获取文件数据
const response = await fetch(link, {method: "GET"});
const downloadFile = async (link, name, trigger = true, retries = 5) => {
for (let attempt = 1; attempt <= retries; attempt++) {
try {
// 使用 fetch 获取文件数据
const response = await fetch(link, {method: "GET"});
// 检查响应状态码
if (!response.ok) {
console.error(`下载失败,状态码: ${response.status}URL: ${link}`);
return false;
// 检查响应状态码
if (!response.ok) {
console.error(`下载失败,状态码: ${response.status}URL: ${link},尝试次数: ${attempt}`);
continue; // 继续下一次尝试
}
const blob = await response.blob();
if (trigger) {
triggerDownload(name, blob);
return true;
} else {
return blob;
}
} catch (error) {
console.error(`下载失败 (${name}),错误信息:`, error, `尝试次数: ${attempt}`);
if (attempt === retries) {
return false; // 如果达到最大重试次数,返回失败
}
}
const blob = await response.blob();
if (trigger) {
triggerDownload(name, blob);
return true;
} else {
return blob;
}
} catch (error) {
console.error(`下载失败 (${name}),错误信息:`, error);
return false;
}
return false; // 如果所有尝试都失败,返回失败
};
const downloadFiles = async (urls, name,) => {