Itunes Applescript event



我正在编写一个自动点唱机应用程序,使用php/js作为前端,并使用itunes作为后端。问题是我需要一种方法来判断一首歌何时在itunes中停止播放。我想过用一个空闲的脚本通过applescript来轮询itunes。但是,我将不得不每隔这么多秒进行一次投票,相反,我希望一个事件在歌曲停止播放时运行一个applescript。什么好主意吗?

每当它的状态发生变化时,iTunes都会发送一个名为"com.apple.itunes.playerInfo"的全系统通知。所以如果你能从php注册系统通知(NSDistributedNotificationCenter)那么这将是一种方式,而不是轮询。快速搜索一下如何从python中做到这一点…这里。

我不完全确定是否存在允许您这样做的方法,但现在您可以始终使用iTunes的player state属性,它通过返回以下五个值之一来告诉您iTunes当前正在做什么:

playing, stopped, paused, fast forwarding, rewinding

使用该属性,您可以创建一个没有命令的repeat until player state is stopped循环(本质上,等待直到当前播放的歌曲停止),然后在循环之后,执行任何您想要的。翻译成代码,这段文字如下:

tell application "iTunes"
   repeat until player state is stopped
      --do nothing until the song currently playing is stopped...
   end repeat
   --[1]...and then execute whatever you want here
end tell
<标题>可选

如果您只想运行脚本一次,那么您可以将上述脚本插入到无限的repeat循环中,尽管您可能希望先执行delay,以便开始播放歌曲。否则,[1]将在启动脚本后立即执行(假设没有正在使用的歌曲)。

repeat
  delay 60 --1 minute delay
  tell application "iTunes"
     repeat until player state is stopped
         --wait
     end repeat
     ...
  end tell
end repeat

如果你有任何问题,尽管问。:)

相关内容

  • 没有找到相关文章

最新更新