Itunes Applescript событие - PullRequest
       17

Itunes Applescript событие

1 голос
/ 09 июля 2011

Я пишу приложение jukebox, которое использует php / js в качестве внешнего интерфейса и использует itunes в качестве внутреннего.Проблема в том, что мне нужен способ узнать, когда песня перестала воспроизводиться в itunes.Я думал об использовании бездействующего сценария для опроса itunes через applecript.Но я должен был бы опрашивать каждые столько секунд, вместо этого я хотел бы, чтобы событие запускало яблочный скрипт, когда песня перестает играть.Есть идеи?

Ответы [ 2 ]

0 голосов
/ 09 июля 2011

iTunes отправляет системное уведомление при каждом изменении состояния, называемое «com.apple.itunes.playerInfo». Так что если вы можете зарегистрироваться для системных уведомлений (NSDistributedNotificationCenter) из php, то это будет путь, а не опрос. Быстрый поиск показал, как это сделать из python ... здесь .

0 голосов
/ 09 июля 2011

Я не совсем уверен, существует ли метод, позволяющий вам это сделать, но сейчас вы всегда можете использовать свойство 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

Если у вас есть какие-либо вопросы, просто спросите. :)

...