自己写的必应美图API
前言
自博客建立起,一直使用的 @刘明野 大佬写的必应美图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
源码
使用时请手动在同目录下新建data和img两个文件夹。分别存放图片数据以及下载图片。
如果未创建可能会报错,注意文件夹权限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数据压缩包麻烦发我一份,扩充下图库。