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

Передісторія

У 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 мого розширення та в соціальних мережах;
  • зовнішній модуль:
    — ви хочете опублікувати свій модуль під своїм ім'ям;
    — ваш модуль вимагає доступ до змісту сторінок на великій кількості або всіх доменах.

Посилання

Зворотний зв'язок

Запитання, скарги та пропозиції вітаються. Залишайте їх у коментарях або скористайтеся одним з інших способів.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.