Python+Github Action搭建必应壁纸api
简介
必应搜索每日都会有一张精美的图片,我们可以
1、保存下来搭建api用于图片展示
2、放在博客当博客背景
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 |
参数名 | 类型 | 是否必要 | 备注 |
---|---|---|---|
w | Int | 否 | 图片宽度,默认1920 |
h | Int | 否 | 图片高度,默认1080 |
uhd | Bool | 否 | 是否4k,默认False |
mkt | String | 否 | 地区,默认zh-CN |
获取随机壁纸
1 | https://api.bimg.cc/random?w=1920&h=1080&mkt=zh-CN |
参数名 | 类型 | 是否必要 | 备注 |
---|---|---|---|
w | Int | 否 | 图片宽度,默认1920 |
h | Int | 否 | 图片高度,默认1080 |
uhd | Bool | 否 | 是否4k,默认False |
mkt | String | 否 | 地区,默认zh-CN |
获取壁纸JSON数据
1 | https://api.bimg.cc/all?page=1&order=asc&limit=10&w=1920&h=1080&mkt=zh-CN |
参数名 | 类型 | 是否必要 | 备注 |
---|---|---|---|
page | Int | 否 | 页数,默认1 |
limit | Int | 否 | 每页数据量,默认10(1-20) |
w | Int | 否 | 图片宽度,默认1920 |
h | Int | 否 | 图片高度,默认1080 |
order | string | 否 | 排序,默认降序desc ,升序asc |
mkt | String | 否 | 地区,默认zh-CN |
1 | // 已知分辨率 |
1 | // 已知国家地区 |
获取壁纸数量
1 | https://api.bimg.cc/total?mkt=zh-CN |
参数名 | 类型 | 是否必要 | 备注 |
---|---|---|---|
mkt | String | 否 | 地区,默认zh-CN |
成果
部署
vercel部署
1、在 MongoDB 申请 MongoDB 帐号,具体可查看我的博客教程:如何申请一个永久免费的 Mongodb 数据库 - 详细版
2、在Vercel申请 Vercel帐号
3、创建数据库用户名和密码,在IPAccess List添加0.0.0.0
(代表允许所有 IP 地址的连接),在 Clusters 页面点击 CONNECT,选择第二个:Connect your application,并记录数据库连接字符串,请将连接字符串中的 user
修改为数据库用户,<password>
修改为数据库密码
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 | on: |
在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
时间定为每天08:00
,经测试,每个国家地区的壁纸都能更新到。
测试地址:https://github.com/flow2000/vercel-api/actions/runs/3474097895/jobs/5806877139
鸣谢
感谢hexo-circle-of-friends的自动化思路
感谢Bing-Wallpaper-Action的分地区思路以及仓库的初始化数据