用Python下载壁纸并自动更换桌面

开发 前端
今天我们继续用Python写一个小工具,一方面实现壁纸自由,另一方面实现桌面更换自由!


壁纸 API

我们这里使用一个开源在 GitHub 上的必应壁纸 API 作为壁纸的来源

​https://github.com/zenghongtu/bing-wallpaper

图片

从 readme 当中我们可以知道,在 web 应用中我只需要使用如下引用即可

<img src="https://bingw.jasonzeng.dev/?w=800"/>

实在是太方便了

接口使用

下面我们来看下该 API 的具体调用规则

1、传入 resolution 参数可以指定壁纸图像的分辨率。默认为1920x1080,可选值如下:

UHD
1920x1200
1920x1080
1366x768
1280x768
1024x768
800x600
800x480
768x1280
720x1280
640x480
480x800
400x240
320x240
240x320

UHD 就是高清,图片比较大。

2、传入 index 可以获取某一天的图片,0 表示今天,1 表示昨天,以此类推,index=random 表示随机一天。

3、传入 date 可以获取从某一天到今天的图片,比如 data=20210401。

4、传入 w 和 h 可以指定图片的宽度和高度。

5、传入 qlt 可以指定图片的质量,取值范围是 0 到 100。

举个例子

我们直接在浏览器输入如下地址

http://bingw.jasonzeng.dev?resolutinotallow=UHD&index=random&w=1000&format=json

Output:

{
"startdate": "20220105",
"copyright": "Plate-billed mountain toucan in Bellavista Cloud Forest Reserve, Ecuador (© Tui De Roy/Minden Pictures)",
"urlbase": "/th?id=OHR.MountainToucan_EN-US7120632569",
"title": "A plate-billed mountain toucan",
"url": "https://www.bing.com/th?id=OHR.MountainToucan_EN-US7120632569_UHD.jpg&w=1000"
}

可以说是相当方便了

也可以直接在 css 当中使用

background-image: url(https://bingw.jasonzeng.dev/?index=random);
height: 100%;
background-position: center;
background-repeat: no-repeat;
background-size: cover;

Python 调用

下面我们看一下如何通过 Python 进行调用,也很简单

import requests


def get_wallpaper():
for i in range(30):
url = "https://bingw.jasonzeng.dev?resolutinotallow=UHD&index=%s" % str(i)
print(url)
res = requests.get(url)
with open("wallpaper/" + "%s.jpg" % str(i),"wb") as w:
w.write(res.content)


if __name__ == "__main__":
get_wallpaper()

上面代码就是获取前30张壁纸,我们可以修改range的参数,来获取不同数量的壁纸

抓取效果如下:

图片

更换桌面

壁纸有了,下面我们就来进行自动切换桌面壁纸,这里使用win32con和win32gui操作桌面壁纸

def windows_img(paper_path):
k = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control panel\\Desktop", 0, win32con.KEY_SET_VALUE) # 在注册表中写入属性值
win32api.RegSetValueEx(k, "wapaperStyle", 0, win32con.REG_SZ,"2") # 0 代表桌面居中 2 代表拉伸桌面
win32api.RegSetValueEx(k, "Tilewallpaper", 0, win32con.REG_SZ,"0")
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, paper_path, win32con.SPIF_SENDWININICHANGE) # 刷新桌面

然后就是从已经下载的壁纸当中选择图片

def change_wallpaper():
pic_list = os.listdir("wallpaper") # 得到文件路径下的图片,列表类型
i=0
print(pic_list)
while True:
pic = "wallpaper"+'\{}'.format(pic_list[i])
abspath_pic = os.path.abspath(pic)
windows_img(abspath_pic)
print(abspath_pic)
time.sleep(1000) # 设置壁纸更换间隔
i += 1
if i==len(pic_list): # 如果是最后一张图片,则重新到第一张
i=0

if __name__ == '__main__':
change_wallpaper()

这样一个简单的自动切换桌面壁纸的工具就完成了,快来尝试一下吧!

责任编辑:武晓燕 来源: 萝卜大杂烩
相关推荐

2023-11-07 09:39:10

Python壁纸桌面

2010-01-20 09:15:57

Windows 7自动更换壁纸

2018-03-01 16:45:52

Linux桌面墙纸墙纸更换器

2010-01-21 08:50:27

2010-05-07 10:52:14

Windows7

2009-12-30 09:20:12

Windows 7更换壁纸

2010-02-07 14:09:57

Ubuntu open

2022-04-18 07:57:43

Python花卉命令

2022-05-25 08:21:15

2016-10-25 12:20:32

Windows 10桌面禁用

2021-11-11 05:44:29

Windows 11操作系统微软

2021-04-16 08:02:05

Python下载音乐Python基础

2009-12-19 09:25:21

Windows 7壁纸自动还原

2021-08-20 08:50:05

Linux桌面壁纸

2015-09-10 09:31:45

壁纸桌面Windows 10

2021-11-14 07:35:21

Windows 11操作系统微软

2015-02-27 15:46:09

Android源码桌面APP

2015-12-29 13:14:08

Windows 10锁屏壁纸

2018-03-19 15:22:43

Android图标包图标

2022-03-21 10:09:08

PythonExcel邮件
点赞
收藏

51CTO技术栈公众号