2

我最近发现了 iTunes COM for Windows SDK 的厉害之处。我正在使用 Python 和 win32com 与我的 iTunes 库对话。不用说,我的脑袋正在爆炸。这个 API 很震撼。

不过我有一个问题,如何访问曲目的 Media Kind 属性?我查看了 SDK 中提供的帮助文件,没有看到任何迹象。如果您进入 iTunes,您可以修改曲目的媒体类型。这样,如果您的音乐库中显示了有声读物,您可以将媒体种类设置为有声读物,它将出现在 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

4 回答 4

0

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

于 2010-06-12T15:30:13.380 回答
0

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

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

于 2010-06-14T16:53:31.293 回答
0

好吧,Media Kind 在接口IITTrack.Kind中,但这可能不是您想要的 - 答案将是以下之一:

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

可能您需要查看IITTrack.Genre,它给出了 ID3 标签 Genre 的字符串形式,因此您可以找到“Audiobook”或 Apple 的“Books & Spoken”。(某些类型由 iTunes/iPod 专门处理)。

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

于 2010-06-15T03:03:28.343 回答
-1

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

yourTrack.Podcast

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

你当然可以通过

yourTrack.Podcast(bool)

很高兴我能帮上忙。

于 2012-02-26T10:32:42.347 回答