PHP获取必应(Bing)每日背景图片并保存

微软必应(bing)搜索有一个很不错的功能就是可以每天都更换背景图片,而且每天的背景图片都很精美值得收藏。通过PHP获取必应(bing)的背景图片。

图片[1] - PHP获取必应(Bing)每日背景图片并保存 - 长江博客

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

https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1 
https://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 条。

下面就直接上代码吧!

<?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];
	}
	else {  // 如果由于某些原因,没抓取到图片地址
    $imgurl = 'http://img.infinitynewtab.com/InfinityWallpaper/2_14.jpg'; // 使用默认的图像(默认图像链接可修改为自己的)
    }
	
	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;
?>

注意:这里使用的是preg_match函数是php较老版本支持的。

如果使用php7+的,试试如下代码

如果想将获取的图片保存下来,可以用如下代码:

将创建的php文件放在网站目录下,直接访问就可以获取图片了,还可以配合宝塔定时任务,每日将图片保留下来。

本站代码模板仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容