在OSX上通过AppleScript打开带有iTunes的URL

时间:2012-06-26 00:55:44

标签: stream applescript itunes

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

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

3 个答案:

答案 0 :(得分:2)

找到了解决方案:

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

它会明显打开iTunes,但至少它已经被最小化了。

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

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

答案 1 :(得分:2)

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

但是如果你想强制iTunes隐藏,而不是隐藏它,如果它还不可见,你可以这样做:

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

或者,如果您只想在脚本启动iTunes时隐藏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和系统事件词典,并试验您关心的每个边缘案例。此外,还有一个小的竞争条件(如果用户或其他脚本在您的检查后恰好启动它...),但是您无能为力。

除了在某些不常见的情况下(例如,iTunes已在流中暂停),您实际上并不需要“播放”,但它并没有受到伤害。

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

答案 2 :(得分:0)

或者你可以像这里回答的那样使用QuickTime Player。打开相同的文件,预先安装,并且可以强制使用几乎没有可见的GUI。如果你希望另一个流在一个完成时启动它会变得更复杂。

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