51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 524|回复: 0
打印 上一主题 下一主题

[python] Python小技能---下载壁纸并自动更换桌面

[复制链接]
  • TA的每日心情
    无聊
    12 小时前
  • 签到天数: 939 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2023-2-8 11:39:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    壁纸 API
      我们这里使用一个开源在 GitHub 上的必应壁纸 API 作为壁纸的来源
      https://github.com/zenghongtu/bing-wallpaper

      从 readme 当中我们可以知道,在 web 应用中我只需要使用如下引用即可
    1.   <img src="https://bingw.jasonzeng.dev/?w=800"/>
    复制代码


    实在是太方便了
      接口使用
      下面我们来看下该 API 的具体调用规则
      1、传入 resolution 参数可以指定壁纸图像的分辨率。默认为1920x1080,可选值如下:
    1.  UHD
    2.   1920x1200
    3.   1920x1080
    4.   1366x768
    5.   1280x768
    6.   1024x768
    7.   800x600
    8.   800x480
    9.   768x1280
    10.   720x1280
    11.   640x480
    12.   480x800
    13.   400x240
    14.   320x240
    15.   240x320
    复制代码


    UHD 就是高清,图片比较大。
      2、传入 index 可以获取某一天的图片,0 表示今天,1 表示昨天,以此类推,index=random 表示随机一天。
      3、传入 date 可以获取从某一天到今天的图片,比如 data=20210401。
      4、传入 w 和 h 可以指定图片的宽度和高度。
      5、传入 qlt 可以指定图片的质量,取值范围是 0 到 100。
      举个例子
      我们直接在浏览器输入如下地址
    1.   http://bingw.jasonzeng.dev?resolutinotallow=UHD&index=random&w=1000&format=json
    复制代码


    Output:
    1. {
    2.    "startdate": "20220105",
    3.    "copyright": "Plate-billed mountain toucan in Bellavista Cloud Forest Reserve, Ecuador (? Tui De Roy/Minden Pictures)",
    4.    "urlbase": "/th?id=OHR.MountainToucan_EN-US7120632569",
    5.    "title": "A plate-billed mountain toucan",
    6.    "url": "https://www.bing.com/th?id=OHR.MountainToucan_EN-US7120632569_UHD.jpg&w=1000"
    7.   }
    复制代码


    可以说是相当方便了。
      也可以直接在 css 当中使用。
    1. background-image: url(https://bingw.jasonzeng.dev/?index=random);
    2.   height: 100%;
    3.   background-position: center;
    4.   background-repeat: no-repeat;
    5.   background-size: cover;
    复制代码


    Python 调用
      下面我们看一下如何通过 Python 进行调用,也很简单
    1.  import requests
    2.   def get_wallpaper():
    3.       for i in range(30):
    4.           url = "https://bingw.jasonzeng.dev?resolutinotallow=UHD&index=%s" % str(i)
    5.           print(url)
    6.           res = requests.get(url)
    7.           with open("wallpaper/" + "%s.jpg" % str(i),"wb") as w:
    8.               w.write(res.content)
    9.   if __name__ == "__main__":
    10.       get_wallpaper()
    复制代码


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

      更换桌面
      壁纸有了,下面我们就来进行自动切换桌面壁纸,这里使用win32con和win32gui操作桌面壁纸
    1. def windows_img(paper_path):
    2.       k = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control panel\\Desktop", 0, win32con.KEY_SET_VALUE) # 在注册表中写入属性值
    3.       win32api.RegSetValueEx(k, "wapaperStyle", 0, win32con.REG_SZ,"2")  # 0 代表桌面居中 2 代表拉伸桌面
    4.       win32api.RegSetValueEx(k, "Tilewallpaper", 0, win32con.REG_SZ,"0")
    5.       win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, paper_path, win32con.SPIF_SENDWININICHANGE) # 刷新桌面
    复制代码


    然后就是从已经下载的壁纸当中选择图片
    1. def change_wallpaper():
    2.       pic_list = os.listdir("wallpaper")  # 得到文件路径下的图片,列表类型
    3.       i=0
    4.       print(pic_list)
    5.       while True:
    6.           pic = "wallpaper"+'\{}'.format(pic_list[i])
    7.           abspath_pic = os.path.abspath(pic)
    8.           windows_img(abspath_pic)
    9.           print(abspath_pic)
    10.           time.sleep(1000)  # 设置壁纸更换间隔
    11.           i += 1
    12.           if i==len(pic_list):  # 如果是最后一张图片,则重新到第一张
    13.               i=0
    14.   if __name__ == '__main__':
    15.       change_wallpaper()
    复制代码


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






    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-28 21:22 , Processed in 0.064518 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表