0

今天我创建了一个程序,它从 Themoviedb.org 的 API 获取当前最流行的电影,随机选择一个,并将我的桌面图像设置为所选电影的高清背景。我设置了一个 cron 作业,让它每小时运行一次,而且效果很好(截图)。

我遇到的问题是只有当前处于活动状态的桌面(以及未来的桌面)被更改。其他已打开的桌面都没有更改(它们仍然具有以前的桌面图像)。如何同时更改活动和非活动桌面?

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。

我会很感激任何帮助!非常感谢。

4

1 回答 1

0

我不知道如何以编程方式做到这一点,但这是一个想法。您知道您可以通过指向图像文件夹来设置桌面图像,并让它从该文件夹中的随机图像设置桌面。您甚至可以设置更改桌面图像的频率。

现在,如果您对所有台式机都这样做了怎么办。您将它们指向一个只有一张图像的文件夹。然后,当您获得电影图像时,无需以编程方式更改桌面,只需将文件夹中的图像替换为电影图像即可。然后下次将桌面设置为自动更改时,他们当然会选择您的电影图像。

我没有尝试过,但它可能会起作用,并且可能足以满足您的需求。

祝你好运。

于 2015-04-27T21:30:02.503 回答