我最近发现了适用于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?'
提前致谢。
答案 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)
很高兴我能提供帮助。