0

我是一位经验丰富的编码员,但是是为 Apple 设备编写代码的新手。我正在尝试使用 Swift 访问我的 OS X 设备上的媒体库。我可以找到几十个为 iOS 设备完成此任务的示例,并成功地为 iOS 实现了一些代码来完成此任务。但是,我很难为 OS X 做同样的事情。

谁能指点我,或提供任何建议来帮助我使用 Swift 在 OS X 设备上访问媒体库(iTunes)?

编辑:澄清一下,如果我正在为 iOS 写作,我可以拨打 MPMediaQuery 之类的电话来查询媒体库。我正在寻找可以在为 OS X 编写的 Swift 代码中使用的类似内容。

提前致谢。

4

2 回答 2

1

上个月我自己一直在做这个工作。这是我能够想出的。

加载媒体对象后,您必须对它们执行相同的操作。调用是非阻塞的。

我使用 OS X 库中的 MediaLibrary 参考来解决这个问题。这是获取其余详细信息的好地方。

import Cocoa
import MediaLibrary

class ViewController: NSViewController {
  var library : MLMediaLibrary!
  var iTunes : MLMediaSource!
  var rootGroup : MLMediaGroup!

  override func viewDidLoad() {
    super.viewDidLoad()

    let options : [String : AnyObject] = [MLMediaLoadIncludeSourcesKey: [MLMediaSourceiTunesIdentifier]]
    library = MLMediaLibrary(options: options)
    library.addObserver(self, forKeyPath: "mediaSources", options: NSKeyValueObservingOptions.New, context: nil)
    library.mediaSources
  }

  override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
    guard let path = keyPath else { return }

    switch path {
    case "mediaSources":
      loadSources()
    case "rootMediaGroup":
      loadRootGroup()
    default:
      print("Nothing to do for \(path)")
    }
  }

  func loadSources(){
    if let mediaSources = library.mediaSources {

      for (ident, source) in mediaSources {
        print("Ident: \(ident)")
        print("Source Ident: \(source.mediaSourceIdentifier)")
        iTunes = source
        iTunes.addObserver(self, forKeyPath: "rootMediaGroup", options: NSKeyValueObservingOptions.New, context: nil)
        iTunes.rootMediaGroup
      }
    }
  }

  func loadRootGroup(){
    if let rootGroup = iTunes.rootMediaGroup {
      print("Root Group Identifier: \(rootGroup.identifier)")
      print("Root Group Type Ident: \(rootGroup.typeIdentifier)")
    }
  }
}

当我正在编写一个上传器时,我删除了我的特定代码,该上传器将我的库的一个子集用于为我办公室的其他人进行流式传输。但这应该让你开始。

于 2016-03-01T16:50:43.483 回答
1

您似乎专门指的是 iTunes 库。它是通过 Apple 提供的 iTunes 应用程序创建、维护和访问的。幸运的是,iTunes 是高度可编写脚本的,可以直接通过 AppleScript,也可以通过将 AppleScript 调用合并到您自己的应用程序中。

要了解可能的情况,首先打开位于 /Applications/Utilities 中的 Script Editor 应用程序,然后选择File -> Open Dictionary...

在此处输入图像描述

该列表包括支持脚本的所有应用程序。选择 iTunes 以显示详细说明其界面的浏览器。例如,选择iTunes Suite -> track会显示您可以访问的属性:

在此处输入图像描述

如何编写 AppleScript 代码和/或如何将其合并到您自己的应用程序中远远超出了这里单个问题的范围。但是,Apple 开发者网站上有许多资源可以帮助您开始工作。一个合乎逻辑的起点是:AppleScript 概述

于 2016-01-02T22:23:18.463 回答