今天我创建了一个程序,可以从Themoviedb.org的API获取当前最流行的电影,随机选择一个,并将我的桌面图像设置为所选电影的高清背景。我设置了一个cron作业,让它每小时运行一次,并且它运行得非常漂亮(screenshots)。Python中的AppScript(Apple Script)库。获取所有桌面,包括有效和无效
我遇到的问题是只有当前活动的桌面(以及未来桌面)发生更改。没有其他已经打开的桌面被更改(他们仍然有以前的桌面图像)。 我如何让活动桌面和非活动桌面都更改?
from tmdb3 import set_key, set_cache, Movie
from appscript import *
import random, time, urllib, os
set_key('API_KEY_REMOVED_FOR_POST')
set_cache(filename='movies.cache')
def setDesktop(title, movieUrl):
# Save backdrop image
test = urllib.urlretrieve(movieUrl, "backdrops/" + title + ".jpg")
# Get Desktops
se = app('System Events')
desktops = se.desktops.display_name.get()
for d in desktops:
desk = se.desktops[its.display_name == d]
desk.picture.set(mactypes.File("backdrops/" + title + ".jpg"))
def removeBackdrops():
fileList = os.listdir('backdrops')
for file in fileList:
os.remove('backdrops/' + file)
def main():
# Delete backdrop
removeBackdrops()
# Get most popular movies
popularMovies = Movie.mostpopular()
# Limit results to 45 items.
limit = 45
# Init movie list
movieList = []
# Append movies to list
for x in range(0, limit):
movieList.append(popularMovies[x])
movie = random.choice(movieList)
# Set desktop
setDesktop(movie.title, movie.backdrop.geturl())
if __name__ == "__main__":
main()
第16行和第18行似乎只能得到物理显示而不是不同的桌面。
使用OSX Yosemite和Python 2.7.6。
我很感激任何帮助!非常感谢你。
感谢您的意见。我将文件删除并命名为电影标题后的一个原因是因为当图像被替换为相同的名称时,操作系统无法识别图像已经改变。即使我删除了图片,壁纸也保持不变。有些东西告诉我,系统在别处使用副本来用于桌面,但我可能是错的。 –