我有一个使用的RB-appscript宝石控制iTunes一个简单的Ruby脚本,而现在我已经更新到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()
仍能正常工作。
我找不到可以解释,如果或者为什么这个改变还是什么我可以做些什么来更新我的脚本的任何信息。 我猜它是与山狮的变化。
看起来像iTunes 10.6.3是释放与与山狮来的沙盒。 下面是一篇文章谈论它(阅读注释,太) http://www.leancrew.com/all-this/2012/06/the-first-nail-in-the-coffin-of-python-appscript/
可能会开始发生更多的(如果不是一切)的山狮
我已经提供了这里修复此问题:
https://github.com/mattneub/appscript/tree/master/rb-appscript
是的,他们肯定把它弄坏了。 你可以使用RB-appscript与系统事件应用有条件地检查各种UI元素的孩子,看看是否“选择”属性为true ....如:
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
然后,您可以从选定行的孩子拉出来所需的信息。 这将是去这一个非常恼人的方式,虽然。