媒体种类在iTunes COM for Windows SDK

时间:2010-06-04 19:49:46

标签: python itunes pywin32 itunes-sdk

我最近发现了适用于Windows SDK的iTunes COM的精彩之处。我正在使用Python和win32com来与我的iTunes库交谈。不用说,我的头脑正在爆炸。这个API摇滚。

我有一个问题,如何访问曲目的Media Kind属性?我查看了SDK中提供的帮助文件,但没有看到任何迹象。如果您进入iTunes,则可以修改曲目的媒体类型。这样,如果您的音乐库中出现了有声读物,您可以将Media Kind设置为Audiobook,它将显示在iTunes的Books部分中。非常漂亮。

我问的原因是因为我在我的LibraryPlaylist中出现了一整套有声读物。

到目前为止,这是我的代码。

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 :(得分:0)

我可以找到“Media Kind”属性的唯一参考是ITUserPlaylistSpecialKind枚举。唯一使用的地方是getter方法IITUserPlaylist :: SpecialKind。所以它似乎是一个只读的播放列表级属性。我猜想,为了阅读它,您需要获取轨道的播放列表,然后获取播放列表的SpecialKind属性。为了编写它,您可能必须将轨道移动到适当的播放列表。

答案 1 :(得分:0)

您可能无法找到它的一个原因是com对象引用的原子结构可能已过时。来自MP4结构的最流行的原子列表在这里:http://atomicparsley.sourceforge.net/mpeg-4files.html我没有看到媒体类原子。我想你可以尝试通过atomicparsley来解析结构,但据我所知,它只能找到它所知道的原子。

简答:COM对象可能不知道MediaKind属性。

答案 2 :(得分:0)

嗯,媒体种类在界面 IITTrack.Kind ,但这可能不是你想要的 - 答案将是以下之一:

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

您可能需要查看 IITTrack.Genre ,它会提供ID3标记的字符串形式 类型,所以你可以找到“有声读物”或Apple的“书籍与口语”。 (某些类型由iTunes / iPod专门处理)。

提示:我下载的ITunes SDK中的已编译帮助文件似乎已损坏 - 我必须将其转换回HTML文件并使用Firefox / grep查找我需要的信息。

答案 3 :(得分:-1)

实际上很简单,使用IITFileOrCDTrack.Podcast:

yourTrack.Podcast

如果是播客,则返回True,否则返回False。

您当然可以通过

进行设置
yourTrack.Podcast(bool)

很高兴我能提供帮助。