Управление плеером Yandex.Music в OSX, используя клавиатуру без медиа клавиш

Недавно я принял решение развернуть в офисе на рабочем компьютере Hackintosh. Все получилось. Единственное, что мне не нравилось это отсутствие медиа клавиш на офисной клавиатуре. Ими я привык управлять музыкой, в том числе на сервисе Yandex.Music. Данная статья посвящена тому, как я исправил ситуацию.

Управление плеером Yandex.Music в OSX, используя клавиатуру без медиа клавиш

Используем 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 

В результате увидим следующую картину:

image

Теперь напишем 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
 
Источник

Читайте также