Stream 通过OSX上的AppleScript打开iTunes的URL

Stream 通过OSX上的AppleScript打开iTunes的URL,stream,applescript,itunes,Stream,Applescript,Itunes,我想使用iTunes在MacOSX上呈现http mp3流。我知道以编程方式远程控制iTunes的最佳方法是AppleScript,我已经可以启动iTunes了,但是: 从URL打开流的正确语法是什么? 通过apple脚本运行iTunes时,是否可以使其不可见/隐藏?它总是打开GUI。。 找到解决方案: tell application "itunes" to open location "your_url_here" tell application "itunes" to play 它可

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

从URL打开流的正确语法是什么? 通过apple脚本运行iTunes时,是否可以使其不可见/隐藏?它总是打开GUI。。 找到解决方案:

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 ...");
找到解决方案:

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 ...");

在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和System Events字典,并对您关心的每个edge案例进行实验。此外,如果用户或另一个脚本在您的检查后碰巧启动它,则会出现一个小的竞争条件…,但您对此无能为力

你实际上并不需要播放,除非在某些不常见的情况下,例如iTunes已经在流上暂停,但它不会造成伤害


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

在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和System Events字典,并对您关心的每个edge案例进行实验。此外,如果用户或另一个脚本在您的检查后碰巧启动它,则会出现一个小的竞争条件…,但您对此无能为力

你实际上并不需要播放,除非在某些不常见的情况下,例如iTunes已经在流上暂停,但它不会造成伤害


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

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


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


回答得很好,谢谢!我对学习如何避免创建/更改播放列表的更多技巧很感兴趣。如果你不小心让它出现,这和隐藏窗口是一样的低级技巧。首先获取“名为Internet歌曲的播放列表”。调用添加位置后,重复此操作。如果以前没有播放列表,现在有了,请将其删除。或者,如果你只是想不管发生什么都要删除它,只需在脚本末尾“删除播放列表Internet歌曲”。或者,IIRC,你不能在播放列表存在后更改其可见性,但你可以首先创建不可见的播放列表。我忘记了确切的语法,但类似于“使用属性制作用户播放列表{name:Internet歌曲,visible:false}”。在第一次调用“open location”之前执行此操作,iTunes应该开始将曲目添加到不可见的播放列表中,而不是创建可见的播放列表。PS,你去过dougscripts.com吗?学习如何从应用程序字典中编写应用程序脚本是一件痛苦的事情,尤其是如果你不是AppleScript向导的话;有400多个示例可供下载和阅读,这使它变得容易得多。否则的话,我永远也不知道如何让make命令正常工作……甚至现在我都不记得了。回答得好,谢谢!我对学习如何避免bein播放列表的更多技巧感兴趣
g创建/更改。如果你不小心让它出现,这和隐藏窗口是一样的下流伎俩。首先获取“名为Internet歌曲的播放列表”。调用添加位置后,重复此操作。如果以前没有播放列表,现在有了,请将其删除。或者,如果你只是想不管发生什么都要删除它,只需在脚本末尾“删除播放列表Internet歌曲”。或者,IIRC,你不能在播放列表存在后更改其可见性,但你可以首先创建不可见的播放列表。我忘记了确切的语法,但类似于“使用属性制作用户播放列表{name:Internet歌曲,visible:false}”。在第一次调用“open location”之前执行此操作,iTunes应该开始将曲目添加到不可见的播放列表中,而不是创建可见的播放列表。PS,你去过dougscripts.com吗?学习如何从应用程序字典中编写应用程序脚本是一件痛苦的事情,尤其是如果你不是AppleScript向导的话;有400多个示例可供下载和阅读,这使它变得容易得多。否则,我永远也不知道如何让make命令正常工作……甚至现在我都不记得了。