批量下载无版权无肖像权的头像。
无意间在 Github 上看到一个不错的项目 thispersondoesnotexist-js,可以随机生成头像。因为是通过机器生成出来的,并不存在这个世界上,所以不会有版权和肖像权的问题。
每次打开这个链接的时候,都会显示一个新的头像。那么就可以尝试写一个 Javascript 循环来下载头像。
// 设置延迟时间
function delay() {
return new Promise(resolve => {
setTimeout(resolve, 1200);
});
}
for (var i = 0; i < 100; i++) {
await delay();
// 创建a标签
const element = document.createElement("a");
// 设置链接
element.setAttribute("href", "https://thispersondoesnotexist.com/image");
// 设置download属性和文件名字
element.setAttribute("download", "file.png");
// 隐藏标签,不显示在界面
element.style.display = "none";
// 创建完标签后点击标签,最后删除。
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
实际测试的时候发现这个方法并不是那么理想,效率有些慢,1200 毫秒下载 1 个,而且比较占用 CPU 使用率。
后来我又找到一个项目 fakeface,这个项目的头像来源也是来自 thispersondoesnotexist 项目,不过返回的是 JSON 格式的数据,获取到图片的链接,这样就可以批量下载图片了。代码如下:
for (var i = 0; i < 10; i++) {
// 请求链接
let response = await fetch("https://fakeface.rest/face/json");
let json = await response.json();
// 获取链接
var image_url = json.image_url;
// 输出到当前页面
document.write(image_url + "<br>");
}
也可以尝试一下 批量下载头像 这个项目,基于上面提到的开源项目做的一个 Chrome 插件。
使用 brew 安装 aria2,如果没有安装过 brew,需要先运行下面的命令先安装 brew。
安装后输入命令 brew install aria2
安装 aria2。
先创建一个文本文件 echo > download-list.txt
,然后把刚才输出的链接放到这个文本文件里面。
然后运行下面的命令,这样就可以多线程批量下载头像了。
aria2c --max-concurrent-downloads=70 --input-file=download-list.txt