Вид мультимедиа в iTunes COM для Windows SDK - PullRequest
2 голосов
/ 04 июня 2010

Я недавно узнал об удивительности iTunes COM для Windows SDK. Я использую Python с win32com для общения с моей медиатекой iTunes. Излишне говорить, что моя голова находится в процессе взрыва. Это API рулит.

У меня есть одна проблема, как мне получить доступ к атрибуту Media Kind трека? Я просмотрел файл справки, предоставленный в SDK, и не увидел никаких признаков этого. Если вы зайдете в iTunes, вы можете изменить вид медиа трека. Таким образом, если у вас есть аудиокнига, которая отображается в вашей музыкальной библиотеке, вы можете установить Media Kind на Audiobook, и он появится в разделе «Книги» в iTunes. Довольно изящный.

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

Вот мой код.

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

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 26 февраля 2012

На самом деле это довольно просто, используйте IITFileOrCDTrack.Podcast:

yourTrack.Podcast

Если это подкаст, он вернет True, в противном случае он вернет False.

Вы можете, конечно, установить его через

yourTrack.Podcast(bool)

Рад, что смог помочь.

0 голосов
/ 14 июня 2010

Одна из причин, по которой вы, возможно, не сможете найти его, заключается в том, что структура атома, на которую ссылается объект com, может быть устаревшей. Самый популярный список атомов из структуры MP4 находится здесь: http://atomicparsley.sourceforge.net/mpeg-4files.html Я не вижу атом вида медиа. Я полагаю, вы могли бы попытаться проанализировать структуру с помощью atomicparsley, но, насколько мне известно, он находит только атомы, о которых он знает.

Краткий ответ: COM-объект может не знать об атрибуте MediaKind.

0 голосов
/ 15 июня 2010

Ну, Media Kind находится в интерфейсе IITTrack.Kind , но это, вероятно, не то, что вы хотите - ответ будет один из:

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

Вероятно, вам нужно взглянуть на IITTrack.Genre , который дает строковую форму тега ID3 Жанр, так что вы можете найти "Audiobook" или Apple "Books & Spoken". (Некоторые жанры рассматриваются специально iTunes / iPods).

Совет: скомпилированный файл справки в ITunes SDK, который я скачал, кажется, поврежден - мне пришлось преобразовать его обратно в файлы HTML и использовать Firefox / grep, чтобы найти нужную мне информацию.

0 голосов
/ 12 июня 2010

Единственная ссылка, которую я могу найти на этот атрибут "Media Kind", - это перечисление ITUserPlaylistSpecialKind. Единственное место, которое используется, - это метод получения IITUserPlaylist :: SpecialKind. Так что, похоже, это атрибут уровня воспроизведения, доступный только для чтения. Я предполагаю, что для того, чтобы прочитать его, вам нужно получить плейлист трека, а затем получить атрибут SpecialKind плейлистов. Чтобы записать его, вам, вероятно, придется переместить дорожку в соответствующий список воспроизведения.

...