简介

​ 必应搜索每日都会有一张精美的图片,我们可以

​ 1、保存下来搭建api用于图片展示

​ 2、放在博客当博客背景

​ 于是便有了本项目的诞生。本项目借助python实现:

​ 1、服务端获取2018-至今的壁纸接口数据,并存储到Mongodb

​ 2、提供json接口和图片接口

项目地址:https://github.com/flow2000/bing-wallpaper-api

API接口说明

获取今日壁纸

1
https://api.bimg.cc/today?w=1920&h=1080&mkt=zh-CN
参数名类型是否必要备注
wInt图片宽度,默认1920
hInt图片高度,默认1080
uhdBool是否4k,默认False
mktString地区,默认zh-CN

获取随机壁纸

1
https://api.bimg.cc/random?w=1920&h=1080&mkt=zh-CN
参数名类型是否必要备注
wInt图片宽度,默认1920
hInt图片高度,默认1080
uhdBool是否4k,默认False
mktString地区,默认zh-CN

获取壁纸JSON数据

1
https://api.bimg.cc/all?page=1&order=asc&limit=10&w=1920&h=1080&mkt=zh-CN
参数名类型是否必要备注
pageInt页数,默认1
limitInt每页数据量,默认10(1-20)
wInt图片宽度,默认1920
hInt图片高度,默认1080
orderstring排序,默认降序desc,升序asc
mktString地区,默认zh-CN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 已知分辨率
resolutions: [
'1920x1200',
'1920x1080',
'1366x768',
'1280x768',
'1024x768',
'800x600',
'800x480',
'768x1280',
'720x1280',
'640x480',
'480x800',
'400x240',
'320x240',
'240x320'
]
1
2
3
4
5
6
7
8
9
10
11
12
// 已知国家地区
locations: [
"de-DE",
"en-CA",
"en-GB",
"en-IN",
"en-US",
"fr-FR",
"it-IT",
"ja-JP",
"zh-CN"
]

获取壁纸数量

1
https://api.bimg.cc/total?mkt=zh-CN
参数名类型是否必要备注
mktString地区,默认zh-CN

成果

1
https://api.bimg.cc/today

今日壁纸

1
https://api.bimg.cc/random

随机壁纸

部署

vercel部署

1、在 MongoDB 申请 MongoDB 帐号,具体可查看我的博客教程:如何申请一个永久免费的 Mongodb 数据库 - 详细版

2、在Vercel申请 Vercel帐号

3、创建数据库用户名和密码,在IPAccess List添加0.0.0.0(代表允许所有 IP 地址的连接),在 Clusters 页面点击 CONNECT,选择第二个:Connect your application,并记录数据库连接字符串,请将连接字符串中的 user修改为数据库用户,<password> 修改为数据库密码

3、点击部署vercel deploy

4、进入 Settings - Environment Variables,添加环境变量 MONGODB_URI,值为第 3 步的数据库连接字符串

5、进入 Overview,点击 Domains 下方的链接,添加一个子域名,并在域名解析添加一个CNAME解析:cname.vercel-dns.com.,等待刷新完成即可获得一个https的接口

docker部署

1
docker run -itd --name bimg --restart=always --env MONGODB_URI= -p 9127:8888 flow2000/bimg

MONGODB_URI:存储方式为mongodb时的环境变量

手动触发Action

因为Github Action定时触发需要排队,可能会需要等待很长时间才会进行构建,但手动触发优先级会更高,等待时间会更短,所以我们需要调用github的API来手动触发。

1
2
3
4
5
6
7
8
9
on:
push:
branches:
- master
schedule:
- cron: '30 0 * * *'
repository_dispatch:
types:
- webhook

https://github.com/settings/tokens选择Generate new token->Generate new token (classic),过期时间选择No expiration,权限范围选择repo全部权限,复制生成的令牌

从hiflow复制我的模板流程:https://hiflow.tencent.com/share/um1H7Drd0uYfCNhpPzsY48hFS5lOJDWf

其中,为用户名,为仓库名,为上一步骤得到的令牌

例如:https://api.github.com/repos/flow2000/bing-wallpaper-api/dispatches

hiflow模板流程

时间定为每天08:00,经测试,每个国家地区的壁纸都能更新到。

测试地址:https://github.com/flow2000/vercel-api/actions/runs/3474097895/jobs/5806877139

鸣谢

感谢hexo-circle-of-friends的自动化思路

感谢Bing-Wallpaper-Action的分地区思路以及仓库的初始化数据