0

iTunes の現在のトラックを検出して曲にタグを付け、bpm を計算するアプリケーションを 1 か月間作成しようとしています (テーピング ボタンを使用)。

ユーザーがタグのフィールドの 1 つを変更すると、アプリケーションでトラックがロックされます。つまり、iTunes の currentTrack が変更された場合、アプリケーションは前のトラックにとどまります。

私の問題: 前のトラックの永続的な ID を取得しました。この永続 ID に対応するトラックを取得するための AppleScript を作成しました。しかし、アプリケーションのココア部分でこのトラックを取得する方法が見つかりません!!!!

ここにスクリプト:

on open param
    tell application "iTunes"
        set trackItems to (every track of playlist "Library" whose persistent ID is param)
        repeat with aTrack in trackItems
            return aTrack
        end repeat
        return null
    end tell
end open

ココア側では、

NSAppleEventDescriptor *desc = [findTrackWithPersistentIDScript runWithParameters: [NSArray arrayWithObjects: lockPersistentID ,nil]];

NSAppleEventDescriptor で何ができますか? iTunesTrack または iTunesFileTrack が必要です。表示ダイアログで、トラックが適切に検出されていることを確認します

読んでくれてありがとう!

PS : デバッグするとき、[ desc data ] を実行すると、NSContreteData があり、iTunesItem の下にあります。しかし、この iTunesItem を取得する方法がわかりません (キャストを試しました...)、なんとか取得できました。

4

1 に答える 1

0

AppleScript と obj-c の間で文字列を相互に変換するのは簡単です。したがって、私の提案は、文字列のみを前後に渡すことです。たとえば、cocoa の「トラック」では実際には何もできないので、実際には必要ないのでそれを返さないでください。代わりにトラック名を返します。または、永続 ID をテキストとして返します。または、見つかったことを意味する「true」または見つからなかったことを意味する「false」を返します。

次に、cocoa で Applescript の結果の NSString を取得するには、[result stringValue] を使用します。

于 2010-08-09T09:26:25.977 に答える