ts +node实现wallhaven.cc 批量下载

  • Post author:
  • Post category:其他




环境


node



ts



依赖库


cheerio

: 解析HTML, 获取图片地址


download

: 实现图片下载


request

: 网页请求(已废弃,仍可以使用)


pkg

: 打包为pc平台程序


ndoemon

: 实时运行代码



实现思路

使用

request

请求网页,

cheerio

解析

HTMlL

提取图片地址信息,拼接得到下载地址,使用

download

下载到本地

//部分代码
/** 
 * @description 下载图片
 * @param url 下载地址
 * @returns
 */
const getImage = (url: string): Promise<ImageInfo[] | null> => {
    return new Promise((resolve, reject) => {
        request({
            url,
            method: 'GET',
        }, (err: Error, response: Response) => {
            if (err) {
                console.log("请求页面错误:" + url, err);
                resolve(null);
            } else {
                if (!response || !response?.body) {
                    console.log("Error: " + response);
                    resolve(null);
                } else {
                    const $ = cheerio.load(response.body);
                    const figure = $('img.lazyload');
                    const urlList: ImageInfo[] = [];
                    figure.each((index: number, item: any) => {
                        const url = $(item).attr('data-src');
                        const size = $($('span.wall-res')[index])?.html();
                        let fullUrl = url.replace('https://th.wallhaven', 'https://w.wallhaven');
                        fullUrl = fullUrl.replace('small', 'full');
                        const urlPng = fullUrl.split('/').splice(-1, 3)[0];
                        fullUrl = fullUrl.replace(urlPng, 'wallhaven-' + urlPng);
                        urlList.push({
                            fullUrl,
                            smallUrl: url,
                            size: size
                        });
                    })
                    resolve(urlList);
                }
            }
        })
    })
}



实现效果

在这里插入图片描述

运行exe文件之后,按照提示选择对应的下载类型,然后会自动执行下载任务,下载完毕,在exe同级文件夹下会多一个wallhaven的壁纸文件夹

bandicam 2022-08-31 15-19-51-111


🔗 下载地址


Github地址



版权声明:本文为qq_37651169原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。