Cercare aiuto/tutorial/codice di esempio sull'uso di python per ascoltare distributed notifications dalle applicazioni su un Mac. So che la libreria py-objc è il bridge tra le classi python e mac/cocoa e la libreria Foundation può essere utilizzata per aggiungere osservatori, ma cercando esempi o tutorial su come utilizzarla per monitorare iTunes.Come ascoltare le notifiche da iTunes su un Mac (utilizzando NSDistributedNotificationCenter)
risposta
Se qualcuno viene da a questa domanda, ho capito come ascoltare, il codice seguente funziona, tuttavia gli attributi di accesso non sembrano funzionare come l'accesso standard agli attributi python
Aggiornamento: non si accede agli attributi come si farebbe in python ie (.x), il codice è stato aggiornato di seguito, adesso genera un dict chiamato song_details
Torna su date3: aggiornamento al codice, ora sottoclasse NSObject, rimosso aggiungendo addObserver dalla classe. Manterrà il codice aggiornato su github, non ci sono più aggiornamenti qui.
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()
Il codice sorgente per GrowlTunes potrebbe darvi alcuni indizi qui. Dovresti tradurre da Objective-C a PyObjC, ma eh, qualunque cosa. :)
GrowlTurnesController.m (O afferrare l'intero albero dei sorgenti growl e passare alla GrowlTunes in modo da poter vedere tutto in azione .: here's a link to the directions on how to get the source
Grazie per l'aiuto, siamo riusciti a capirlo usando il sito web pyobjc e il sito web di apple. – ismail
iTunes pubblica effettivamente le notifiche distribuite in questi giorni? –
Sì, lo fa .... in com.apple.iTunes.player, utilizzando l'orologio di notifica posso vederli. – ismail