Cocoa 如何仅从iTunes主库(通过脚本桥返回)获取音频文件?
我有一个很简单的问题。我想把音频文件放到我的表视图中。如何将它们与PDF和电影等区分开来 我通过脚本桥从iTunes获得它们:Cocoa 如何仅从iTunes主库(通过脚本桥返回)获取音频文件?,cocoa,itunes,scripting-bridge,Cocoa,Itunes,Scripting Bridge,我有一个很简单的问题。我想把音频文件放到我的表视图中。如何将它们与PDF和电影等区分开来 我通过脚本桥从iTunes获得它们: iTunesSource *source = [[[self iTunes] sources] objectAtIndex:0]; iTunesPlaylist *mainPlaylist = [[source libraryPlaylists] objectAtIndex:0] ; library_ = [[NSArray arrayWithA
iTunesSource *source = [[[self iTunes] sources] objectAtIndex:0];
iTunesPlaylist *mainPlaylist = [[source libraryPlaylists] objectAtIndex:0] ;
library_ = [[NSArray arrayWithArray:[mainPlaylist tracks]] retain ] ;
这给了我一个错误,说类iTunesFileTrack找不到(在链接时)
:
我肯定我遗漏了一些简单的东西:)
相关提示:有没有更快的方式阅读iTunes库?我只是建议从xml文件加载它,但这对我来说似乎不安全。如果苹果在下一个版本中做了任何改变,我就完蛋了
多谢各位
编辑:使用sdef/Applications/iTunes.app | sdp-fhm--basename iTunes
我可以生成需要检查类的.m文件。但它似乎不起作用:
[track get];
if(![[track className] isEqualToString:@"ITunesFileTrack"]) {
DLog1(@"SKIPPING kind: %@", [track kind]);
continue;
}
只跳过我的流:p不跳过电影。(即使我添加了(track.videoKind!=iTuneseVdnone)
)。甚至PDF都是iTunesFileTracks。但是.h声明:
// a track representing an audio file (MP3, AIFF, etc.)
@interface iTunesFileTrack : iTunesTrack
我在我的代码中使用了类似的东西,所以应该可以使用(
app
是iTunesSBApplication
):
1.)首先获取库源代码
- (ITunesSource *)librarySource {
NSArray *sources = [[app sources] get];
NSArray *libs = [sources filteredArrayUsingPredicate:[NSPredicate
predicateWithFormat:@"kind == %i",
ITunesESrcLibrary]];
if ([libs count]) {
return [libs objectAtIndex:0];
}
return nil;
}
2.)反复浏览库播放列表
3.)您可以检查其他轨道类型,如
if (track.videoKind != ITunesEVdKNone || track.podcast) {
// track is not of type music
}
谢谢你的回复。但我只想找到音频文件。那些列表曲目是电影、PDF等。你知道如何只获取音频文件吗?这似乎不起作用。它不会遗漏视频。它在我的应用程序中起作用。我使用它的目的是一样的——过滤掉播客和电影。你如何过滤掉PDF?PDF无论如何都不是轨道项目。
NSArray *libraryLists = [[[self librarySource] libraryPlaylists] get];
for (ITunesLibraryPlaylist *list in libraryLists) {
NSArray *listTracks = [[list fileTracks] get];
for (ITunesTrack *listTrack in listTracks) {
// do stuff...
}
[listTracks release];
}
if (track.videoKind != ITunesEVdKNone || track.podcast) {
// track is not of type music
}