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

发布于:2023-01-01 ⋅ 阅读:(535) ⋅ 点赞:(0)

环境

nodets

依赖库

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地址

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到