2009-11-16 5 views
3

Есть ли хорошие решения для захвата событий из iTunes?iTunes Plugin Programming: Intercept Events

Я хотел бы создать плагин, который находится внутри iTunes, и отвечает на изменения рейтинга для определенных песен. Для Windows у них есть SDK, который я еще не изучил, но я тоже хотел бы найти что-то для Mac.

Любые предложения?

ответ

2

Насколько я знаю, Apple предоставляет бесплатную (как в нулевой стоимости) SDK для iTunes Визуальные плагины для OS X и Windows. Если вы не можете получить то, что вам нужно, вы можете может всегда использовать интерфейс сценариев iTunes Apple Events для мониторинга через опрос из другого приложения OS X с использованием интерфейса, совместимого с OSA, такого как AppleScript или appscript с Python, Ruby или Objective -С. Возможно, это не то, что вам хотелось бы, но оно документировано и поддерживается.

Например, PY-appscript, вот как получить доступ к текущей дорожки и тех, кто в последнее время играл SmartList:

>>> from appscript import * 
>>> it = app('iTunes') 
>>> it.current_track.rating() # 40 == 2 stars 
40 
>>> len(it.playlists['Recently Played'].tracks()) 
80 
>>> it.playlists['Recently Played'].tracks[1].rating() 
40 
>>> it.playlists['Recently Played'].tracks[1].rating.set(to=100) 
>>> it.playlists['Recently Played'].tracks[1].rating() # 100 = 5 stars 
100 

Это также можно фильтровать по различным полям метаданных (открыть iTunes.app определение сценариев в редакторе AppleScript Script для просмотра):

>>> import datetime 
>>> an_hour_ago = datetime.datetime.now() - datetime.timedelta(hours=1) 
>>> it.playlists['Library'].tracks[its.modification_date >= an_hour_ago]() 
[app(u'/Applications/iTunes.app').sources.ID(45).library_playlists.ID(49347).file_tracks.ID(72017)] 

Но обратите внимание, что изменения в рейтингах, кажется, не влияют на дату изменения.

0

Mac iTunes выделяет распределенные уведомления о изменениях дорожек и нескольких других значимых событиях. Однако я сомневаюсь, что он отправляет уведомления о незначительных изменениях для отслеживания информации. Как говорит Нед, поддержка плагинов ITunes' ограничен визуализаторов, так что ваши другие варианты будут:

  1. периодически опрос из внешнего процесса, несмотря на то, что это будет стоить, как вы и ITunes, если список воспроизведения пользователя большой

  2. возможно посмотреть в использовании PREFAB UI действия, чтобы переть на ITunes' виджетов UI и вызвать AppleScripts

  3. посмотреть, если вы можете прикрепить уведомление FSEvent к ITunes Music Library.xml файл, который хранит в ITunes музыкальной библиотеки пользователя папка. Предполагая, что iTunes обновит этот файл сразу после изменения настроек, вы, вероятно, могли бы выяснить, что изменилось с последнего раза.

Ни один из них не являются идеальными, но вроде расширяемости плагина на основе вы говорите действительно довольно редко среди Mac-приложений, так что вы, вероятно, придется клудж это так или иначе, или переосмыслить ваши потребности.