Bing 每日壁纸

前段时间,分享了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 壁纸 点击日志也可以查看执行日志。

发布者:LiuCi

辛苦是获得一切的定律。