PHP自动保存Bing壁纸|根据官方Json数据获取今日Bing壁纸|7天随机Bing壁纸

官方壁纸接口

https://cn.bing.com/HPImageArchive.aspx
参数 是否必须 描述
formart 输出格式,值为js或xml,默认为xml,一般使用js
idx 输出图片日期,idx=0或者不存在,则默认输出今天的图片,最大支持到16,最小为-1
n 输出信息的数量,n=1为一条,最大支持8条
参数
接口示例:https://cn.bing.com/HPImageArchive.aspx?formart=js&idx=0&n=1(输出json格式的今日壁纸,信息为1条)

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;           //返回新的文件名
}
代码来自https://codess.cc/archives/72.html(链接失效)(经过本人优化)

根据官方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");
?>

宝塔面板添加计划任务配合第一种实现自动保存

图片[1]-PHP自动保存Bing壁纸|根据官方Json数据获取今日Bing壁纸|7天随机Bing壁纸-Abyss-博客
打开宝塔面板,选择菜单栏上的“计划任务” 任务类型选择:访问URL 任务名称:自己随便填 执行周期:每天-0点30分(为了避免Bing壁纸刷新延迟,选择0:30) URL地址:你PHP文件URL地址(例如:https://your-domain/bing/Autosave_Bing.php) 点击添加任务即可 点击任务列表下的,刚刚添加的任务旁边的执行,你会发现PHP文件所在目录多出了一个imgs文件夹,里面有刚刚保存的Bing壁纸 点击日志也可以查看执行日志
图片[2]-PHP自动保存Bing壁纸|根据官方Json数据获取今日Bing壁纸|7天随机Bing壁纸-Abyss-博客
© 版权声明
THE END
喜欢就支持一下吧
点赞0支持一下吧? 分享
评论 共1条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
    • Abyss的头像-Abyss-博客Abyss等级-LV10-Abyss-博客作者0