pyobj доступ к приложению iTunes

Допустим, мне удалось открыть словарь для iTunes в редакторе Applescript:

alt text

Как мне получить доступ к командам «поиска», используя Python с pyobjc?

Я знаю, что могу использовать приложение iTunes, используя:

iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")

но после того, как я делаю dir, я не вижу команду search в возвращаемом словаре. Помогите, пожалуйста!


person jldupont    schedule 04.05.2010    source источник
comment
Стоит отметить, что во многих случаях dir не даст вам полный список допустимых ссылок на атрибуты объекта. Многие классы Python (особенно оболочки) реализуют метод __getattr__. Короче говоря, это означает, что объект может иметь атрибуты, которые не определены явно, и они не проявляются автоматически при вызове dir.   -  person glifchits    schedule 08.05.2014


Ответы (1)


Используйте appscript вместо Scripting Bridge. Доступны версии для Python, Ruby и Objective-C. В отличие от Scripting Bridge, appscript предназначен для работы с Apple Events, а не для того, чтобы притворяться чем-то, чем он не является; он также немного более гибкий и менее глючный. В качестве бонуса вам не нужно проходить PyObjC.

Документация appscript хороша и достойна прочтения. Вы можете установить ASTranslate, который преобразует сценарий AppleScript в код приложения для любого из перечисленных выше языков. Когда я делаю что-то сложное, я часто пишу это в (Apple)Script Editor, а затем конвертирую в Python с помощью ASTranslate. Есть также ASDictionary, который создает версии словарей в формате HTML, отформатированные для языков приложений; Я не использую его часто, так как считаю экспериментирование с редактором сценариев более доступным. (Однако, если у вас нет большого опыта работы с AppleScript, возможно, это будет лучший выбор.)

Некоторые примеры управления iTunes с помощью скрипта Python appscript см. в разделе несколько сценариев, которые я написал.

person Nicholas Riley    schedule 04.05.2010
comment
appscript больше не рекомендуется использовать. - person Kyle Hayes; 05.04.2012