前段时间,分享了Bing随机壁纸API,Bing随机壁纸 API 有个朋友问我壁纸怎么保存下来的,其实这东西网上一搜一大把,用PHP/JAVA/Python… 都能实现,看个人喜好了。
PHP 自动保存 Bing 壁纸
PHP 代码:
<?php /* php抓取bing每日图片并保存到服务器 */ $path = 'imgs'; //设置图片缓存文件夹 $filename = date("Y-m-d") . '.jpg'; //用年月日来命名新的文件名 if (!file_exists($path.'/'. $filename)) //如果文件不存在,则说明今天还没有进行缓存 { if(!file_exists($path)) //如果目录不存在 { mkdir($path, 0777); //创建缓存目录 } $str = file_get_contents('https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN'); //读取必应api,获得相应数据 $str = json_decode($str,true); $imgurl = 'https://cn.bing.com'.$str['images'][0]['url']; //获取图片url $img = grabImage($imgurl, $path.'/'.$filename); //读取并保存图片 /*Bing壁纸先已全面取消壁纸故事接口,并不再维护,故本例中未对每日故事进行采集,望知悉!*/ } /* 远程抓取图片并保存 */ function grabImage($url, $filename = "") { if($url == "") return false; //如果$url地址为空,直接退出 if ($filename == "") //如果没有指定新的文件名 { $ext = strrchr($url, "."); //得到$url的图片格式 $filename = date("Y-m-d") . $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; //返回新的文件名 }
根据官方 Json 数据获取今日 Bing 壁纸
PHP 代码:
<?php $json_content = file_get_contents("https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN"); $json_content = json_decode($json_content, true); $img_url = "https://cn.bing.com" . $json_content["images"][0]["url"]; header("Location: $img_url"); ?>
7 天随机 Bing 壁纸
PHP 代码:
<?php $date = mt_rand(0, 7); $json_content = file_get_contents('https://cn.bing.com/HPImageArchive.aspx?format=js&idx=' . $date . '&n=1&mkt=zh-CN'); $json_content = json_decode($json_content, true); $imgurl = 'https://cn.bing.com' . $json_content['images'][0]['url']; header("Location: $imgurl"); ?>
宝塔面板添加计划任务配合第一种实现自动保存
打开宝塔面板,选择菜单栏上的 “计划任务” 任务类型选择:访问 URL 任务名称:自己随便填 执行周期:每天 – 0 点 30 分(为了避免 Bing 壁纸刷新延迟,选择 0:30) URL 地址:你 PHP 文件 URL 地址(例如:https://your-domain/bing/Autosave_Bing.php) 点击添加任务即可 点击任务列表下的,刚刚添加的任务旁边的执行,你会发现 PHP 文件所在目录多出了一个 imgs 文件夹,里面有刚刚保存的 Bing 壁纸 点击日志也可以查看执行日志。