SanCi

用PHP方式获取Bing每日背景图片
其实很早之前就想来试试抓取 Bing 每天的背景图片,但是由于种种原因[ji'shu'lan']到最后还是就放弃了...
扫描右侧二维码阅读全文
05
2018/08

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

其实很早之前就想来试试抓取 Bing 每天的背景图片,但是由于种种原因[ji'shu'lan']到最后还是就放弃了。今儿有空在网上搜罗了一番,发现用到的方法都大同小异,他山之石可以攻玉, 毫不客气[hou'wu'lian'chi']就拿来套用了。

Bing 的每日背景图片官方都有一个输出地址,一个是 json 方式,一个是 XML 的方式,所以就有了下面的这两个地址。
http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1
http://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 提炼出来。

PHP代码

<?php
$s = $_GET['s'];
if($s == 'big'){
///////////////////////////////////////////////////////////////////////////////
    $str = file_get_contents('http://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('http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');
    if(preg_match("/<url>(.+?)<\/url>/ies",$str,$matches)){
        $imgurl='http://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,有兴趣的朋友们还可以继续深度研究。如果大家发现有什么好玩的功能记得@sanci 哦!

最后再给大家分享一个 Bing 搜索引擎的小功能:
www.bing.com/?rb=0 这个可以关闭 Bing 搜索引擎的背景图片哦
www.bing.com/?rb=1 这个可以开启 Bing 搜索引擎的背景图片哦

该部分仅登录用户可见


随机一言(显示内容与本文关)
Last modification:October 5th, 2018 at 03:15 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment