通过ScriptingBridge获取itunes中的特定曲目

时间:2011-04-23 20:08:50

标签: file select itunes scripting-bridge

我正在更新我的OS X程序以接受iTunes drop,修改文件中的元数据,然后刷新(获取信息)删除的文件,以便iTunes可以更新其'元数据库。

我的Drop工作正常,它提供了有关该文件的一些misc信息的字典,包括track ID,persistent ID和Location。我现在需要通过文件位置或删除信息提供的持久ID来获取特定轨道,因此我可以调用其上的刷新方法以强制iTunes重新检查文件并更新更改到元数据。

我已经导入了iTunes头文件并创建了SBApplication对象,我在这一点上非常坚持以有效的方式获得正确的轨道。

2 个答案:

答案 0 :(得分:5)

如上所述,我已经可以访问有关iTunes drop提供的文件的一些信息。我需要根据drop库提供的文件名或persistentID来匹配有关该文件的信息,我的解决方案是使用iTunes脚本桥上返回的库集合对iTunes库使用谓词过滤器

    iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];

    SBElementArray *sources = [iTunes sources];

    SBElementArray *entireLibrary = [[[[sources objectAtIndex:0] libraryPlaylists] objectAtIndex:0] fileTracks];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"persistentID == %@", persistentID];

    [entireLibrary filterUsingPredicate:predicate];

答案 1 :(得分:0)

这是我使用ScriptingBridge iTunes 获取当前曲目信息的方式:

iTunesApplication * iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
NSString * artist    = [[iTunes currentTrack] artist];
NSString * trackname = [[iTunes currentTrack] name];
/* etc. */