Как вы слушаете уведомления из iTunes на Mac (с помощью NSDistributedNotificationCenter) - PullRequest
5 голосов
/ 19 декабря 2009

Требуется помощь / учебные пособия / пример кода использования Python для прослушивания распределенных уведомлений из приложений на Mac. Я знаю, что py-objc lib - это мост между классами python и mac / cocoa, и библиотека Foundation может использоваться для добавления наблюдателей, но я ищу примеры или учебные пособия о том, как использовать это для мониторинга iTunes.

Ответы [ 2 ]

11 голосов
/ 20 декабря 2009

Если кто-нибудь зайдет на этот вопрос, я разобрался, как слушать, код ниже работает. Однако доступ к атрибутам, похоже, не работает как стандартный доступ к атрибутам 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()
4 голосов
/ 20 декабря 2009

Исходный код GrowlTunes может дать вам некоторые подсказки здесь. Вам нужно будет перевести с Objective-C на PyObjC, но что угодно. :)

GrowlTurnesController.m (Или возьмите все исходное дерево рычания и перейдите к GrowlTunes, чтобы вы могли увидеть все это в действии. вот ссылка на инструкции о том, как получить источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...