Greasy Fork

获取网站所有图片

支持动态加载的图片实时显示,添加手动加载按钮便于操作。

< 脚本获取网站所有图片的反馈

评价:好评 - 脚本运行良好

§
发表于:2024-12-19

您好,实际使用的时候我发现批量下载图片的反馈很弱,点击之后感觉没有动静,而且这个方法引入了额外的压缩步骤。我借助chatGPT用GM_download并发下载,不知你还有没有优化的建议。另外感觉还可以加一个导出要下载的图片的url的功能,方便用curl或wget这类的工具批量下载。修改的代码如下:
downloadAll() {
if (this.imgList.size === 0) {
alert('没有找到可下载的图片。');
return;
}

const downloadQueue = Array.from(this.imgList);
const maxConcurrentDownloads = 5; // 最大并发数
let activeDownloads = 0; // 当前正在进行的下载数量

const processNext = () => {
// 如果队列为空且没有正在下载的任务,表示所有图片已经下载
if (downloadQueue.length === 0 && activeDownloads === 0) {
alert('所有图片已下载完成!');
return;
}

// 如果当前正在下载的图片数量少于最大并发数,并且队列中还有图片,则开始下载
if (activeDownloads < maxConcurrentDownloads && downloadQueue.length > 0) {
const src = downloadQueue.shift();
const fileName = `image_${Date.now()}.png`; // 设置文件名
activeDownloads++;

GM_download({
url: src,
name: fileName,
onload: () => {
activeDownloads--; // 下载完成,减少正在下载的任务数量
processNext(); // 继续下载下一个图片
},
onerror: () => {
console.error(`无法下载图片: ${src}`);
activeDownloads--; // 下载失败,减少正在下载的任务数量
processNext(); // 继续下载下一个图片
}
});
}
};

processNext(); // 启动第一个下载任务
}

发表回复

登录以发表回复。