unsplash的图片一直质量很高,用来做壁纸是个不错的选择,网站的首页之前也一直用unsplash.it的随机图片来作为背景,可是unsplash.it老是挂,所以还是逞着没挂的时候把下载下来吧。这种东西都不用想,肯定之前有人做过,下了一个python的和一个node的,可是不造为啥都用不了,算了干脆自己写一个吧。。。

项目地址 unsplash

其实之前还想自己实现一个unspash.it那样的Server的说

用法很简单,就clone下来然后npm install然后node app就行了,然后图片就会自动下载到saved目录了。。。

用了request模块来简化请求和图片下载过程

1
2
3
4
5
6
7
8
9
10
// 获取图片信息
request({
url: url
,method: 'HEAD'
}, (err, res, body) => {
//...
})

// 下载图片
request(url).pipe(fs.createWriteStream(dest)).on('close', callback)

还用了async来进行多线程下载,本来想自己实现一个的,弄了半天也没成功,最后还是用了async…用起来还是很方便的,也算是node包依赖的优势吧,什么东西都伸手就有2333

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
async.mapLimit(picList, 5, (src, cb) => {
// 顺便自动retry防止报错程序中断
async.retry({
times: 3,
interval: 1000
}, () => {
download(src, dest, cb)
}, (err, result) => {

})
}, (err, result) => {
if (err) {
console.log(err)
} else {
console.log(result)
}
})