【问题标题】:Chrome extension that controls iTunes in Mac OS X在 Mac OS X 中控制 iTunes 的 Chrome 扩展
【发布时间】:2014-06-28 21:36:00
【问题描述】:

我正在为 Google Chrome 创建一个扩展程序,它将在 iTunes(本机应用程序)中开始和停止播放,获取有关其媒体库的信息等。操作发生在 Mac OS X 10.9.3 Mavericks 中。

我已经找到了 Chrome Runtime API,它有一些原生方法:

chrome.runtime.sendNativeMessage(.., .., ..)
chrome.runtime.connectNative(.., ..)

它们在developer.chrome.com 进行了描述。它们允许向本机应用程序发送某种“消息”。我已经成功地为 iTunes 创建了一个本地消息传递主机。首先我的尝试是connectNative(),但 iTunes 立即断开连接。然后我给它发送了一条随机消息(我在后台页面中发送):

chrome.runtime.sendNativeMessage(
  host,
  {text: "foo bar"},
  function(response){
    console.log(response);
        // > Undefined
    console.log(chrome.runtime.lastError.message);
        // > "Native host has exited."
});

所以现在我遇到了两个问题:

  1. 我走对了吗?我正在尝试做的事情是否可能?
  2. 这些“消息”中究竟应该发送什么内容?

一般来说,我需要在媒体库中执行搜索、开始播放某首歌曲、打开某个流的能力——所有这些都是由不同的用户操作触发的。基本上,我可以创建辅助可可应用程序作为此扩展程序和 iTunes 之间的门,它可以完美地处理 iTunes 的所有问题,但我很确定这是一种矫枉过正的做法,并且存在一些方法可以在扩展程序内完成所有操作。

【问题讨论】:

    标签: javascript macos google-chrome-extension itunes messaging


    【解决方案1】:

    原生消息传递要求原生可执行文件支持 Chrome 原生消息传递。具体来说:

    Chrome 在单独的进程中启动每个本机消息传递主机,然后 使用标准输入 (stdin) 和标准输出与其通信 (标准输出)。相同的格式用于双向发送消息: 每条消息都使用 JSON 序列化,UTF-8 编码并在前面 具有 32 位消息长度(按本机字节顺序)。

    虽然对该主题进行了零研究,但我仍然确定 iTunes 不是为支持 Chrome 原生消息而编写的(这就是它“立即断开连接”的原因,因为它不知道您要做什么),并且因为您没有 iTunes 的来源,所以您将无法更改它。

    如果您知道如何使用您编写的不同本机可执行文件来操作 iTunes,那么您可以教 可执行文件通过 Chrome 本地消息传递说话,从而充当翻译您自己的消息的桥梁iTunes 操作的音乐协议。

    【讨论】:

      【解决方案2】:

      我做了一些研究,并阅读了一年前的这篇文章,讨论了从 chrome 使用 iTunes 的可能性。

      Link to the Article

      其次,从那里引用:Chrome 媒体库 API

      Link to media galleries API

      我认为 API 提供了足够的资源来查找曲目。这不是一种与 iTunes 交互的方式,而是从您的资料库中访问您的数据。不确定您是否可以通过浏览器与 iTunes 软件进行通信(不过这个想法很有趣)。

      【讨论】:

        猜你喜欢
        • 2012-11-09
        • 1970-01-01
        • 1970-01-01
        • 2019-05-30
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 2016-02-02
        • 1970-01-01
        相关资源
        最近更新 更多