3

我有一个简单的 Ruby 脚本,它使用 rb-appscript gem 来控制 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的变化有关。

4

3 回答 3

4

看起来 iTunes 10.6.3 是随 Mountain Lion 一起发布的沙盒。这是一篇谈论它的文章(也请阅读评论)http://www.leancrew.com/all-this/2012/06/the-first-nail-in-the-coffin-of-python-appscript/

从山狮开始,可能会开始发生更多(如果不是所有事情的话)

于 2012-06-18T20:16:22.623 回答
2

我在这里为这个问题提供了一个修复:

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

于 2012-07-21T17:12:06.110 回答
1

是的,他们肯定把它弄坏了。您可以将 rb-appscript 与 System Events 应用程序一起使用,以有条件地检查各种 UI 元素的子元素,以查看“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

然后,您可以从所选行的子项中提取所需信息。不过,这将是一种非常烦人的方式。

于 2012-06-18T20:45:57.477 回答