JS获取Bing每日壁纸
之前网上很多PHP版本的,我一直用的是这个:https://bing.img.run/api.html
下面是一个JS版本的,部署到cloudflare可以直接用
export default {
async fetch(request) {
const url = "https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN";
// 1. 获取 Bing 数据
const response = await fetch(url);
const data = await response.json();
// 2. 拼接真实图片地址
const imgUrl = 'https://cn.bing.com' + data.images[0].urlbase + '_1920x1080.jpg';
// 3. 返回 302 重定向,直接跳转到图片
return Response.redirect(imgUrl, 302);
}
}2026-06-25
添加一个腾讯云Edgeone边缘函数版本的
// 注册 fetch 事件监听器,这是边缘函数的运行入口
addEventListener('fetch', event => {
// 当函数代码抛出未处理的异常时,边缘函数会将此请求转发回源站
event.passThroughOnException();
event.respondWith(handleEvent(event));
});
// 处理请求的异步函数
async function handleEvent(event) {
const request = event.request;
const bingApiUrl = "https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN";
try {
// 1. 获取 Bing 数据
const response = await fetch(bingApiUrl);
const data = await response.json();
// 2. 拼接真实图片地址
// 防御性检查:确保 data.images 存在且不为空
if (!data.images || data.images.length === 0) {
// 如果数据异常,返回一个 502 错误响应
return new Response('Failed to fetch Bing image data', { status: 502 });
}
const imgUrl = 'https://cn.bing.com' + data.images[0].urlbase + '_1920x1080.jpg';
// 3. 返回 302 重定向,直接跳转到图片
return Response.redirect(imgUrl, 302);
} catch (error) {
// 若 fetch 或 JSON 解析出错,返回 502 错误
return new Response('Internal Error: ' + error.message, { status: 502 });
}
}