【问题标题】:Xcode how to get iTunes track info from iTunes, specifically comments?Xcode 如何从 iTunes 获取 iTunes 曲目信息,特别是评论?
【发布时间】:2012-10-16 22:49:32
【问题描述】:

我可以将 iTunes 中曲目上的用户 cmets 输入到我的 App 中吗?

【问题讨论】:

    标签: import comments itunes


    【解决方案1】:

    从您的 cmets 看来,您实际上不是在 Mac 上,而是在 iOS 上,而且您实际上并不是在尝试从 iTunes 访问 cmets,而是从 iOS 音乐库。

    如果是这样:

    NSString *comments = [currentItem valueForProperty:MPMediaItemPropertyComments];
    

    这将为您提供 iOS 音乐库中的 cmets。但是,不能保证设备会同步从 iTunes 同步的任何曲目(或从商店购买,或从 Match 下载),因此您很可能一无所获。在这种情况下,你无能为力。

    您无法直接从 iTunes 获取 cmets,因为您没有连接到 iTunes。

    【讨论】:

    • 谢谢。是的,我正在为 iOS 编程,将我的音乐播放器连接到 iTunes 库以导入音乐或播放列表。我试图查看是否可以在与 iDevice 同步并运行我的音乐播放器应用程序之前导入与某人可能在 iTunes 中输入的歌曲相关的 cmets。
    • 没有将您的播放器连接到 iTunes 音乐库,而是将它连接到 iOS 音乐库。这不是一回事。即使设备确实与 iTunes 同步(这不是强制性的),它也不一定会复制 iTunes 中的所有数据。如果 cmets 被复制过来,上面的代码会得到它们。如果不是,就没有办法得到它们,因为它们不是在那里得到的。
    • 谢谢,我试试看。
    【解决方案2】:

    你的问题很模糊。

    在 Mac 上,用户 cmets 可用作任何 track 对象上的 comment 属性。在 Windows 上,它们可作为任何 IITTrack 对象上的 Comment 方法的结果使用。

    所以,假设您已经知道如何访问曲目:

    AppleScript:

    comment of theTrack
    

    Mac 上带有 ScriptingBridge 或 appscript 的 Python:

    theTrack.comment()
    

    Windows 上带有 PyCOM 的 Python:

    theTrack.Comment()
    

    带有 ScriptingBridge 或 appscript 的 ObjC:

    [theTrack comment];
    

    等等。

    如果您不知道如何访问曲目,则需要比这更基本的帮助(您需要告诉我们您使用的是 Windows 还是 Mac,您要使用哪种语言和库等) ,但这里有一个完整的 py-appscript 示例,它打印出库中每个轨道的 cmets:

    from appscript import *
    print('\n'.join(app('iTunes').tracks.comment()))
    

    如果您不是在编写 iTunes 脚本,而是在解析其 XML 库 plist 文件,则每个曲目都是 dict 下的 Tracks。如果轨道有用户 cmets,它们是带有键 Comments 的字符串。同样,如果您还不知道如何解析这个 XML 文件,那么您就会遇到更基本的问题。但这里又是一个简单的例子:

    from Foundation import NSDictionary
    d = NSDictionary.dictionaryWithContentsOfFile_('/Users/me/Music/iTunes/iTunes Library.xml')
    print('\n'.join(t.get('Comments', '') for t in d['Tracks'].values()))
    

    【讨论】:

    • 我正在使用 Mac 并使用 Xcode 进行编程。我知道如何访问曲目标题、播放时间等,但不知道如何访问 cmets?谢谢。
    • 您可以在 Xcode 中使用多种不同的语言,并且您可以通过多种不同的方式访问每种语言的曲目标题。如果你告诉我你正在使用哪种方式(或者至少只是给我你用来获取给定曲目标题的代码行),我可以告诉你如何为 cmets 做同样的事情。
    • 这就是我获得曲目标题的方式:MPMediaItem *currentItem = [musicPlayer nowPlayingItem]; NSString *titleString = [currentItem valueForProperty:MPMediaItemPropertyTitle]; titleLabel.text = [NSString stringWithFormat:@"%@",titleString];
    • Mac 上没有 MPMediaItem 这样的类。有这样一个类是 iOS,但在 iOS 中没有 iTunes 之类的东西(嗯,有,但它是商店应用程序而不是播放器),并且您明确表示您使用的是 Mac。因此,您尝试做的事情甚至没有意义。如果你的意思不是你说的,请看我的另一个答案。
    猜你喜欢
    • 2011-07-30
    • 2013-04-22
    • 2014-04-01
    • 2011-05-08
    • 1970-01-01
    • 2019-05-08
    • 2016-04-22
    • 2016-06-28
    • 1970-01-01
    相关资源
    最近更新 更多