3

rb-appscript gemを使用して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()まだ動作するなどの同様の例。

これが変更されたかどうか、その理由、またはスクリプトを更新するために何ができるかを説明する情報が見つかりませんでした。マウンテンライオンの変化と関係があると思います。

4

3 に答える 3

4

iTunes 10.6.3は、MountainLionに付属するサンドボックスでリリースされたようです。これについて話している記事があります(コメントも読んでください)http://www.leancrew.com/all-this/2012/06/the-first-nail-in-the-coffin-of-python-appscript/

Mountain Lionの時点で、おそらくもっと多くのことが起こり始めるでしょう(すべてではないにしても)

于 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を使用して、さまざまな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

次に、選択した行の子から必要な情報を引き出すことができます。ただし、これはかなり厄介な方法です。

于 2012-06-18T20:45:57.477 に答える