Bing 首页每天会更新一张来自世界各地的精美图片,通过提供的 API 可以简单、快速地获取每日壁纸图片。可以实现每日自动更新,作为网站背景和电脑壁纸都非常不错。
我写了一个小 Demo:bz.w3h5.com 可以实现不同分辨率/尺寸的图片,支持随机获取 16 天内的 Bing 每日壁纸图片。
该项目开源,感兴趣的可以访问 Github 查看,基于 Next.js,支持 vercel 一键部署。
Demo 支持的参数:
https://bz.w3h5.com/img/uhd 链接直接输出 UHD超清图片。
https://bz.w3h5.com/img/fhd 链接直接输出 1920×1080 分辨率图片。
https://bz.w3h5.com/img/hd 链接直接输出 1366×768 分辨率图片。
https://bz.w3h5.com/img/m 链接直接输出 1080×1920 分辨率竖版图片。
https://bz.w3h5.com/img/rand 链接随机输出 UHD超清图片。
https://bz.w3h5.com/img/rand_fhd 链接随机输出 1920×1080 分辨率图片。
https://bz.w3h5.com/img/rand_hd 链接随机输出 1366×768 分辨率图片。
https://bz.w3h5.com/img/rand_m 链接随机输出 1080×1920 分辨率竖版图片。
直接访问上面的地址就可以获取到对应的图片,可以直接复制或者右键另存,作为桌面壁纸使用。
项目中提取了一个方法,可以获取多张图片,指定几天前的图片等,我能考虑到的场景都处理了,简单贴一下代码:
/**
* @description: 获取必应每日壁纸
* @return {*}
*/
export async function getBingImages({
ind = 0,
num = 1,
type = "UHD",
}: {
ind?: number;
num?: number;
type: string;
}) {
/**
* 参数说明:
* idx?: 请求图片截止天数: 0 今天; -1 截止至明天(预准备的); 1 截止至昨天,类推(目前最多获取到16天前的图片)
* n: 1-8 返回请求数量,目前最多一次获取8张
* mkt?: 地区 zh-CN(中国)
*/
const response = await axios.get(
`https://cn.bing.com/HPImageArchive.aspx?format=js&idx=${ind}&n=${num}&mkt=zh-CN`
);
return `https://cn.bing.com${response.data.images[0].urlbase}_${type}.jpg`;
}注释写得很详细了,可以结合项目代码查看。
未经允许不得转载:前端资源网 - w3h5 » 搭建了一个获取必应每日壁纸的Demo(附源码)
前端资源网 - w3h5