我想使用 iTunes 在 MacOSX 上呈现 http mp3 流。我了解以编程方式远程控制 iTunes 的最佳方式是 AppleScript,我已经可以启动 iTunes,但是:
- 从 URL 打开流的正确语法是什么?
- 通过苹果脚本运行 iTunes 时是否可以保持 iTunes 不可见/隐藏?它总是打开 GUI ..
我想使用 iTunes 在 MacOSX 上呈现 http mp3 流。我了解以编程方式远程控制 iTunes 的最佳方式是 AppleScript,我已经可以启动 iTunes,但是:
找到了解决方案:
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 ...");
在 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”的播放列表中,即使它已经存在,如有必要,也会创建播放列表。希望你不介意;如果你这样做了,还有更多的技巧要学。
或者您可以使用 QuickTime Player,就像在此处回答的那样。打开相同的文件,预先安装,并且可以强制使用几乎没有可见的 GUI。但是,如果您希望在一个流完成后开始另一个流,它会变得更加复杂。