背景
我的博客登陆背景图就是调用的bing接口来实现的,每天自动换背景,很是华丽,但是从网上找的几个调用接口总是出现调用失败的情况,很是尴尬,于是就自己撸代码实现吧,靠谱!
思路
- 分析bing每日壁纸接口
- 使用python调用bing每日接口并解析
- 使用flask 实现对外调用接口
bing每日壁纸接口说明
接口:https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1
参数说明:
format
:返回数据格式,format=js
返回数据格式为json
,默认不写返回的是xml
格式
idx
:不写或idx=0
返回当天壁纸数据,-1为已经预备用于明天显示的信息,1则为昨天的图片,idx最多获取到之前16天的图片信息
n
:返回壁纸数量,比如n=1,即为1条,以此类推,至多输出8条
在此我选择是json格式,如下:
{
"images": [{
"startdate": "20200325",
"fullstartdate": "202003251600",
"enddate": "20200326",
"url": "/th?id=OHR.NoCaliCoast_ZH-CN2604627519_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",
"urlbase": "/th?id=OHR.NoCaliCoast_ZH-CN2604627519",
"copyright": "鸟瞰蒙特雷附近的大苏尔海岸线,加利福尼亚州 (© Blue Planet Archive/Alamy)",
"copyrightlink": "https://www.bing.com/search?q=%E5%A4%A7%E8%8B%8F%E5%B0%94%E6%B5%B7%E5%B2%B8%E7%BA%BF&form=hpcapt&mkt=zh-cn",
"title": "",
"quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20200325_NoCaliCoast%22&FORM=HPQUIZ",
"wp": true,
"hsh": "db3f08bec4f87e23f23f3aedf7698f29",
"drk": 1,
"top": 1,
"bot": 1,
"hs": []
}],
"tooltips": {
"loading": "正在加载...",
"previous": "上一个图像",
"next": "下一个图像",
"walle": "此图片不能下载用作壁纸。",
"walls": "下载今日美图。仅限用作桌面壁纸。"
}
}
返回参数中,url是我们要获取的壁纸地址,urlbase是基础地址,根据规则,可以提供不同分辨率的壁纸大小,比如:1920x1080
使用python实现bing每日壁纸接口
代码如下:
def get_bing_img_url(format='js',idx=0):
'''
获取bing每日壁纸地址
'''
url = 'https://cn.bing.com/HPImageArchive.aspx?format={}&idx={}&n=1'.format(format,idx)
resp = requests.get(url,timeout=5).text
data = json.loads(resp)
return 'https://cn.bing.com{}'.format(data['images'][0]['url'])
if __name__ == "__main__":
img = get_bing_img_url()
print(img)
调用返回:
https://cn.bing.com/th?id=OHR.NoCaliCoast_ZH-CN2604627519_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp
flask实现对外调用接口
from flask import Flask, redirect
app = Flask(__name__)
def get_bing_img_url(format='js',idx=0):
'''
获取bing每日壁纸地址
'''
url = 'https://cn.bing.com/HPImageArchive.aspx?format={}&idx={}&n=1'.format(format,idx)
resp = requests.get(url,timeout=5).text
data = json.loads(resp)
return 'https://cn.bing.com{}'.format(data['images'][0]['url'])
@app.router('/bing_bg')
def bing_bg():
return redirect(get_bing_img_url())
本站提供的对外调用接口
https://www.h3blog.com/bing_bg