<?php echo $bingimg['url']; ?>
/* 输出1366*768分辨率图片url */
<?php echo $bingimg['url2']; ?>
/* 输出每日故事标题 */
<?php echo $bingimg['title'];
/* 输出每日故事内容 */
<?php echo $bingimg['story']; ?>
以下代码加入到主题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(
/* 拼接1920*1080分辨率图片地址 */
'url' =>'https://www.bing.com'.$re['images'][0]['url'],
/* 裁剪分辨率为1366*768分辨率图片地址 */
'url2' =>'https://www.bing.com'.str_replace('1920x1080','1366x768',$re['images'][0]['url']),
/* 故事标题 */
'title' => $re2['title'],
/* 故事内容 */
'story' => $re2['para1'],
/* 结束日期 */
'date' => date('j',strtotime($re['images'][0]['enddate'])),
);
}
这种做法很直接,但是有点问题:每次访问这个图片页面就意味着一次向bing的请求,那如果你的网站访问量很大呢?是不是意味着你的ip在无限制地向bing发出请求。要是哪天bing不高兴了封了你的ip就...或许是想多了。即使没有这种问题,这种做法也不够友好,相当于每次访问这个页面都是一次图片的强制刷新。于是我想还是把图片保存下来访问静态的好吧。 有这样一个思路:在php文件里直接保存这张图片到网站某个目录下并且以'YMD'这种形式命名,毕竟每天一张名字不会重复。然后在需要引用图片的地方引用这个地址。但是问题又来了,怎么获取到当天的图片呢? 好吧,博主是这样解决的: 比如在根目录下创建了个ima的文件夹,然后把这个php文件放在里面。然后通过下面的函数可以获取到当天的图片路径,
$imgurl=str_replace('$url',end(scandir('ima/bing')),'ima/bing/$url');
scandir()得到一个按照升序列出文件名的数组,end()获取到这个数组最后一个,因为文件是按照年月日(比如:20170422 20170425)这样命名的,所以用end获取的就是最新的一张图片。str_replace()替换得到最新图片路径。这样不就可以调用到最新的一张静态图片且不用每次发一个请求了嘛。
这样做还有一个问题,图片怎么自动获取到这个目录呢?博主想到了用Linux的crontab命令设置一个定时任务,也不知道bing每天啥时候更新图片呀o(╯□╰)o,要么就每隔一段时间去执行...想来想去觉得这种方式也不靠谱,索性还是弄成个插件算了。
如果你不想这么去折腾,可以在附件中下载这个插件,需要就丢到你的插件目录去吧。
wordpress使用说明(可以无视上面内容):
- 把附件Bing.php放到你的插件目录,后台启用插件
- 在需要调用图片的页面引入变量:
$imgurl=str_replace('$url',end(scandir('bingima')),'bingima/$url');图片的src="<?php echo $imgurl; ?> - 如果你还需要bing每日故事则:还需另外引入变量
$bingimg= bingImgFetch();然后: <?php echo $bingimg['title'];#为图片标题<?php echo $bingimg['story'];#为图片故事