自己写的必应美图API

2020-12-18T18:36:00

前言

自博客建立起,一直使用的 @刘明野 大佬写的必应美图API。
但只适合在低版本PHP运行,而且缺少我想要的一些其他功能
最近自学了下,写了一个,基本自己想要的功能都有了。用了几天,效果还不错。分享出来吧!

功能详情

已实现:
★JSON数据:输出易读JSON数据
★TXT文本:输出纯文本信息
★图片URL:自动重定向至图片URL
★指定日期:指定某一天的图片
★图片下载:自动下载到服务器开关
★下载日志:详细显示图片下载时间
★测试模式:方便进行测试

暂未支持:
☆XML数据

计划中:
◈随机图片:随机输出图片信息

API示例

https://hovthen.com/img_bing

参数列表:
format……输出格式 json/txt/url,默认url
date……指定日期 20201218,默认为当前日期
test……测试模式开关 true/false 正常调用勿带此参数

URL:

<img src="https://hovthen.com/img_bing?date=20201218"/>

JSON:

{
    "images": [
        {
            "startdate": "20201217",
            "fullstartdate": "202012171600",
            "enddate": "20201218",
            "url": "\/th?id=OHR.TreCime_ZH-CN7609469681_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
            "urlbase": "\/th?id=OHR.TreCime_ZH-CN7609469681",
            "copyright": "从环绕山峰的小径最高点看到的拉瓦莱多三峰山,意大利 (© AWL Images\/Danita Delimont)",
            "copyrightlink": "https:\/\/www.bing.com\/search?q=%E6%8B%89%E7%93%A6%E8%8E%B1%E5%A4%9A%E4%B8%89%E5%B3%B0%E5%B1%B1&form=hpcapt&mkt=zh-cn",
            "title": "",
            "quiz": "\/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20201217_TreCime%22&FORM=HPQUIZ",
            "wp": true,
            "hsh": "6eb44f06c90c0ea7eaf67d3103459460",
            "drk": 1,
            "top": 1,
            "bot": 1,
            "hs": []
        }
    ],
    "tooltips": {
        "loading": "正在加载...",
        "previous": "上一个图像",
        "next": "下一个图像",
        "walle": "此图片不能下载用作壁纸。",
        "walls": "下载今日美图。仅限用作桌面壁纸。"
    }
}

示例:https://hovthen.com/img_bing?format=json&date=20201218

TXT:

startdate:20201217
fullstartdate:202012171600
enddate:20201218
url:/th?id=OHR.TreCime_ZH-CN7609469681_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp
urlbase:/th?id=OHR.TreCime_ZH-CN7609469681
copyright:从环绕山峰的小径最高点看到的拉瓦莱多三峰山,意大利 (© AWL Images/Danita Delimont)
copyrightlink:https://www.bing.com/search?q=%E6%8B%89%E7%93%A6%E8%8E%B1%E5%A4%9A%E4%B8%89%E5%B3%B0%E5%B1%B1&form=hpcapt&mkt=zh-cn
title:
quiz:/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20201217_TreCime%22&FORM=HPQUIZ
wp:1
hsh:6eb44f06c90c0ea7eaf67d3103459460
drk:1
top:1
bot:1
hotspots:[]
walle:此图片不能下载用作壁纸。
walls:下载今日美图。仅限用作桌面壁纸。

示例:https://hovthen.com/img_bing?format=txt&date=20201218

源码

使用时请手动在同目录下新建dataimg两个文件夹。分别存放图片数据以及下载图片。
如果未创建可能会报错,注意文件夹权限777

<?php

/*
* Author : 万里无云
* Demo : https://hovthen.com/img_bing
* Description : 一个Bing今日美图API PHP版
* Time : 2020-12-16
* Other : 转载请注明出处 https://www.hovthen.com/ Thanks!
*/


if ( !file_exists("./data/.readme.txt") )
{
    file_put_contents("./img/.readme.txt","//下载图片文件夹,可随意删除,可使用正则表达式删除时间,仅保留图片链接:([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}    )");
    file_put_contents("./data/.readme.txt","//图片数据文件夹,请勿删除");
    //请手动在当前目录新建 data 和 img 两个文件夹
}
$down_img = true;//设置是否自动下载图片,true/false

