使用Unsplash API 接口制作windows壁纸切换应用

2017年4月19日 0 条评论 428 次阅读 0 人点赞

使用Unsplash API 接口制作windows壁纸切换应用

        Unsplash是一个高质量图片的提供站点,他开放了相应的API,使得其他开发者可以使用他站点的图片等信息。

        了解到这些后,苦于平时在网上到处下载好看的桌面壁纸很麻烦,且其他的windows壁纸小工具又有很多广告和捆绑软件等,我萌生了自己写一个windows壁纸小工具的想法。


 

实现该功能需要以下几步:

  1. 了解Unsplash API

  2. 根据API实现代码下载图片

  3. 设置windows壁纸自动切换

了解Unsplash API

        Unsplash的API文档地址是:https://unsplash.com/documentation

        在这里可以看到API使用的详细步骤,API的使用是通过Http请求将参数带上去,由Unsplash返回对应的JSON参数,开发者再根据返回获得图片和图片信息。大概总结一下我需要用的步骤:

  • 注册开发者账号并注册应用

    这一步直接根据官网引导注册即可。

  • 了解Authorization机制

    上一步注册应用完成后,会得到一些该应用的标志信息,我们要使用的是ClientId。因为所有API的使用都需要开发者提供自己应用的ClientId,可以通过两种方式将这个参数带上去。如下:使用Unsplash API 接口制作windows壁纸切换应用

    使用Unsplash API 接口制作windows壁纸切换应用

    即通过包头的参数或带在URL里。

    有了ClientId我们就能使用PublicAction的API了。

  • 了解Get a random photo的使用

    我要做的是windows壁纸切换工具,那只需要随机获取高质量壁纸即可。所以只需要使用到Get a random photo这个API。

    那么只要在GET请求是Url设置为:

    GET /photos/random

    就能拿到一个图片信息的对应JSON数据,如下:使用Unsplash API 接口制作windows壁纸切换应用但是这样只能拿到一个图片的信息,效率太低,我们需要大量的数据,这时,关注到Get a random photo这个API还有其他可选参数,如下:

    使用Unsplash API 接口制作windows壁纸切换应用那只需要将count=30加到请求参数里就能拿到30张照片的JSON信息了,如此做,得到的JSON分别解析后分别下载即可。(这里还有个小插曲)

根据API实现代码下载图片

        实现代码就是按照上面API阅读的结果,我是用python实现的。具体代码如下:(代码格式因手机预览会发生变化)

# -*- coding:utf-8 -*-

import requests
import json
import re

se = requests.session()
RANDAPIURL = 'https://api.unsplash.com/photos/random?count=30&orientation=landscape'
YOUR_APPLICATION_ID = '6acf679c2c2e383123a9c1aa1cd719ca041f1484463cd3e109eb14b57ce9c953'
header = {
'Accept-Version':'v1',
'Authorization': 'Client-ID %s' % YOUR_APPLICATION_ID,
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36',
}

def downloadpic(urlinfo):
for (name,url) in urlinfo.items():
savepath = r'C:UsersAdministratorPictures%s' % name
content=se.get(url,headers=header).content
with open(savepath,'wb') as fopen:
fopen.write(content)

def getrandurls():
global header
resptext=se.get(RANDAPIURL,headers=header).text
urlinfo = {}
jsontext = json.loads(resptext)
for onejson in jsontext:
url = onejson['urls']['full']
fm = re.findall(r'(?<=fm=)w{3}(?=&)',url)[0]
if 'location' in onejson.keys():
picname = '%s.%s' %(onejson['location']['title'],fm.encode('utf-8'))
else:
picname = '%s.%s' %(onejson['id'],fm.encode('utf-8'))
urlinfo[picname] = url
return urlinfo

def main():
urlinfo = getrandurls()
downloadpic(urlinfo)

if __name__ == '__main__':
main()

设置windows壁纸自动切换

        windows提供了自动切换壁纸的功能,我们把上面下载的壁纸放在一起,然后如下设置即可。

        桌面右键->个性化->桌面背景->浏览(选择保存图片的文件夹)->全选->更改时间间隔->保存修改。

使用Unsplash API 接口制作windows壁纸切换应用

        这样以后,windows会自动每几分钟切换文件夹下的壁纸。

        至此,完成了桌面壁纸的自动下载切换。

小插曲

        因为Get a random photo这个API有一些参数如Count需要设置为30以取得更多的图片信息,但是当我设置了count:30在包头信息时,并没有生效。测试很久之后未果,特意发送邮件询问了unslpash的工作人员,多次交涉,他们没有帮我解决,后来还是我灵机一动想到他们可能使用另一种传参方式,把count带到url中传参。我也给他们提了这个易用性建议。下面是我们的邮件截图:

使用Unsplash API 接口制作windows壁纸切换应用

使用Unsplash API 接口制作windows壁纸切换应用

使用Unsplash API 接口制作windows壁纸切换应用

 

使用Unsplash API 接口制作windows壁纸切换应用

提醒

        因为Unsplash为了自己服务器压力考虑避免开发者滥用,限制了每小时每个应用只能发起50次请求,所以在使用时做好处理。


        非经过本人同意,严禁转载。

        如有问题,请关注公众号留言,我看到会及时回复的。

使用Unsplash API 接口制作windows壁纸切换应用

 

admin

这个人太懒什么东西都没留下

文章评论(0)