【问题标题】:get a specific track in itunes via ScriptingBridge [closed]通过 ScriptingBridge 在 iTunes 中获取特定曲目 [关闭]
【发布时间】:2011-08-11 14:49:04
【问题描述】:

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

我已经开始使用 drop,它提供了有关文件的一些杂项信息的字典,包括轨道 ID、持久 ID 和位置。我现在需要通过文件位置或 drop info 提供的持久 ID 获取特定曲目,因此我可以在其上调用 refresh 方法以强制 iTunes 重新检查文件并更新更改到元数据。

我已经导入了 iTunes 头文件并创建了 SBApplication 对象,此时我非常想通过一种有效的方式来获取正确的曲目。

【问题讨论】:

  • 有这方面的消息吗?有没有办法通过 ID 获取歌曲?

标签: file select itunes scripting-bridge


【解决方案1】:

如前所述,我已经可以访问有关 iTunes 下载提供的文件的一些信息。我需要根据拖放提供的文件名或持久ID 匹配有关该文件的信息到 iTunes 库中的文件我的解决方案是使用 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];

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 很好的信息,但没有回答问题。我说我已经获得了 iTunes 提供的文件的信息。需要一种将文件与 iTunes 库中的曲目匹配的方法,以便我可以发送刷新数据命令。我确实最终解决了这个问题,我稍后会发布我的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2018-07-13
    • 2011-10-25
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多