How do you listen to notifications from iTunes on a Mac (Using the NSDistributedNotificationCenter)

后端 未结 2 1914
长发绾君心
长发绾君心 2020-12-10 18:07

Looking for help/tutorials/sample code of using python to listen to distributed notifications from applications on a mac. I know the py-objc lib is the bridge between python

相关标签:
2条回答
  • 2020-12-10 18:52

    The source code for GrowlTunes might give you some clues here. You'd have to translate from Objective-C to PyObjC, but eh, whatever. :)

    GrowlTurnesController.m (Or grab the whole growl source tree and navigate to GrowlTunes so you can see it all in action.: here's a link to the directions on how to get the source

    0 讨论(0)
  • 2020-12-10 19:03

    If anyone comes by to this question, i figured out how to listen, the code below works. However accessing attributes do not seem to work like standard python attribute access.

    Update: you do not access attributes as you would in python i.e (.x), the code has been updated below, it now generates a dict called song_details.

    Update3: Update to the code, now subclassing NSObject, removed adding the addObserver from the class. Will keep the code updated on github, no more updates here.

    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()
    
    0 讨论(0)
提交回复
热议问题