首页 > 解决方案 > 更改壁纸的自动脚本中的错误 - Windows 10

问题描述

下面的脚本是我用来每 30 秒更换一次壁纸的脚本。当我找到我喜欢的背景时,我在终端中输入 ctrl + c 以退出脚本。我从 Unsplash.com API 中提取随机图像,将其保存在我的“tmp”文件夹中,然后使用命令访问该文件夹以替换当前图像作为我的背景。

问题是,当我运行这个程序时,它会创建两个文件,“wallpaper.jpg”然后是“wallpaper (1).jpg”。然后它在不变的“wallpaper.jpg”文件和新的“wallpaper (1).jpg”文件之间切换。所以原创,新的,原创的,新的......我希望脚本只制作一个名为“wallpaper.jpg”的.jpg文件并无缝更新背景,而无需每次在文件之间切换。我觉得问题出在 change_wallpaper 函数和我的 return 语句上,但我尝试了很多不同的方法,但无法弄清楚。

此外,当我停止脚本时,它会恢复为“wallpaper.jpg”文件。

感谢https://github.com/awesomeAB/wallpapers-script/blob/master/wallpapers.py共享此 Mac 脚本。我正在尝试在 Windows 上进行这项工作。

# import dependencies
import os
import requests
import wget
import ctypes
import time
from config import UNSPLASH_ACCESS_KEY


def get_wallpaper():
    # create API query and define parameters
    url = 'https://api.unsplash.com/photos/random?client_id=' + UNSPLASH_ACCESS_KEY
    params = {
        "query": "HD Wallpapers",
        "orientation": "Landscape"
    }
    # create request, difine json format, grab image url, and save to folder
    response = requests.get(url).json()
    image_url = response['urls']['full']

    image = wget.download(image_url, 'tmp/wallpaper.jpg')
    return image


def change_wallpaper():
    wallpaper = get_wallpaper()
    PATH = r'C:\Users...\tmp\wallpaper (1).jpg'
    ctypes.windll.user32.SystemParametersInfoW(20,0, PATH,3)
    # os.remove("tmp/wallpaper.jpg")
    return wallpaper

def main():

    try:
        while True:
            change_wallpaper()
            time.sleep(10)

    except KeyboardInterrupt:
        print("\nHope you like this one! Quitting.")
    except Exception as e:
        pass


    
if __name__ == "__main__":
    main()

标签: pythonautomationbackground

解决方案


推荐阅读