惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
V
Visual Studio Blog
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
B
Blog
I
InfoQ
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
H
Help Net Security
博客园 - Franky
宝玉的分享
宝玉的分享
博客园 - 司徒正美
C
Check Point Blog
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Jina AI
Jina AI
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家

Minecraft-Sep

还没有域名建站?2026年最新免费域名推荐 | Minecraft-Sep 还没有域名建站?2026年最新免费域名推荐 | Sep's Blog 搞机日记2——华为儿童手表3X优化 | Minecraft-Sep 搞机日记2——华为儿童手表3X优化 | Sep's Blog Windows实用软件推荐 | Minecraft-Sep Windows实用软件推荐 | Sep's Blog 搞机日记——华为儿童手表3X破解 | Minecraft-Sep 搞机日记——华为儿童手表3X破解 | Sep's Blog 提升效率必备Windows神器PowerToys | Minecraft-Sep 提升效率必备Windows神器PowerToys | Sep's Blog 【Hexo】如何提高静态博客访问速度?Vercel+Cloudflare+CDN让你的网站速度飞起! | Minecraft-Sep 【Hexo】如何提高静态博客访问速度?Vercel+Cloudflare+CDN让你的网站速度飞起! | Sep's Blog Cloudflare Pages+Telegraph搭建简易图床 | Minecraft-Sep Cloudflare Pages+Telegraph搭建简易图床 | Sep's Blog 【Hexo】告别缓慢的 Github Pages,来试试更好的 Vercel 吧! 【Hexo】告别缓慢的 Github Pages,来试试更好的 Vercel 吧! 什么是DDos?它会对博客造成什么威胁?DDos攻击原理与防护方法 | Minecraft-Sep 什么是DDos?它会对博客造成什么威胁?DDos攻击原理与防护方法 | Sep's Blog 202409博客月报 | 第一期 | Minecraft-Sep 202409博客月报 | 第一期 | Sep's Blog 关于博客评论更换的通知 | Minecraft-Sep 关于博客评论更换的通知 | Sep's Blog 免费小型数据库——Vercel Blob初体验 | Minecraft-Sep 免费小型数据库——Vercel Blob初体验 | Sep's Blog 如何让你的博客更丰富?hexo常见插件推荐 | Minecraft-Sep 如何让你的博客更丰富?hexo常见插件推荐 | Sep's Blog 博客一周年记 | Minecraft-Sep 博客一周年记 | Sep's Blog 免费域名怎么弄?常见免费域名指南 | Minecraft-Sep 免费域名怎么弄?常见免费域名指南 | Sep's Blog
API构建①——Bing每日一图接口 | Sep's Blog
标签 · 2024-07-31 · via Minecraft-Sep

前言

众所周知,bing的每日一图都特别beautiful,在我们的blog里也起到了很好的装饰作用。那就有人问了,HOW TO GET IT?今天我就来教你们构建属于自己的bing每日一图API!

实践

Part1. 了解bing每日一图链接规律

就拿今天的做例子:https://cn.bing.com/th?id=OHR.HoodoosBryce_ZH-CN8398575172_1920x1080.jpg

获取到的json内容如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
"images": [
{
"startdate": "20240730",
"fullstartdate": "202407301600",
"enddate": "20240731",
"url": "/th?id=OHR.HoodoosBryce_ZH-CN8398575172_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
"urlbase": "/th?id=OHR.HoodoosBryce_ZH-CN8398575172",
"copyright": "石林,日落点,布莱斯峡谷国家公园,犹他州,美国 (© Tim Fitzharris/Minden Pictures)",
"copyrightlink": "https://www.bing.com/search?q=%E5%B8%83%E8%8E%B1%E6%96%AF%E5%B3%A1%E8%B0%B7%E5%9B%BD%E5%AE%B6%E5%85%AC%E5%9B%AD&form=hpcapt&mkt=zh-cn",
"title": "这里有“胡图”吗?",
"quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20240730_HoodoosBryce%22&FORM=HPQUIZ",
"wp": true,
"hsh": "1cabac064d004edabc8b0d2e375052ae",
"drk": 1,
"top": 1,
"bot": 1,
"hs": []
}
],
"tooltips": {
"loading": "正在加载...",
"previous": "上一个图像",
"next": "下一个图像",
"walle": "此图片不能下载用作壁纸。",
"walls": "下载今日美图。仅限用作桌面壁纸。"
}
}

我们就可以猜出其中的规律了:

https://cn.bing.com + 上面的”url”,构成了该链接。

Part2. 构建API

我们使用GET方法构建我们的API,名称为bing.php,也可以从 https://mc-sep.js.cool/api/bing.php 下载!

  1. 判断是否是随机调用(我们的API可以指定日期)
1
2
3
<?php
if ($_GET['rand']==='true') {
$gettime = rand(-1,7);
  1. 如果不是,则指定日期
1
2
3
4
5
6
7
8
else{
$gettimebase = $_GET['day'];
if (empty($gettimebase)) {
$gettime = 0;
}else{
$gettime = $gettimebase;
}
}
  1. 获取Bing Json详细信息,转换为PHP数组,再提取基础URL
1
2
3
$json_string = file_get_contents('https://www.bing.com/HPImageArchive.aspx?format=js&idx='.$gettime.'&n=1');
$data = json_decode($json_string);
$imgurlbase = "https://www.bing.com".$data->{"images"}[0]->{"urlbase"};
  1. 判断是否制定了图片大小,否则默认1920 * 1080
1
2
3
4
5
if (empty($imgsizebase)){
$imgsize = "1920x1080";
}else{
$imgsize = $imgsizebase;
}
  1. 建立完整URL
1
$imgurl = $imgurlbase."_".$imgsize.".jpg";
  1. 获取其他信息并判断是否需要
1
2
3
4
5
6
$imgtime = $data->{"images"}[0]->{"startdate"};
$imgtitle = $data->{"images"}[0]->{"copyright"};
$imglink = $data->{"images"}[0]->{"copyrightlink"};
if ($_GET['info']==='true') {
echo "{title:".$imgtitle.",url:".$imgurl.",link:".$imglink.",time:".$imgtime."}";
}
  1. 不是则直接返回
1
2
3
else{
header("Location: $imgurl");
}
  1. 完整代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
if ($_GET['rand']==='true') {
$gettime = rand(-1,7);
}else{
$gettimebase = $_GET['day'];
if (empty($gettimebase)) {
$gettime = 0;
}else{
$gettime = $gettimebase;
}
}
$json_string = file_get_contents('https://www.bing.com/HPImageArchive.aspx?format=js&idx='.$gettime.'&n=1');
$data = json_decode($json_string);
$imgurlbase = "https://www.bing.com".$data->{"images"}[0]->{"urlbase"};
$imgsizebase = $_GET['size'];
if (empty($imgsizebase)){
$imgsize = "1920x1080";
}else{
$imgsize = $imgsizebase;
}
$imgurl = $imgurlbase."_".$imgsize.".jpg";
$imgtime = $data->{"images"}[0]->{"startdate"};
$imgtitle = $data->{"images"}[0]->{"copyright"};
$imglink = $data->{"images"}[0]->{"copyrightlink"};
if ($_GET['info']==='true') {
echo "{title:".$imgtitle.",url:".$imgurl.",link:".$imglink.",time:".$imgtime."}";
}else{
header("Location: $imgurl");
}

总结

可以去参考一下API接口:

版权所有©MC-Sep 2024.

MCSep