2015-04-26 122 views
0

今天我创建了一个程序,可以从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。

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

回答

0

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

现在如果你为所有的桌面都做了这个。您将它们指向只有一个图像的文件夹。然后,当您获取电影图像时,而不是通过编程方式更改桌面,只需将该文件夹中的图像替换为电影图像即可。然后下一次桌面设置为自动更改,他们当然会选择您的电影图像。

我没有尝试这个,但它可能会工作,它可能足以满足您的需求。

祝你好运。

+0

感谢您的意见。我将文件删除并命名为电影标题后的一个原因是因为当图像被替换为相同的名称时,操作系统无法识别图像已经改变。即使我删除了图片,壁纸也保持不变。有些东西告诉我,系统在别处使用副本来用于桌面,但我可能是错的。 –

相关问题