在索玛博客看到了每日一图的程序,经过尝试,还是失败了,后来经过文心一言的修正,总算成功了。下面将实施过程分享给大家。
过程记录
先新建一个 biying.php 文件,这主要是用于获取并保存图片。Bing每日壁纸API链接中的idx=0 代表取今日的图,改为idx=1 即为取昨日的图。
注:我的停放页用的固定链接,所以我把保存的文件名直接写死,实现下载的时候替换覆盖。如果单纯想保存每天的图,可以改成随机名称。
代码
<?php
// Bing每日壁纸API URL
$url = "https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN";
// 发送GET请求获取数据
$response = file_get_contents($url);
$data = json_decode($response, true);
// 检查数据是否成功获取并包含有效图片信息
if ($data && isset($data['images'][0]['url'])) {
// 获取图片URL
$imageUrl = 'https://cn.bing.com' . $data['images'][0]['url'];
// 图片保存路径(确保在open_basedir允许的路径内)
$imagePath = '***/bg.jpg'; // 修改为允许的路径(请更换为自己的路径)
// 尝试打开文件句柄
$fp = fopen($imagePath, 'wb');
if ($fp === false) {
echo "无法打开文件用于写入:$imagePath";
exit;
}
// 下载图片到服务器
$ch = curl_init($imageUrl);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 执行cURL请求并检查是否成功
if (curl_exec($ch) === false) {
$error = curl_error($ch);
echo "cURL Error: $error";
} else {
echo "图片下载成功,保存到路径:$imagePath";
}
// 关闭cURL会话和文件句柄
curl_close($ch);
fclose($fp);
} else {
echo "无法获取Bing每日壁纸数据或数据格式不正确。";
}
?>
新建好的PHP文件存放到根目录,手动访问域名+/biying.php ,就可以下载图片到服务器。用定时任务来实现每天下载图片,省去手动。
定时任务:执行文件
宝塔面板、1panel建站的话,都有“计划任务”加一个定时访问URL的任务,也可以达到同样的效果!
写在最后
个人引导页、微趣的背景图均已调用每日一图。感兴趣的,可以联系我,直接提供接口~
全能型博主,还会php呢,(我域名到期了,不想续费了,等好好学学工控,也搭建一个博客)