/ / Programmation de plugins iTunes: événements d'interception - macos, plugins, itunes

Programmation de plugins iTunes: événements d'interception - macos, plugins, itunes

Existe-t-il de bonnes solutions pour capturer des événements depuis iTunes?

Je voudrais construire un plugin à l’intérieur deiTunes et réagit aux changements de classement pour certaines chansons. Pour Windows, ils ont un SDK que je n’ai pas encore exploré, mais je voudrais aussi trouver quelque chose pour Mac.

Aucune suggestion?

Réponses:

2 pour la réponse № 1

Autant que je sache, Apple fournit gratuitement (comme à coût nul) SDK pour iTunes Visual Plug-Ins pour OS X et Windows. Si vous ne pouvez pas obtenir ce dont vous avez besoin, vous pourrait utilisez toujours l'interface de script iTunes Events Apple pour surveiller via une interrogation à partir d'une autre application OS X à l'aide d'une interface compatible OSA telle que AppleScript script d'application avec Python, Ruby ou Objective-C. Ce n'est peut-être pas ce que vous voulez, mais cela est documenté et pris en charge.

Par exemple, avec py-appscript, voici comment accéder à la piste en cours et à celles de la smartlist récemment lue:

>>> 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

Il est également possible de filtrer sur différents champs de métadonnées (ouvrez la définition de script iTunes.app dans l’éditeur de script AppleScript pour naviguer):

>>> 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)]

Notez cependant que les modifications apportées aux notes ne semblent pas affecter la date de modification.


0 pour la réponse № 2

Mac iTunes émet des notifications distribuées sursuivre les changements et quelques autres événements d’intérêt significatif. Je doute qu'il envoie des notifications de changements mineurs pour suivre les informations, cependant. Comme le dit Ned, "le support du plug-in iTunes est limité aux visualiseurs, vos autres options sont donc les suivantes:

  1. interrogation périodique à partir d'un processus externe, même si cela vous coûtera à la fois à iTunes et à iTunes si la liste de lecture de l'utilisateur est volumineuse

  2. peut-être envisager d’utiliser PreFab UI Actions pour se glisser sur les widgets d’UI "iTunes" et déclencher des AppleScripts

  3. voyez si vous pouvez joindre une notification FSEvent àle fichier iTunes Music Library.xml qu'iTunes conserve dans le dossier de la bibliothèque musicale de l'utilisateur. En supposant qu'iTunes mette immédiatement à jour ce fichier à la suite de modifications des paramètres, vous pourrez probablement déterminer ce qui a changé depuis la dernière fois.

Aucun de ceux qui sont idéaux, mais le genre deL’extensibilité basée sur les plugins dont vous parlez est très rare parmi les applications Mac, vous devrez donc probablement en tenir compte d’une façon ou d’une autre, ou alors repenser vos besoins.