$Get_date = $_GET['date'];//20201201
$Get_format = $_GET['format'];//json、xml、txt、url

if ( $Get_date==null||$Get_date==""||$Get_date=="null" ) {
    //日期格式默认 今天
    $datetime = date("Ymd");
}

if ( date('Ymd', strtotime($Get_date)) == $Get_date ) {
    //日期格式判断 True
    $datetime = $Get_date;
} else {
    //日期格式判断 False
    $datetime = date("Ymd");
}

$file_data = "./data//CN_". $datetime . ".json";

if ( file_exists($file_data) ) {
        //当前目录中,JSON数据文件存在
    $data = json_decode(file_get_contents($file_data), true);
} else {
        //当前目录中,JSON数据文件不存在
    $data = json_decode(file_get_contents("https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1"), true);
    $inset_data = json_encode($data);
    $inset_file = "./data/CN_". $data['images'][0]['enddate']. ".json";
    $url = "https://cn.bing.com/". $data['images'][0]['url'];
    file_put_contents($inset_file, $inset_data);
    if ( $down_img ) {
        file_put_contents("./img/CN_". $data['images'][0]['enddate']. ".jpeg",file_get_contents($url));
        $txt_data = file_get_contents("./img/.readme.txt");
        $txt_data = $txt_data. "\n". date("Y-m-d H:i:s")."    ".$url;
        file_put_contents("./img/.readme.txt",$txt_data);
    }
}

if ( $_GET['test']=="true" ) {
    header('Content-type:text/html');
    echo "<title>必应美图API测试</title>";
    echo "测试模式:PHP ". PHP_VERSION. "<br/><br/>";
    echo "最终数据:<br/>". json_encode($data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT). "<br/><br/>";
    echo "传入数据_日期(date):<br/>". $Get_date. "<br/><br/>";
    echo "传入数据_类型(format):<br/>". $Get_format. "<br/><br/>";
    echo "传出图片_链接:<br/>". "https://cn.bing.com/". $data['images'][0]['url']. "<br/><br/>";
    echo "传出图片_示例:<br/><img src='". "https://cn.bing.com/". $data['images'][0]['url']. "'/><br/><br/>";
    exit('测试模式:PHP '.PHP_VERSION);
}

if ( $Get_format=="json" ) {
    header('Content-type:text/json;charset=utf-8');
    echo json_encode($data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
}
if ( $Get_format=="url"||$Get_format==""||$Get_format==null ) {
    header("status: 302");
    $headerurl = "https://cn.bing.com/". $data['images'][0]['url'];
    header("Location:$headerurl");
}
if ( $Get_format=="xml" ) {
    header('Content-type:text/xml;charset=utf-8');
    echo "<error><title>暂不支持XML</title><text>请使用JSON或TXT</text></error>";
}
if ( $Get_format=="txt" ) {
    header('Content-type:text/txt;charset=utf-8');
    $headertxt = "\nstartdate:". $data['images'][0]['startdate']. "\nfullstartdate:". $data['images'][0]['fullstartdate']. "\nenddate:". $data['images'][0]['enddate']. "\nurl:". $data['images'][0]['url']. "\nurlbase:". $data['images'][0]['urlbase']. "\ncopyright:". $data['images'][0]['copyright']. "\ncopyrightlink:". $data['images'][0]['copyrightlink']. "\ntitle:". $data['images'][0]['title']. "\nquiz:". $data['images'][0]['quiz']. "\nwp:". $data['images'][0]['wp']. "\nhsh:". $data['images'][0]['hsh']. "\ndrk:". $data['images'][0]['drk']. "\ntop:". $data['images'][0]['top']. "\nbot:". $data['images'][0]['bot']. "\nhotspots:". json_encode($data['images'][0]['hs'], JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT). "\nwalle:". $data['tooltips']['walle']. "\nwalls:". $data['tooltips']['walls']. "\n";
    echo $headertxt;
}

?>

更多

强烈建议COPY一下源码在自己服务器/虚拟空间使用,本站随时可能不稳定。

如果大佬有之前的bing图官方的json数据压缩包麻烦发我一份,扩充下图库。

当前页面是本站的「Baidu MIP」版

请点击「完整版」查看或发表评论