5

寻找使用 python 收听来自 Mac 上的应用程序的分布式通知的帮助/教程/示例代码。我知道py-objc库是 python 和 mac/cocoa 类之间的桥梁,Foundation 库可用于添加观察者,但正在寻找有关如何使用它来监控 iTunes 的示例或教程。

4

2 回答 2

11

如果有人提出这个问题,我想出了如何听,下面的代码有效。然而,访问属性似乎不像标准的 python 属性访问那样工作。

更新:您不像在 python 中那样访问属性,即 (.x),代码已在下面更新,它现在生成一个名为 song_details 的字典。

Update3:更新代码,现在继承 NSObject,从类中删除添加 addObserver。将在github上更新代码,这里不再更新。

import Foundation
from AppKit import *
from PyObjCTools import AppHelper

class GetSongs(NSObject):
    def getMySongs_(self, song):
        song_details = {}
        ui = song.userInfo()
        for x in ui:
            song_details[x] = ui.objectForKey_(x)
        print song_details

nc = Foundation.NSDistributedNotificationCenter.defaultCenter()
GetSongs = GetSongs.new()
nc.addObserver_selector_name_object_(GetSongs, 'getMySongs:', 'com.apple.iTunes.playerInfo',None)

NSLog("Listening for new tunes....")
AppHelper.runConsoleEventLoop()
于 2009-12-20T19:16:47.777 回答
4

GrowlTunes 的源代码可能会在这里为您提供一些线索。您必须从 Objective-C 转换为 PyObjC,但是,无论如何。:)

GrowlTurnesController.m (或者抓取整个咆哮源代码树并导航到 GrowlTunes,这样您就可以看到它的全部运行情况。:这里是有关如何获取源代码的说明的链接

于 2009-12-20T15:07:27.317 回答