Applescript: дождитесь завершения действия/события

Я пишу скрипт для загрузки бесплатных/небесплатных приложений из iTunes Store. На каждую загрузку уходит от 5 до 10 секунд.

Например:

повторить 1000 раз

download_app()

конец повтор

на download_app()

скачать материал....

задержка 10

конец загрузки_приложение

Для загрузки одного приложения 1000 раз требуется много времени, и я хочу оптимизировать это время. Вместо того, чтобы использовать задержку 10, есть ли другой способ сделать это?

Есть ли способ получить статус загрузки / статус занятости iTunes?

Пожалуйста, предложите.

Расширенное спасибо

Рахман


person Mahbub Rahman    schedule 26.08.2013    source источник


Ответы (1)


У меня нет конкретного решения, однако следующий код может служить полезным примером:

tell application "System Events"
    tell application process "Safari"
        repeat
            if (accessibility description of (get properties of button 1 of text field 1 of splitter group 1 of group 2 of tool bar 1 of window 1)) does not contain "stop" then exit repeat
        end repeat
    end tell
end tell

Этот код приостанавливает скрипт до тех пор, пока веб-страница не завершит загрузку. Он делает это, входя в бесконечный цикл и выходя из цикла при достижении условия.

Условие кажется довольно сложным, но на самом деле оно проверяет что-то простое. Справа от поля URL-адреса Safari есть кнопка остановки/перезагрузки. Пока страница загружается, на ней отображается значок остановки. Когда страница перестает загружаться, на ней отображается значок перезагрузки. Следовательно, когда мы больше не видим значок остановки, страница, должно быть, завершила загрузку.

Большая часть кода довольно загадочно перемещается по графическому интерфейсу, чтобы идентифицировать описанную кнопку. Термин accessibility description используется для обозначения текущего состояния кнопки. Описание доступности — это то, что произносится вслух для людей с ограниченными возможностями (например, слабовидящих), использующих Mac OS X в режиме специальных возможностей. Естественно, пока страница загружается, кнопка описывается как «стоп».

Если какой-либо интерактивный аспект графического интерфейса iTunes изменяется (скорее всего, кнопка) после завершения загрузки, вы можете обнаружить его изменение состояния аналогичным образом и использовать это как сигнал для продолжения сценария.

Надеюсь, это поможет. (Мой пример реализации кода. Я обнаружил, что он до смешного точен — скрипт продолжает работать мгновенно. после завершения загрузки страницы.)

Раскрытие информации: исходный код не мой — я нашел его где-то в Интернете.

person nimble agar    schedule 27.08.2013