如何使用PHP获取Bing每日图片

Bing 图片从来都不会重复,这些图片都是由必应的团队精挑细选的美图,网络上自动将必应壁纸保存到服务器本地的PHP代码很多,由于我自己的服务器带宽比较小,将必应壁纸保存到服务器本地并作为网站背景时加载速度太慢会影响观感,那么,如果可以把直接 Bing 的每日图片接口通过PHP设置为博客背景会不会更好看呢?

接口

进行抓包,我们可以知道这个链接 https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1

获取图片

通过抓包显示结果:

代码语言:javascript
复制
{"images":[{"startdate":"20211129","fullstartdate":"202111291600","enddate":"20211130","url":"/th?id=OHR.ElephantGiving_ZH-CN9743352473_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp","urlbase":"/th?id=OHR.ElephantGiving_ZH-CN9743352473","copyright":"马赛马拉国家保护区中的非洲草原象,肯尼亚 (© Yva Momatiuk and John Eastcott/Minden Pictures)","copyrightlink":"https://www.bing.com/search?q=%E9%9D%9E%E6%B4%B2%E8%8D%89%E5%8E%9F%E8%B1%A1&form=hpcapt&mkt=zh-cn","title":"","quiz":"/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20211129_ElephantGiving%22&FORM=HPQUIZ","wp":true,"hsh":"e9a2162e9a4784993285642a017c0693","drk":1,"top":1,"bot":1,"hs":[]}],"tooltips":{"loading":"正在加载...","previous":"上一个图像","next":"下一个图像","walle":"此图片不能下载用作壁纸。","walls":"下载今日美图。仅限用作桌面壁纸。"}}

我们从中提取图片链接,url地址: /th?id=OHR.ElephantGiving_ZH-CN9743352473_1920x1080.jpg&rf=LaDigue_1920x1080.jpg 以下是将必应每日图片通过 php 直接输出分辨率为1920X1080的图片的代码

代码语言:javascript
复制
<?php
    $str=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');
if (preg_match("/<urlBase>(.+?)<\/urlBase>/", $str, $matches)) {
    $imgurl='https://cn.bing.com'.$matches[1].'_1920x1080.jpg';
}
if ($imgurl) {
    header('Content-Type: image/JPEG');
    @ob_end_clean();
    @readfile($imgurl);
    @flush();
    @ob_flush();
    exit();
} else {
    exit('error');
}
?>
如何浏览昨天,前天的图片

http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1 在这里,更换 idx= 这个参数就可以了。 http://cn.bing.com/HPImageArchive.aspx?idx=1&n=1 将要得到昨天的图片 http://cn.bing.com/HPImageArchive.aspx?idx=2&n=1 得到前天的图片

自用接口

今日:api.sccens.net/bing 昨日:api.sccens.net/bing/bing1.php 前日:api.sccens.net/bing/bing2.php