Pull to refresh

API для управления плеерами на сайтах

Reading time 3 min
Views 9.4K

Предыстория


В 2012-2013 годах я нашёл одно онлайн-радио, которое «зацепило» меня большим выбором хорошей музыки и тем, что там (почти) не было рекламы.


По своей должности я — web-разработчик, да ещё интересуюсь различными технологиями и происходящим в науке, и посему у меня довольно часто открыто большое количество вкладок в браузере, а зачастую ещё и несколько профилей в браузере. А если ещё добавить к этому среду разработки, графический редактор, открытые папки, то хоть заводи навигатор по всем открытым окнам и вкладкам.


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


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


А ещё часто мне было интересно узнать исполнителя и название произведения, поэтому было решено добавить всплывающие оповещения с этой информацией.


Готовое расширение


Сегодня моё расширение позволяет контролировать воспроизведение уже на нескольких сайтах (SoundCloud, Digitally Imported, ВКонтакте, Одноклассники, Онлайн-радио 101.ru, VGM Radio), а также некоторые другие действия (добавлять текущий трек в плейлист, отмечать трек как понравившийся, изменять громкость звука). Делается это как с помощью быстрых клавиш, так и при помощи кнопок в оповещении (кнопки не отображаются в Opera).


Ещё есть (отключаемые) оповещения с информацией о треке при изменении статуса плеера либо по нажатию быстрых клавиш.


Также ведётся список десяти последних треков с возможностью поиска оных ВКонтакте, в Google и Amazon.


API


У расширения имеется API для добавления поддержки других сайтов.


Каждый сайт (плеер) добавляется как модуль. Имеются встроенные и внешние модули.


Встроенные модули

Встроенные модули являются частью моего расширения и их настройки доступны на странице параметров расширения. Для того, чтобы подключить модуль, пользователь должен дать расширению своё разрешение на доступ к вкладкам и содержанию страниц соответствующих доменов.


Внешние модули

Внешние модули являются отдельными расширениями, которые подсоединяются к моему расширению посредством API и имеют доступ ко всем возможностям моего расширения (управление плеерами посредством быстрых клавиш и кнопок в оповещении, а также список последних треков). Их настройки тоже доступны на странице параметров моего расширения.


Для чего нужны внешние модули

  • Некоторые модули могут требовать доступ ко всем доменам (например, модуль для виджета SoundCloud на любых сайтах), и чтобы не пугать пользователя моего расширения запросом такого разрешения (чтобы сохранить доверие пользователя).
    Такие модули могут получать это разрешение сразу при установке либо в любое другое время (на усмотрение разработчика).
  • Внешние модули позволяют сторонним разработчикам публиковать расширения под своим именем. Разработчики, которые хотят пополнить своё портфолио, вместо того, чтобы участвовать в чужом проекте, создают свой собственный проект.

Где найти API и как с ним работать

API доступен по лицензии MIT на GitHub (см. Ссылки ниже).


Написан он на ES5, чтобы понизить входной барьер для сторонних разработчиков, но это не должно остановить тех, кто хочет написать свой модуль на более современных спецификациях и технологиях.


Примеры использования API

Имеется: два внешних модуля (доступны в качестве отдельных расширений), а также один встроенный модуль, использующий API.


Встроенный или внешний модуль

Встроенный или внешний модуль? «… вот в чём вопрос», — как говорил классик.


Если вы хотите воспользоваться API и добавить поддержку нового плеера, воспользуйтесь следующими подсказками:


  • встроенный модуль:
    — ваш модуль поддерживает плеер только на одном или небольшом количестве доменов (например, модуль для youtube.com, модуль для play.google.com/music/listen);
    — вас устроит упоминание о вашем вкладе на странице readme моего расширения и в социальных сетях;
  • внешний модуль:
    — вы хотите опубликовать свой модуль под своим именем;
    — ваш модуль требует доступ к содержанию страниц на большом количестве или всех доменах.

Ссылки



Обратная связь


Вопросы, жалобы и предложения приветствуются. Оставляйте их в комментариях либо воспользуйтесь одним из других способов.

Tags:
Hubs:
+10
Comments 19
Comments Comments 19

Articles