获取Bing每日壁纸用作为背景图片

WordPress

Bing 搜索每天都会更换一张精美的图片作为壁纸,移动端还有上每日故事,与图片现配。现在我的博客的关于博客文章归档所有分类顶部都彩 Bing 每日壁纸作为背景,同时将每日故事输出。本文将介绍如何把 Bing 每日壁纸和每日故事扒到自己博客。

获取Bing每日壁纸用作为背景图片

代码

将以下代码加入function.php中:

function bingImgFetch()
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $re = curl_exec($ch);
    curl_close($ch);
    $re = json_decode($re, 1);
    //电脑版返回内容
    $re2 = json_decode(file_get_contents('http://cn.bing.com/cnhp/coverstory/'), 1);
    //移动版返回内容
    return array(
        /* 更改图片尺寸,减小体积 */
        'url' => str_replace('1920x1080', '1366x768', $re['images'][0]['url']),
        /* 结束日期 */
        'date' => date('j', strtotime($re['images'][0]['enddate'])),
        /* 故事标题 */
        'title' => $re2['title'],
        /* 内容 */
        'd' => $re2['para1'],
    );
}

使用示例

$bingimg= bingImgFetch();
echo $bingimg['url'];//输出图片地址
echo $bingimg['title'];
echo $bingimg['d'];

目前方法

<?php $bingimg= bingImgFetch();
$output = '<div class="u-backgroundGrayLightest u-marginBottom50 hasHeaderBackground" style="background-image: url(//www.bing.com'.$bingimg['url'].');" ><header class="hero--page hero--standalone layoutSingleColumn layoutSingleColumn--wide">
<h1 class="hero-title" style="color:#fff">所有分类</h1><p class="hero-description" style="color:#fff;">'.$bingimg['title'].':'.$bingimg['d'].'</p></header></div>';
echo $output;
?>

保存图片

<?php
/**
 * php 抓取 bing 每日图片并保存到服务器
 * 作者:mengkun (mkblog.cn)
 * 日期:2016/12/23
 */
$path = 'temp';   //设置图片缓存文件夹
$filename = date("Ymd") . '.jpg';  //用年月日来命名新的文件名
if (!file_exists($path.'/'. $filename))    //如果文件不存在,则说明今天还没有进行缓存
{
    if(!file_exists($path)) //如果目录不存在
    {
        mkdir($path, 0777); //创建缓存目录
    }
    $str = file_get_contents('http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1'); //读取必应 api,获得相应数据
    $str = json_decode($str,true);
    $imgurl = 'http://cn.bing.com'.$str['images'][0]['url'];    //获取图片 url
    $img = grabImage($imgurl, $path.'/'.$filename); //读取并保存图片
    $handle = fopen("dat.txt", "a");    //用于存放图片信息,如果不需要保存图片的相关信息,可以把下面这些去掉。
    if ($handle)
    {
        $copyright = $str['images'][0]['copyright'];    //说明
        $startdate = $str['images'][0]['startdate'];
        $fullstartdate = $str['images'][0]['fullstartdate'];
        $enddate = $str['images'][0]['enddate'];
        $urlbase = $str['images'][0]['urlbase'];
        $copyrightlink = $str['images'][0]['copyrightlink'];
        $quiz = $str['images'][0]['quiz'];
        $wp = $str['images'][0]['wp'];
        $hsh = $str['images'][0]['hsh'];
        $drk = $str['images'][0]['drk'];
        $top = $str['images'][0]['top'];
        $bot = $str['images'][0]['bot'];
        $tempArr = array("imgurl"=>$imgurl,"copyright"=>$copyright, "startdate"=>$startdate,
        "fullstartdate"=>$fullstartdate, "enddate"=> $enddate, "urlbase"=>$urlbase,
        "copyrightlink"=> $copyrightlink, "quiz"=>$quiz, "wp"=> $wp,
        "hsh"=>$hsh,"drk"=>$drk, "top"=> $top, "bot"=> $bot);   //将相关信息放进数组中
        fwrite($handle, json_encode($tempArr) ."\r\n"); //最终以 json 格式保存在文本文档中
        fclose($handle);
    }
}
/**
 * 远程抓取图片并保存
 * @param $url 图片 url
 * @param $filename 保存名称和路径
 */
function grabImage($url, $filename = "")
{
    if($url == "") return false; //如果$url 地址为空,直接退出
    if ($filename == "") //如果没有指定新的文件名
    {
        $ext = strrchr($url, ".");  //得到$url 的图片格式
        $filename = date("Ymd") . $ext;  //用天月面时分秒来命名新的文件名
    }
    ob_start();         //打开输出
    readfile($url);     //输出图片文件
    $img = ob_get_contents();   //得到浏览器输出
    ob_end_clean();             //清除输出并关闭
    $size = strlen($img);       //得到图片大小
    $fp2 = @fopen($filename, "a");
    fwrite($fp2, $img);         //向当前目录写入图片文件,并重新命名
    fclose($fp2);
    return $filename;           //返回新的文件名
}

© 声明:本站原创文章采用BY-NC-SA创作共用协议,转载时请标明本文地址;非原创(转载)文章版权归原作者所有。

RECENT POSTS

Stay Hungry. Stay Foolish.

数据库查询次数:11次,页面生成时间:0.030秒。