Сценарии itunes без яблочного сценария? - PullRequest
1 голос
/ 23 января 2011

Я ищу способ написания сценариев iTunes, используя что-то еще, кроме AppleScript. Я хочу манипулировать названиями и исполнителями треков. Использование некоторого id3-инструмента не поможет, потому что, насколько я знаю, база данных iTunes не будет обновляться, если я не использую iTunes для манипулирования этой информацией. Поскольку я не знаю, как кодировать с помощью AppleScript, и у меня нет времени на это, я задаюсь вопросом: есть ли способ выполнить эту задачу, используя javascript, lua, bash или php?

спасибо,

Ответы [ 2 ]

1 голос
/ 24 января 2011

Я предлагаю вам выучить AppleScript хотя бы на один день. Дело в том, что взаимодействие между GUI-приложениями в OS X осуществляется через Apple Events, конструкция которого соответствует структуре его основного языка AppleScript. Существует множество мостов, которые позволяют вам вызывать Apple Events с разных языков, но сначала вам нужно понять концепцию Apple Events. Так что, по крайней мере, вам нужно немного познакомиться с AppleScript.

Это так же, как в случае с Какао: вы можете кодировать приложения Какао на многих языках, но большая часть документации и концепции основана на Objective-C. Поэтому вам необходимо хотя бы немного ознакомиться с Objective-C, прежде чем кодировать Какао на других языках.

Итак, позвольте мне дать вам очень очень краткий обзор системы Apple Events / AppleScript.

Каждое приложение реализует объектно-ориентированную систему и представляет ее внешнему миру в виде словаря , который можно прочитать с помощью AppleScript Editor. Откройте редактор AppleScript, выберите «Файл» → «Открыть словарь» и выберите «iTunes». Там вы видите список команд, классов, методов в этих классах и т. Д. Затем из AppleScript, Ruby или Lua вы получаете доступ к этим объектам и методам.

Предположим, вы хотите переименовать выбранные записи iTunes из «A-B» в «B-A». Тогда код будет

set text item delimiters to "-"  
tell application "iTunes"         -- following statements are targeted to iTunes
repeat with entry in selection -- "selection" is a concept implemented in iTunes 
    set s to name of entry      -- copy the name of entry to a local string s
    set x to text items of s    -- split the string s to a list according to text item delimiters
    set y to {item 2 of x, item 1 of x}  -- construct another list
    set name of entry to y as string -- set the name. Note that "as string" adds the delimiters
end repeat
end tell

Да, грамматика AppleScript немного странная, но она в основном имеет однозначное соответствие с обычным императивным языком. Просто обратитесь к официальному языку , если вы не уверены. А текстовые операции в AppleScript без хорошего OSAX (системы расширений AppleScript) являются рутиной. Поэтому я согласен, что неплохо сначала ознакомиться с концепцией AppleScript, а затем использовать ее на Ruby или на любом из ваших любимых языков.

Но помните, откройте словарь в редакторе AppleScript, потому что именно здесь вы найдете то, что каждое приложение реализует и предоставляет системе!

0 голосов
/ 23 января 2011

Вы можете отправлять события Apple из JavaScript с помощью JavaScriptOSA .Однако я бы рекомендовал вам изучить appscript (Python, Ruby), поскольку он более актуален и поддерживается.

...