python - 更改壁纸的自动脚本中的错误 - 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()
解决方案
推荐阅读
- python - 如何在 Django ORM 查询中实现多个排序级别
- c++ - 关于 CMFCMenuBar 菜单消息响应?
- java - 为什么我的主要活动显示的比我的启动屏幕先显示
- javascript - 如何监听cesium地形的加载事件?
- authentication - 在代码优先的 graphql 模式上实现身份验证的最佳方法是什么?
- typo3 - 从邮件正文中的多选复选框中删除空格
- sql - 如何在 sql 查询中实现多个 if-and 函数?
- excel - 通过脚本或其他方式将“等号分隔符”文本文件转换为excel格式
- sql - 如何使用 SQL 查询创建表
- mysql - Arch Linux MySQL HTTP 插件不见了?