Недавно я принял решение развернуть в офисе на рабочем компьютере Hackintosh. Все получилось. Единственное, что мне не нравилось это отсутствие медиа клавиш на офисной клавиатуре. Ими я привык управлять музыкой, в том числе на сервисе Yandex.Music. Данная статья посвящена тому, как я исправил ситуацию.
Используем Apple Script для управления плеером
У AppleScript есть возможность «общаться» с приложениями которые его поддерживают, для этого в нем предусмотрена конструкция tell. В числе таких приложений браузер Google Chrome. Ниже показан пример того, как попросить Google Chrome отрыть URL в новой вкладке:
tell application "Google Chrome"
open location "https://music.yandex.ru"
end tell
Теперь рассмотрим пример посложнее, попросим Google Chrome выполнить JavaScript в активной вкладке:
tell application "Google Chrome"
execute front window's active tab javascript "alert('example');"
end tell
В результате увидим следующую картину:
Теперь напишем JavaScript вызывающий событие click на необходимом элементе, к примеру, на кнопке next плеера Yanded.Music. Для этого используем querySelector:
document.querySelector('.player-controls__btn_next').click();
Осталось попросить Google Chrome выполнить этот скрипт на вкладке с открытым Yandex.Music. Для этого, сначала находим необходимую вкладку:
tell application "Google Chrome"
-- пробегаем по каждому открытому окну
repeat with _w in (every window)
-- по каждой вкладке название которой содержит music.yandex.ru
repeat with _t in (every tab whose URL contains "music.yandex.ru") of _w
-- здесь далее будет наш код нажатия на кнопку
end repeat
end repeat
end tell
Затем просим выполнить на найденной вкладке наш скрипт:
tell application "Google Chrome"
-- пробегаем по каждому открытому окну
repeat with _w in (every window)
-- по каждой вкладке название которой содержит music.yandex.ru
repeat with _t in (every tab whose URL contains "music.yandex.ru") of _w.
set s to "document.querySelector('.player-controls__btn_next').click();"
tell _t to execute javascript s
end repeat
end repeat
end tell
В этом примере мы ищем div, класс которого '.player-controls__btn_next'. Чтобы выполнить другие действия, например приостановить воспроизведение, необходимо создать такой же AppleScript, но с селектором '.player-controls__btn_pause'. Необходимо понимать, что если Yandex изменит название класса, то в applescript его тоже необходимо будет поменять.
Вот и все, для того чтобы выполнить AppleScript по нажатию горячих клавиш, создаем сервис в Automator. Про то, как это сделать существует множество статей в интернете.
Готовые workflow для Automator вы можете скачать здесь:
P. S. Для того, чтобы описанное выше заработало в Safari, необходимо в скрипте заменить слово “execute” на слово “do”.
P. P. S. В плеерах вроде iTunes все проще. Они понимают команды типа play/pause
tell application "iTunes" to playpause
Автор: Артём Савкин