【问题标题】:open URL with iTunes via AppleScript on OSX在 OSX 上通过 AppleScript 使用 iTunes 打开 URL
【发布时间】:2012-06-27 07:21:14
【问题描述】:

我想使用 iTunes 在 MacOSX 上呈现 http mp3 流。我知道以编程方式远程控制 iTunes 的最佳方式是 AppleScript,我已经可以启动 iTunes,但是:

  1. 从 URL 打开流的正确语法是什么?
  2. 在通过苹果脚本运行 iTunes 时是否可以保持 iTunes 不可见/隐藏?它总是打开 GUI..

【问题讨论】:

    标签: stream applescript itunes


    【解决方案1】:

    或者您可以使用 QuickTime Player,就像在此处回答的那样。打开相同的文件,预先安装,并且可以强制使用几乎没有可见的 GUI。但是,如果您希望在一个流完成后开始另一个流,这会变得更加复杂。

    play a stream in iTunes without adding it to the library / playlist

    【讨论】:

      【解决方案2】:

      在 iTunes 未运行时向其发送命令将导致其启动并显示其默认 GUI;没有简单的方法。

      但是,如果您想强制 iTunes 隐藏,而不是在不可见时将其隐藏,您可以这样做:

      tell application "iTunes"
        open location "your_url_here"
        play
        set visible of every window to false
      end tell
      

      或者,如果您只想在脚本启动时隐藏 iTunes,您可以执行以下操作:

      tell application "System Events"
        set iTunesWasRunning to count of (processes whose name is "iTunes")
      end tell
      tell application "iTunes"
        open location "your_url_here"
        play
        if iTunesWasRunning is 0 then set visible of every window to false
      end tell
      

      当然,它无法处理一些边缘情况(例如,如果 iTunes 正在运行,但浏览器窗口已最小化,您将导致它取消最小化,并且不会重新最小化它);查看 iTunes 和 System Events 字典,并尝试您关心的每个边缘情况。此外,还有一个小的竞争条件(如果用户或其他脚本碰巧在您检查后启动它……),但您对此无能为力。

      您实际上并不需要“播放”,除非在某些不常见的情况下(例如,iTunes 已经在流中暂停),但这并没有什么坏处。

      最后,默认情况下,每次运行时都会将“your_url_here”添加到名为“Internet Songs”的播放列表中,即使它已经存在,必要时创建播放列表。希望你不介意;如果你这样做了,还有更多技巧要学。

      【讨论】:

      • 很好的答案,谢谢!我会对“学习更多技巧”也就是如何避免创建/更改播放列表感兴趣。
      • 如果你无意中让它出现了,这就像隐藏窗口一样的俗气。首先获取'名称为“互联网歌曲”的播放列表'。调用“添加位置”后,重复。如果之前没有播放列表,现在有,请删除。 (或者,如果您只想始终删除它,只需在脚本末尾“删除播放列表“Internet Songs””即可。)
      • 或者,IIRC,您无法在播放列表存在后更改其可见性,但您可以首先将其创建为不可见。我忘记了确切的语法,但类似于“使用属性 {name: "Internet Songs", visible: false} 制作用户播放列表”。在第一次调用“打开位置”之前执行此操作,iTunes 应该开始将曲目添加到您的不可见播放列表而不是创建可见播放列表。
      • PS,你去过dougscripts.com吗?学习如何从字典中编写应用程序的脚本是很痛苦的,尤其是如果您不是 AppleScript 向导;有 400 多个示例可供下载和阅读,这让它变得容易得多。 (否则我永远不会想出如何让任何“make”命令正常工作……我什至现在都不记得了。)
      【解决方案3】:

      找到解决方案:

      tell application "itunes" to  open location "your_url_here"
      tell application "itunes" to play
      

      它仍然可以明显地打开 iTunes,但至少它被最小化了。

      顺便说一句,我使用 Java 从 Java 运行它(我相信这需要 Snow Leopard):

      new ScriptEngineManager().getEngineByName("AppleScript").eval("tell application ...");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-29
        • 1970-01-01
        • 1970-01-01
        • 2011-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多