用 PHP 方式获取 Bing 每日背景图片

张子凡设计开发2015-09-28 22:23:28阅读(...)评论(7)

最近感觉一直在忙与做泪雪用户中心的开发,都没有怎么玩儿,就连中秋节都在忙碌,好不容易闲下来休息一下,又总是觉得很无聊的样子,这不有开始来折腾一下了。

其实很早之前就想来试试抓取 Bing 每天的背景图片,但是到最后还是就放弃了。首先还是在网上收罗了一番,发现用到的方法都大同小异,废话就不多说了,子凡直接上中心内容。

bing

Bing 的每日背景图片官方都有一个输出地址,一个是 json 方式,一个是 XML 的方式,所以就有了下面的这两个地址。

12
https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1

根据上面地址的结构,我暂时研究到就三项属性有效,他们分别是

1、format,非必要。我理解为输出格式,不存在或者不等于 js,即为 xml 格式,等于 js 时,输出 json 格式;

2、idx,非必要。不存在或者等于 0 时,输出当天的图片,-1 为已经预备用于明天显示的信息,1 则为昨天的图片,idx 最多获取到前 16 天的图片信息;*

3、n,必要。这是输出信息的数量,比如 n=1,即为 1 条,以此类推,至多输出 8 条。

了解了这个两个地址后,相信只要懂程序的人都知道需要把我们需要的图片 URL 提炼出来。

下面就直接上子凡的代码吧!

12345678910111213141516171819202122232425262728293031323334353637
<?php$s=$_GET['s'];if($s=='big'){///////////////////////////////////////////////////////////////////////////////$str=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');$array=json_decode($str);$imgurl=$array->{"images"}[0]->{"url"};//图片 URL//$copyright = $array->{"images"}[0]->{"copyright"};//图片描述版权if($imgurl){header('Location: '.$imgurl);exit();}else{exit('error');}///////////////////////////////////////////////////////////////////////////////}else{///////////////////////////////////////////////////////////////////////////////$str=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');if(preg_match("/<url>(.+?)<\/url>/ies",$str,$matches)){$imgurl='https://cn.bing.com'.$matches[1];}if($imgurl){header('Location: '.$imgurl);//直接输出//header('Content-Type: image/JPEG');//@ob_end_clean();//@readfile($imgurl);//@flush(); @ob_flush();exit();}else{exit('error');}///////////////////////////////////////////////////////////////////////////////} //echo $imgurl.'<br>'.$copyright;?>

简单的说一下上面代码的功能,其实以上有获取两种背景大小的功能,所以就用到了两个地址,因为官方提供的地址中 json 输出的图片是 1920 x 1080,而使用 XML 输出的图片地址是 1366 x 768,对于子凡这样追求极致的人来说,做成这样就情有可原咯!

123
//DEMO 示例https://zhangzifan.com/bing //获取 1366 x 768 的小图https://zhangzifan.com/bing?s=big //获取 1920 x 1080 的大图

好吧!多余的就不说了,有兴趣的朋友们还可以继续深度研究。如果大家有什么好玩儿的功能也可以给子凡折腾折腾哈!

最后再给大家分享一个 Bing 搜索引擎的小功能:

www.bing.com/?rb=0 //这个可以关闭 Bing 搜索引擎的背景图片哦

www.bing.com/?rb=1 //这个可以开启 Bing 搜索引擎的背景图片哦

除非注明,否则均为泪雪博客原创文章,禁止任何形式转载

本文链接:https://zhangzifan.com/get-bing-bg.html

发表评论

  1. 蓝逸轩
    1楼
    蓝逸轩2019年02月

    感谢,找了好久

  2. 蓝逸轩
    2楼
    蓝逸轩2019年02月

    感谢楼主的资源,找了好久了

    • 张子凡
      回复
      张子凡2019年02月
      回复 @蓝逸轩 :其实网上应该还是有非常多这样的教程代码的
  3. 阿龙啊
    3楼
    阿龙啊2017年11月

    求1920×1080的代码

    • 张子凡
      回复
      张子凡2017年11月
      回复 @阿龙啊 :示例代码中已经有了,请仔细参考
  4. 阿龙啊
    4楼
    阿龙啊2017年11月

    http://www.aisni.top/az/hprichbg/rb/GreenHeadedTanager_ROW12672846774_1920x1080.jpg
    这种情况怎么解决?

    • 张子凡
      回复
      张子凡2017年11月
      回复 @阿龙啊 :请参考已经给出的代码示例,不要改其中bing的官方地址