5

Python を使用して Mac 上のアプリケーションから配信された通知をリッスンするためのヘルプ/チュートリアル/サンプル コードを探しています。py-objc lib が python と mac/cocoa クラスの間のブリッジであり、Foundation ライブラリを使用してオブザーバーを追加できることは知っていますが、これを使用して iTunes を監視する方法の例またはチュートリアルを探しています。

4

2 に答える 2

11

誰かがこの質問に来たら、聞く方法を見つけました。以下のコードが機能します。ただし、属性へのアクセスは、標準の python 属性アクセスのようには機能しないようです。

更新: Python の場合 (.x) のように属性にアクセスしません。コードは以下で更新され、song_details という dict が生成されるようになりました。

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()
于 2009-12-20T19:16:47.777 に答える
4

GrowlTunesのソースコードは、ここでいくつかの手がかりを与えるかもしれません。Objective-CからPyObjCに変換する必要がありますが、ええと、何でも。:)

GrowlTurnesController.m (または、Growlソースツリー全体を取得してGrowlTunesに移動すると、すべての動作を確認できます。:ソースを取得する方法の説明へのリンクは次のとおりです。

于 2009-12-20T15:07:27.317 に答える