Это расширение для браузера Google Chrome.
Оно позволяет управлять онлайн плеером Яндекс.Музыка, открытом в одной из вкладок браузера, при помощи горячик клавиш.
Настройки клавиш по умолчанию:
- Следующая песня - клавиша "Вперед" (на мультимедиа клавиатуре)
- Пауза/воспроизведение - клавиша "Пауза"
- Предыдущая песня - клавиша "Назад"
Если на вашей клавиатуре нет мультимедиа клавиш или Chrome не включил горячие клавиши автоматически, вы можете настроить их по своему усмотрению в разделе Расширения (chrome://extensions) -> Быстрые клавиши (в нижней части страницы).
Если во время установки расширения у вас уже была открытка вкладка с Яндекс.Музыкой, необходимо открыть ее заново.
Загрузить расширение из Chrome Marketplace: здесь
Или
Скачать исходники в локальную папку на компьютере, включить в Google Chrome режим разработчика и установить расширение из папки.
В фоне крутится background.js, в которой обрабатываются два события: команда и коннект от страницы.
Когда приходит запрос на коннект от страницы (вкладки с Яндекс.Музыкой), запоминается ссылка на объект порта для обмена сообщениями в глобальную переменную tunnel.
Когда приходит команда нажатия клавиши от браузера, то, если порт уже есть, отправляем в него сообщение с одной из команд.
При открытии страницы с маской music.yandex.ru, к ней прицепляется код из inject.js.
Сразу после инъекции создается <script> элемент в структуре страницы, в котором на документ вешается обработчик нашего события ymhk-event.
Этот трюк нужен для того, чтобы из inject.js можно было управлять JS-объектами на основной странице, т.к. напрямую это невозможно из-за правил безопасности Chrome.
Далее открываем порт обмена сообщениями до background.js, и ждем через него сообщения о нажатии клавиш.
Как только получаем сообщение с командой, отправляем в документ событие ymhk-event, которое отлавливается созданным в самом начале обработчиком, в котором анализируется команда и вызывается нужный метод JS-объекта с плеером Яндекс.Музыки.
Если есть желание скинуться мне на пиво, номер Яндекс.Кошелька: 4100160484309