Поиск справки/учебных руководств/примера кода использования Python для слушания распределенных уведомлений из приложений на Mac. Я знаю, что py-objc lib является мостом между Python и классами Mac/какао, и библиотекой Foundation можно пользоваться для добавления наблюдателей, но поиск примеров или учебные руководства о том, как использовать это для контроля iTunes.
Если кто-нибудь ответит на этот вопрос, я понял, как слушать, приведенный ниже код работает. Однако доступ к атрибутам, похоже, не работает как стандартный доступ к атрибутам python.
Обновление: у вас нет доступа к атрибутам, как в python, т.е. (.x), код был обновлен ниже, теперь он генерирует dict под названием 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()
Исходный код для GrowlTunes может дать вам некоторые подсказки здесь. Вы должны будете перевести с Objective-C на PyObjC, но неважно. :)
GrowlTurnesController.m. (Или возьмите все дерево источника гроула и перейдите к GrowlTunes, чтобы увидеть все это в действии..: вот ссылка на указания, как получить исходник