2010-06-04 19 views
2

J'ai récemment découvert l'awesomeness du iTunes SD pour Windows SDK. J'utilise Python avec win32com pour parler à ma bibliothèque iTunes. Inutile de dire que ma tête est en train d'exploser. Cette API bascule.Media Kind dans iTunes COM pour Windows SDK

J'ai un problème cependant, comment puis-je accéder à l'attribut Media Type de la piste? J'ai regardé le fichier d'aide fourni dans le SDK et je n'ai vu aucun signe. Si vous allez dans iTunes, vous pouvez modifier le type de média de la piste. De cette façon, si vous avez un livre audio qui apparaît dans votre bibliothèque musicale, vous pouvez définir Media Type sur Audiobook et il apparaîtra dans la section Livres dans iTunes. Assez chouette. La raison pour laquelle je pose la question, c'est parce que j'ai un tas de merdes de livres audio qui apparaissent dans ma LibraryPlaylist.

Voici mon code jusqu'à maintenant.

import win32com.client 

iTunes = win32com.client.gencache.EnsureDispatch('iTunes.Application') 
track = win32com.client.CastTo(iTunes.LibraryPlaylist.Tracks.Item(1), 'IITFileOrCDTrack') 

print track.Artist, '-', track.Name 
print 
print 'Is this track an audiobook?' 
print 'How the hell should I know?' 

Merci d'avance.

Répondre

0

L'une des raisons pour lesquelles vous ne pourrez peut-être pas le trouver est que la structure atomique des références de l'objet com peut être obsolète. La liste la plus populaire des atomes de la structure MP4 est ici: http://atomicparsley.sourceforge.net/mpeg-4files.html Je ne vois pas un atome de type média. Je suppose que vous pourriez essayer d'analyser la structure à travers atomicparsley mais à ma connaissance, il ne trouve que des atomes dont il a connaissance.

Réponse courte: L'objet COM peut ne pas connaître l'attribut MediaKind.

0

La seule référence que je peux trouver à cet attribut "Media Kind" est l'énumération ITUserPlaylistSpecialKind. Le seul endroit utilisé est une méthode getter IITUserPlaylist :: SpecialKind. Il semble donc que c'est un attribut de niveau playlist en lecture seule. Je suppose que pour le lire, vous devez obtenir la liste de lecture de la piste, puis obtenir l'attribut SpecialKind des playlists. Pour l'écrire, vous devez probablement déplacer la piste vers la playlist appropriée.

0

Eh bien, les médias Kind est dans l'interface IITTrack.Kind, mais qui est sans doute pas ce que vous voulez - la réponse sera l'un:

public enum ITTrackKind 
    { 
     ITTrackKindUnknown = 0, 
     ITTrackKindFile = 1, 
     ITTrackKindCD = 2, 
     ITTrackKindURL = 3, 
     ITTrackKindDevice = 4, 
     ITTrackKindSharedLibrary = 5, 
    } 

Probablement vous avez besoin de regarder IITTrack .Genre, qui donne la forme de chaîne de l'étiquette ID3 Genre, de sorte que vous pouvez trouver "Audiobook" ou Apple "Livres & Parlé". (Certains genres sont traités spécialement par iTunes/iPods). Astuce: le fichier d'aide compilé dans le SDK iTunes que j'ai téléchargé semblait être cassé - je devais le convertir en fichiers HTML et utiliser Firefox/grep pour trouver les informations dont j'avais besoin.

+0

Cela ne fonctionne pas. – Hogan

-1

Il est en fait assez facile, utilisez le IITFileOrCDTrack.Podcast:

yourTrack.Podcast 

S'il est un podcast, il retourne vrai, sinon elle retournera Faux.

Vous pouvez bien sûr régler par

yourTrack.Podcast(bool) 

heureux d'avoir pu aider.

+0

Cela ne fonctionne pas. – Hogan