获取必应每日壁纸(api)

目录

获取Api

个人网页引入


 

大家都知道必应官网每天会更新一张高质量的背景图,如下图(时间为2018年9月2日)

而且必应的每日的每日壁纸非常漂亮,质量非常高。这里就有很多小伙伴们想把这个图片下载下来。下载的方法非常多,比如打开开发者模式找到原图保存等等,我就不一一列举了,网上一搜一大堆。这里可以给大家推荐一个网站,https://bing.ioliu.cn/,作者将必应近期的壁纸都展示在了上面,大家可以下载。

到这里单纯想获取图片的办法已经介绍完了。不过我今天的主题是如何从api的层面来获取壁纸,以及如何将该壁纸在合法的情况下动态的引入自己的网站

首先,先给大家看一下我个人的网站(比较简单,没做设计,大神勿喷),我的网站每日同步获取必应的壁纸。接下来就教不会的小伙伴一步一步去实现。


获取Api

关于必应壁纸api的文章也特别多,也有很多小伙伴自己封装了接口提供给大家使用,我直接介绍官方的api

https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN

首先分析一下这个接口含义,直接看后面的请求参数:

参数名称值含义
format  (非必需)

返回数据格式,不存在返回xml格式

  • js (一般使用这个,返回json格式)
  • xml(返回xml格式)
idx  (非必需)

请求图片截止天数

  • 0 今天
  • -1 截止中明天 (预准备的)
  • 1 截止至昨天,类推(目前最多获取到7天前的图片)
n (必需)

1-8 返回请求数量,目前最多一次获取8张

mkt  (非必需)

地区

  • zh-CN
  • ...

以上面url为例,可以看到返回内容为:

此时就可以得到图片部分地址了,然后通过域名+部分地址就可以直接获取图片了,如下:

https://cn.bing.com/az/hprichbg/rb/VenetianRowing_ZH-CN6668445308_1920x1080.jpg



个人网页引入

通过上面的方式在浏览器是可以直接看到图片的,但是要在自己的网站里引入的话,还会有一些问题。

跨域

直接请求是肯定会遇上跨域问题的,这里不多介绍跨域了,感兴趣的同学可以看一下这里,常用的解决办法,比如:jsonp、cors在这里明显是不合适的,我推荐大家使用nginx 做一个正向代理,将请求通过nginx代理到真正的服务器地址。

请求配置

需要注意的是,在请求地址前加上一个nginx匹配规则。

let format = 'js'
let idx = '0'
let n = '1'
let mkt = 'zh-CN'
let = options ={
  //...
}

let imgUrl = '/proxy/' + 'HPImageArchive.aspx?' + `format=${format}&idx=${idx}&n=${n}&mkt=${mkt}`
//这里proxy就是Nginx匹配规则,可自定义

fetch(imgUrl,options).then(
  //...
)

nginx配置

在server中配置如下内容

        location /proxy/ {
            rewrite ^/proxy/(.*)$ /$1 break;  #对加了proxy前缀的请求加以区分,真正访问的时候移除这个前缀,这个前缀需要自定义
            proxy_pass https://cn.bing.com;  #将真正的请求代理到真实的服务器地址
        }

通过上面的所有配置,重启nginx,就可以愉快的获取图片url了!


这里,我也推荐一下一个封装比较完善的请求api github地址,还可以获取不同分辨率以及模糊程度的图片。

以上内容仅供学习使用

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值