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

推荐订阅源

S
SegmentFault 最新的问题
A
About on SuperTechFans
NISL@THU
NISL@THU
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
美团技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
小众软件
小众软件
博客园 - Franky
罗磊的独立博客
The Cloudflare Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
MongoDB | Blog
MongoDB | Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog
The GitHub Blog
The GitHub Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
有赞技术团队
有赞技术团队
Hacker News - Newest:
Hacker News - Newest: "LLM"
Cyberwarzone
Cyberwarzone
C
CXSECURITY Database RSS Feed - CXSecurity.com
Project Zero
Project Zero
Security Latest
Security Latest
L
Lohrmann on Cybersecurity
AWS News Blog
AWS News Blog
The Hacker News
The Hacker News
I
Intezer
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Privacy International News Feed
月光博客
月光博客
A
Arctic Wolf
Apple Machine Learning Research
Apple Machine Learning Research
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园_首页
WordPress大学
WordPress大学
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tor Project blog
博客园 - 三生石上(FineUI控件)
The Last Watchdog
The Last Watchdog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

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 利用Cloudflare Workers搭建镜像网站 | Minecraft-Sep 利用Cloudflare Workers搭建镜像网站 | Sep's Blog API构建①——Bing每日一图接口 | Sep's Blog 【Hexo】Twikoo--评论系统的添加(2) | Minecraft-Sep 【Hexo】Twikoo--评论系统的添加(2) | Sep's Blog 【Hexo】 Waline--评论系统的添加(1) | Minecraft-Sep 【Hexo】 Waline--评论系统的添加(1) | Sep's Blog 【Hexo】Hexo+Github搭建个人博客 | Minecraft-Sep 【Hexo】Hexo+Github搭建个人博客 | Sep's Blog 【HTML】利用localstrange临时存储数据 | Minecraft-Sep 【HTML】利用localstrange临时存储数据 | Sep's Blog
API构建①——Bing每日一图接口 | Minecraft-Sep
标签 · 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.

Minecraft-Sep