2009-12-19 11 views
5

Auf der Suche nach Hilfe/Tutorials/Beispielcode der Verwendung von Python zu distributed notifications von Anwendungen auf einem Mac hören. Ich kenne die py-objc lib ist die Brücke zwischen Python und Mac/Kakao-Klassen, und die Foundation-Bibliothek kann verwendet werden, um Beobachter hinzuzufügen, aber auf der Suche nach Beispielen oder Tutorials, wie Sie dies verwenden, um iTunes zu überwachen.Wie hören Sie Benachrichtigungen von iTunes auf einem Mac (mit dem NSDistributedNotificationCenter)

+0

Veröffentlicht iTunes tatsächlich verteilt Benachrichtigungen in diesen Tagen? –

+0

Ja, es tut .... unter com.apple.iTunes.player, mit der Benachrichtigung watch kann ich sie sehen. – ismail

Antwort

11

Wenn jemand von dieser Frage kommt, ich herausgefunden, wie man zuhört, Der folgende Code funktioniert: Zugriff auf Attribute scheint jedoch nicht wie Standard-Python-Attributzugriff zu funktionieren.

Update: Sie greifen nicht auf Attribute wie in Python ie (.x), der Code wurde unten aktualisiert, es jetzt erzeugt ein dict namens song_details.

Up date3: Update auf den Code, jetzt NSObject subclassing, entfernt das Hinzufügen des addObserver aus der Klasse. Wird den Code auf github aktualisiert, keine Updates mehr hier.

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()