一 、前言
最近在windows商店看到一个很好玩的应用,他能每天自动爬取bing搜索的图片设置为你的桌面壁纸,每天都能自动下载bing图片设置为桌面壁纸,可惜只有付费才能自动更换壁纸。下面让我们一起来用python实现这一功能吧~
二、思路
整个程序过程非常简单,首先获取图片链接,然后使用 urllib.request 库把图片保存到电脑里,再使用Cpython接口调用Windows API改变壁纸。
三、代码实现
import ctypes
import urllib.request
import json
import getpass
import time
def get_bing_photo():
url = 'http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1'
res = urllib.request.urlopen(url)
json_txt = res.read()
txt = json.loads(json_txt)
url = 'https://www.bing.com/' + txt['images'][0]['url']
return url
def set_photo(url,num):
photo = urllib.request.urlopen(url)
d = photo.read()
dizhi = "C:\\Users\\"+str(getpass.getuser())+"\\Pictures\\"+str(num)+".jpg"
print(dizhi)
f = open(dizhi, "wb")
f.write(d)
f.close()
filepath = dizhi
ctypes.windll.user32.SystemParametersInfoW(20, 0, filepath, 0)
if __name__ == "__main__":
while True:
#使用unsplash的随机高清图
url = 'https://source.unsplash.com/random/4096x2160'
#使用bing接口
#url = get_bing_photo()
#下载的图片保存地址
f = open("C:\\Users\\"+str(getpass.getuser())+"\\Pictures\\tmp",'a+')
f.seek(0)
num = f.read()
if num == '':
num = '0'
f.seek(0)
f.truncate()
num = int(num) + 1
f.write(str(num))
f.close()
set_photo(url,num)
#设置更改壁纸的时间,每隔100秒换一张
time.sleep(100)
四、总结
这个小项目非常简单,但是却非常实用。Unsplash 的高清图真的超级超级好看,快自己动手试一下吧。
ps:如果你不想自己动手敲代码,可以下载我已经打包好的exe文件。关注我的个人公众号(木羽的树:muyudeshu),回复 "自动换壁纸" 可以获取下载链接哦~