轻量必应每日一图API,支持上传至又拍云调用,支持图片处理(高斯模糊、灰阶),支持回溯。
优雅的响应式前端界面,可静态部署
前后端分离,后端接口可单独部署
又拍云存储加速
丰富的接口功能
众所周知,必应搜索官网每天会更新一张高质量的背景图。许多同学想在接口中调用它们,但必应的服务器在国内不算特别稳定(>500ms)。Bing-upyun 可以把每天的必应图片上传至又拍云,提供支持图片处理、回溯的接口(又拍云直链,实测从请求到图片接收完成耗时300ms左右,视网络情况而不同),并可选部署优雅的前端页面。
目前有很多优秀的必应每日一图接口,可以将图片在服务器本地化存储并提供调用接口,但大都需要常驻后台运行。另外,目前几乎没有采用又拍云储存图片的同类接口。因此便有了下面的项目。
诗曰:“ 沉舟侧畔千帆过,病树前头万木春。”
请跟随必应的脚步,带您领略世界之美。
https://bing.mcloc.cn/
用到的库或者框架有:Bootstrap4、jQuery1.11.0、Valine、progressive-image。
响应式
图片懒加载
图片渐进加载(模糊到清晰)
无后台评论系统
| 参数名 | 是否必须 | 参数 | 返回结果 | 备注 | | :-------: | :----------: | :------------------------: | :-----------------------------: | :----------------------------------------------------------: | | type | 否 | json或其他 | json数据 | 参数除json外,其余都无效(输出图片) | | blur | 否 | 5/15/25 | 返回高斯模糊程度不同的图片 | 只支持5/15/25三个等级 | | gray | 否 | true/false | 灰阶图片/正常色彩图片 | - | | day | 否 | 数字n(大于等于0的正整数) | n天前的图片 | n的范围取决于程序运行天数 | | thumbnail | 否 | 1/25 | 16×9像素或以25%比例缩放的缩略图 | 只支持1/25两个等级,16×9像素的缩略图用来实现前端图片的渐进加载 | | random | (暂未开发) | - | - | 随机返回前n天内任意一天的图片 |
注意:
day和其余参数可以组合使用,除此之外的其他参数之间暂不支持组合使用。例如,不能返回灰阶的高斯模糊图片,可以返回n天前的高斯模糊图片。
{ "bing_id": "21", "bing_title": "日落时分中央海岸入口海滩上的救生员小屋,澳大利亚新南威尔士州 (© Yury Prokopenko/Getty Images)", "bing_imgurl": "https://upyuns.mcloc.cn/bing/15-Sep-2020/15-Sep-2020.jpg", "bing_imgurlcom_25": "https://upyuns.mcloc.cn/bing/15-Sep-2020/15-Sep-2020-compress_25.jpg", "bing_imgurluhd": "https://cn.bing.com/th?id=OHR.LifeguardEntrance_ZH-CN7394984988_UHD.jpg", "bing_imgname": "LifeguardEntrance_ZH-CN7394984988", "bing_hsh": "a8712ff7ed3690123f96c2f95830b9f6", "submission_date": "15-Sep-2020", "submission_fulldate": "15-Sep-2020 00:01:01", "bing_imgbase64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK\r\nCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQU\r\nFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAJABADAREA\r\nAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAgMHCP/EACUQAAEEAQMCBwAAAAAAAAAAAAECAwQF\r\nEQAGEgcxNDdhc3Sxs//EABcBAAMBAAAAAAAAAAAAAAAAAAMFBgT/xAAnEQABAwIEBQUAAAAAAAAA\r\nAAABAAIDESEEEnGREzI0grExYXKBof/aAAwDAQACEQMRAD8ALpfa2VFBdK26liOlAdczeMFsN8iA\r\noBSVcRkEA5HbQ8bNhwQDMAdKn8KosCcrXF0VR8qDYhJuJx3Nf2KLawiSYrLCVsR2JraXIzKSAQt5\r\nZwvuMEJHoDjS5mJcM2V7aXob1P0AKblbomwSPdx2kelqiw9yTfZZz2L5Ebz+cz9alJ+rj0Q4eil1\r\nCpEjwF57VZ+Wlw5m93lNhySdvhf/2Q==\r\n", "other": "0", "bing_did": "20200915" }
| 字段 | 值 | 备注 | | :-----------------: | :-----------------------: | :------------------------------: | | bingid | ID | | | bingtitle | 图片标题 | | | bingimgurl | 1920×1080 图片地址 | | | bingimgurlcom25 | 480×270 图片地址 | | | bingimgurluhd | UHD超高清 图片地址 | 注意:分辨率不固定、无又拍云加速 | | bingimgname | 图片文件原始名字 | 注意:与又拍云中的文件名不一致 | | binghsh | 哈希值 | | | submissiondate | 提交保存时间 | | | submissionfulldate | 详细提交保存时间 | | | bingimgbase64 | 16px×9px 缩略图base64编码 | 一般用于图片渐进加载 | | other | 保留字段 | | | bingdid | 唯一图片ID | 格式为保存日期 |
https://bing.mcloc.cn/api
此接口为小马奔腾免费提供,支持最新的特性(可能含有Beta版功能),请合理使用。
在开始之前,请确保您具备以下必要条件:
又拍云存储库
MySQL数据库
PHP运行环境
若要在服务器上同时部署前后端,您的目录结构看起来应该是下面这样:
(若只需要后端接口,则只部署
api下的文件即可)
├── api │ ├── php │ │ ├── bing // 图片缓存文件夹 │ │ ├── config.php // 配置文件 │ │ └── index.php // 后台图片处理程序 │ └── index.php // 图片调用接口 ├── css │ ├── detail.css // 详情页样式表 │ ├── index.css // 首页样式表 │ └── main.css // 主样式表 ├── html │ └── detail.html // 详情页 ├── js │ ├── detail.js // 详情页js │ ├── index.js // 首页js │ └── main.js // 主js ├── lib //第三方库 │ ├── layer │ ├── Valine.min.js │ ├── bootstrap.min.css.map │ ├── bootstrap.min.css │ ├── bootstrap.min.js.map │ ├── bootstrap.min.js │ ├── jquery-1.11.0.js │ ├── progressive-image.css │ └── progressive-image.js ├── static //静态资源 │ └── upyun_logo5.png └── index.html // 首页
在
api/php/config.php中修改:
//又拍云连接信息 $config['bucketName'] = '********'; //你的又拍云存储库 $config['operatorName'] = '********'; //你的存储库操作员 $config['operatorPwd'] = '********'; //你的存储库操作员密码 $config['domainName'] = '********'; //又拍云加速域名。注:结尾的 / 不能省略。如:'https://upyun.yourdom.com/'//数据库信息 $config['mysqlHost'] = '****'; //MySQL数据库主机名 $config['mysqlUsername'] = '****'; //MySQL数据库用户名 $config['mysqlPassword'] = '****'; //MySQL数据库密码 $config['mysqlDbname'] = '****'; //MySQL数据库名
部署至可访问目录即可。
注意:
/api/php/bing文件夹需要有写入权限。
本程序不会常驻后台,需要定时访问后台图片处理程序所在URL以触发程序执行(每天访问一次)。
定时任务访问URL:
网站根目录/api/php/index.php或
网站根目录/api/php
接口调用URL:
网站根目录/api/index.php或
网站根目录/api
为避免时间误差引起的问题,建议不要将定时任务设置在每天的 00:00:00 ,推荐将定时任务设置在每日 00:01:00 ,若如此做,则在完成以上步骤后,不需要额外设置。否则请参照以下规则:
api/php/config.php中的
$config['delay']为延时时间,如
$config['delay'] = 90;即调用80s前的图片。这也就意味着,您在每天零点的90s后,才能收到当天最新的图片。在每天的 00:00:00 至 00:01:30 之间,您调用此接口返回的仍然是前一天的图片。
注意:此延时时间需比定时任务中访问URL的时间大30s左右(和网络情况有关),否则会长时间返回前一天的图片(太大)或出现404错误(太小)。
Bing-upyun 的前端可以纯静态部署。
为了提升您的访问速度,建议为前端页面部署CDN加速。
CDN建议的缓存设置如下:
缓存7天:
/*.(htm,html,js,css,png,svg,ico,ttf,otf,woff,woff2,eot,sfnt)
不缓存:
/*.(php,json)
目录结构在 4.1.2 中已说明。
请在
detail.js中修改评论系统 Valine 的信息:
参考 Valine 官方文档
appId: '********' appKey: '********'
为了最快的响应速度,Bing-upyun 的前端页面为纯静态,请查找并替换以下文件中的域名:
index.html html/detail.html js/detail.js js/index.js js/main.js
替换方法:
https://bing.mcloc.cn/替换为您部署的域名。
js/main.js中的
https://upyuns.mcloc.cn/替换为您的又拍云存储加速域名。