PHP获取Bing每日壁纸,可设置成API作为网站背景

  • 首页 > 技术文献
  • 作者:浪漫の小牛奶
  • 时间: 2020年2月25日 2:23
  • 字数:5025 个
  • 字号:
  • 评论:0 条
  • 浏览:4649 次
  • 百度:百度已收录
  • 分类: 技术文献
  • 时间:2020-2-25 2:23 热度:4649° 评论:0 条 

    必应的每日壁纸不得不说,都很经典,通过API每天还可以自动更新,作为网站背景非常不错

    本站提供该API直接使用,地址为:http://57scs.com/api/bingapi.php  (支持SSL)

    接口

    我们用到的接口是https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1
    这里的idx=0表示是显示当天的时间,如果要显示昨天的就将idx=0改为idx=1,以此类推。
    注意:bing支持查看历史图片15天以内的,数字就有范围限制了(0-15)。

    获取当日图片

    我们有了接口就可以直接利用正则表达式去匹配相关字符串了。
    下面给出一个获取并输出当日美图的php代码


    <?php
         $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('Content-Type: image/JPEG');    
         @ob_end_clean();     
         @readfile($imgurl);    
         @flush();     
         @ob_flush();     
         exit(); 
    } else {     
         exit('error'); 
    } 
    ?>


    保存为bingAPI.php,上传到服务器直接访问即可。

    获取图片版权介绍


    有了图片,没有文字怎么能满足饥渴的我,还是利用正则提取出图片版权信息


    <?php 
    $url=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');
       if (preg_match("/<copyright>(.+?)<\/copyright>/ies", $url, $matches)) {
         $imgcopyright=$matches[1]; 
    } 
    if ($imgcopyright) {
         header("Content-type: text/html; charset=utf-8");
         echo $imgcopyright; 
    } else {     
    exit('error'); 
    } 
    ?>


    tip:修改相关参数即可实现对应的文字说明

    自动保存bing图片

    自动在php文件同级目录下创建一个当前年月的文件夹,保存每天的bing美图并输出


    <?php  
    error_reporting(0); 
    $path=date('Ym'); 
    if (!file_exists($path)) { mkdir($path, 0777); } $pathurl = $path.'/'.date('d').'.jpg'; 
    if (!is_file($pathurl)) { $str=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1'); 
    if (preg_match("/<urlBase>(.+?)<\/urlBase>/ies", $str, $matches)) { $imgurl='https://s.cn.bing.com'.$matches[1].'_1920x1080.jpg'; copy($imgurl, $pathurl); } } header('Content-Type: image/JPEG'); 
    @ob_end_clean(); 
    @readfile($pathurl); 
    @flush(); 
    @ob_flush(); 
    exit(); 
    ?>



    Curl版本获取bing图片

    使用Curl版本获取,速度更快,更稳定


    <?php
        $url = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1';
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
        $data = curl_exec($curl);
        curl_close($curl);
    	$array = json_decode($data);
    	$imgurl = $array->{"images"}[0]->{"url"};//图片 URL
    	$img = 'https://cn.bing.com'.$imgurl;
    	$copyright = $array->{"images"}[0]->{"copyright"};//图片描述版权
    if($img){
    		header('Location: '.$img);
    		exit(); 
    } else {     
         exit('error'); 
    } 
    ?>
    


    Curl版本获取bing图片并保存

    使用Curl版本获取,速度更快,更稳定



    <?php
    //ini_set("display_errors", "On");//打开错误提示
    //ini_set("error_reporting",E_ALL);//显示所有错误
    
    $path = date("Ym");   //设置图片缓存文件夹
    $filename = date("d") . '.jpg';  //用年月日来命名新的文件名
    if (!file_exists($path.'/'. $filename))    //如果文件不存在,则说明今天还没有进行缓存
    {
        if(!file_exists($path)) //如果目录不存在
        {
            mkdir($path, 0777); //创建缓存目录
        }
    	//获取图片地址
        $url = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1';
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
        $data = curl_exec($curl);
        curl_close($curl);
    	$str = json_decode($data,true);
    	$copyright = $str->{"images"}[0]->{"copyright"};//图片描述版权
        $imgurl = 'http://www.bing.com'.$str['images'][0]['url'];    //获取图片url
    	//抓取图片并写入
    	$fdl = curl_init();	//设置抓取的url
    	curl_setopt($fdl, CURLOPT_URL, $imgurl);//打开文件描述符
    	$fp = fopen ($path.'/'. $filename, 'w+');
    	curl_setopt($fdl, CURLOPT_FILE, $fp);//这个选项是意思是跳转,如果你访问的页面跳转到另一个页面,也会模拟访问。
    	curl_setopt($fdl, CURLOPT_FOLLOWLOCATION, true);
    	curl_setopt($fdl, CURLOPT_TIMEOUT,30);
    	//执行命令
    	curl_exec($fdl);//关闭URL请求
    	curl_close($fdl);//关闭文件描述符
    	fclose($fd);
       	exit ("今天的图片已获取");
    } else {
    	exit ("今天的图片已获取");
    }
    ?>


    本站API版本(官方JSON版本


    <?php
    $url = "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1";
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $headers = array(
       "Accept: application/json",
    );
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    //for debug only!
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $resp = curl_exec($curl);
    curl_close($curl);
    //var_dump($resp);
    $array = json_decode($resp);
    $imgurl = 'https://www.bing.com'.$array->{"images"}[0]->{"urlbase"}.'_1920x1080.jpg';
    if($imgurl){
    		header('Location: '.$imgurl); 
    		exit(); 
    } else {     
         exit('error'); 
    } 
    ?>


    需要的可以先测试下,不懂的可以交流~

    正文到此结束
    您阅读这篇文章共花了: 
    本文链接:https://57scs.com/post-14.html
    版权声明:若无特殊注明,本文皆为《浪漫の小牛奶》原创,转载请保留文章出处。
    捐赠支持:如果觉得这篇文章对您有帮助,请“扫一扫”鼓励作者!

    热门推荐


    既然没有吐槽,那就赶紧抢沙发吧!
    返回顶部    返回首页    手气不错    捐赠支持    自定义链接    自定义链接    自定义链接    手机版本   后花园   
    版权所有:盛夏的回忆    站点维护: 浪漫の小牛奶   今天是:|本站已安全运行了: