iTunes 10.6.3 меняет интерфейс AppleScript?

У меня есть простой скрипт Ruby, который использует гем rb-appscript для управления iTunes, и теперь, когда я обновился до iTunes 10.6.3, он, похоже, не работает.

До версии 10.6.3 этот фрагмент кода работал так, как ожидалось, для получения текущей выбранной дорожки:

Appscript.app('iTunes').selection.get()

Теперь выдает следующую ошибку:

RuntimeError: Unknown property, element or command: 'selection'

Редактировать: только что подтвердил, что это также не работает в py-appscript, поэтому оно не изолировано от rb-appscript.

Что странно, потому что следующий фрагмент реального AppleScript все еще работает:

tell application "iTunes" to get selection

Подобные примеры, такие как Appscript.app('Finder').desktop.files.get(), все еще работают.

Я не смог найти никакой информации, которая объяснила бы, было ли это изменено и почему, или что я могу сделать, чтобы обновить свой сценарий. Я предполагаю, что это как-то связано с изменениями Mountain Lion.


person Robert Speicher    schedule 18.06.2012    source источник
comment
Это же изменение также нарушает работу удаленных сценариев как с помощью AppleScript, так и с помощью ScriptingBridge, о чем Apple, скорее всего, позаботятся, а не о py-appscript. Я настоятельно рекомендую всем, кого это затронет, перейти на bugreport.apple.com и зарегистрировать свою ошибку как дубликат моего openradar.appspot.com/radar?id=1788405; если они получат достаточно отчетов, это может иметь значение.   -  person abarnert    schedule 28.06.2012


Ответы (3)


Похоже, что iTunes 10.6.3 был выпущен с песочницей, которая идет с Mountain Lion. Вот статья об этом (читайте комментарии тоже) http://www.leancrew.com/all-this/2012/06/the-first-nail-in-the-coffin-of-python-appscript/

Вероятно, начнет происходить гораздо больше (если не со всем), как с Mountain Lion.

person Nate Thelen    schedule 18.06.2012
comment
+1. Но я не думаю, что горный лев здесь уместен. Проблема в том, что iTunes — это устаревший устаревший код, который медленно модернизируется людьми, не желающими вносить радикальные изменения во внутренности. Это привело к тому, что они частично сломали обложку альбома в 10.2, перетаскивание в 10.4 и скрипты в 10.6.3, но ничто из этого не имеет ничего общего с выпусками OS X (за исключением косвенного, в котором Apple никогда не могла отказаться от QuickDraw/PICT, QuickTime, 32-битные и т. д., хотя iTunes все еще зависел от них). - person abarnert; 28.06.2012

Я предоставил исправление для этой проблемы здесь:

https://github.com/mattneub/appscript/tree/master/rb-appscript

person matt    schedule 21.07.2012
comment
Выглядит отлично, надо будет попробовать; Я обновил свой исходный скрипт, чтобы просто делать прямые вызовы osascript. - person Robert Speicher; 24.07.2012
comment
До сих пор он отлично работает для iTunes, и я активно настраиваю его изо дня в день. Однако, если возникнут проблемы с тем, как я создаю словарь, дайте мне знать (в идеале вы должны разветвить, исправить и ввести запрос на вытягивание). Это определенно незавершенная работа; первоначальный разработчик отпустил этот мяч, поэтому мы все должны поднять его и продолжать двигаться. - person matt; 24.07.2012

Да, точно сломали. Вы МОЖЕТЕ использовать rb-appscript с приложением System Events для условной проверки дочерних элементов различных элементов пользовательского интерфейса, чтобы убедиться, что атрибут «selected» истинен... например:

i = 0
row_exists = true
selected_row = nil
while row_exists && !selected_row
    i += 1
    row_exists = app("System Events").application_processes["iTunes"].windows["iTunes"].scroll_areas[3].outlines[1].rows[i].exists
    if row_exists 
        if (app("System Events").application_processes["iTunes"].windows["iTunes"].scroll_areas[3].outlines[1].rows[i].attributes["AXSelected"].value.get == true)
            selected_row = app("System Events").application_processes["iTunes"].windows["iTunes"].scroll_areas[3].outlines[1].rows[i]
        end
    end 
end

Затем вы можете извлечь необходимую информацию из дочерних элементов выбранной строки. Однако это был бы довольно раздражающий способ сделать это.

person lottscarson    schedule 18.06.2012