2009-12-19 8 views
5

Recherche d'aide/tutoriels/exemple de code d'utilisation de python pour écouter distributed notifications à partir d'applications sur un mac. Je sais que le py-objc lib est le pont entre les classes python et mac/cacao, et la bibliothèque Foundation peut être utilisée pour ajouter des observateurs, mais en cherchant des exemples ou des tutoriels sur la façon de l'utiliser pour surveiller iTunes.Comment écouter les notifications d'iTunes sur un Mac (Utilisation du NSDistributedNotificationCenter)

+0

iTunes publie-t-il des notifications distribuées ces jours-ci? –

+0

Oui, il le fait .... sous com.apple.iTunes.player, en utilisant la surveillance des notifications, je peux les voir. – ismail

Répondre

11

Si quelqu'un vient par à cette question, je compris comment écouter, le code ci-dessous fonctionne, mais l'accès aux attributs ne semble pas fonctionner comme un accès aux attributs python standard

Mise à jour: vous n'avez pas accès aux attributs comme vous le feriez en python ie (.x), le code a été mis à jour ci-dessous, maintenant génère un dict appelé song_details

Up date3: mise à jour du code, maintenant sous-classe NSObject, suppression de l'ajout de l'addObserver à la classe. Gardera le code mis à jour sur github, pas plus de mises à jour ici.

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