rox

Принесите остальную музыку сюда

Плагин приносит в rox один внешний источник музыки. rox просматривает этот источник, ищет по нему, играет без пауз и сохраняет то, что вы попросите, в тех же панелях и той же очереди, что и файлы на вашем диске.

Что такое плагин

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

То, что умеет плагин, — короткий список: листать и искать по каталогу, синхронизировать коллекции в медиатеку, отдавать звук, вести радио, вести на свои собственные веб-страницы и добавлять готовые панели под своим именем. Он не может добавлять кнопки, менять внешний вид rox или лезть в другие панели. Плагины приносят источники, а плеер вокруг них остаётся плеером rox.

Просмотр источника

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

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

Плагин-пример Internet Archive в панели Внешние источники: уведомление сверху, строки для просмотра, полки обложек релизов и столбцы загрузок и года.
Пример Internet Archive, просматривающий релизы Creative Commons из коллекции нетлейблов Archive. Он лежит в репозитории rox, готовый к копированию.

Воспроизведение и сохранение

Треки плагина попадают в очередь, плейлисты и историю, как ваши собственные файлы, и играют без пауз один за другим. Трек, оборвавшийся на середине, переподключается и продолжает с того же места. У живого потока от плагина есть пауза и буфер перемотки, как у радиостанции.

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

Открыть в браузере и Копировать ссылку ведут на страницу трека или альбома на сервисе, из любого места, где его треки показаны в rox. Скробблинг выключен, если плагин сам его не попросит, и тогда это переключатель в строке плагина.

Радио

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

Треки радио играют через собственный движок rox, как любой другой трек. Они не входят в медиатеку, станция пропускает то, что уже играло в этой сессии, и продолжает после перезапуска. Выключите Продолжать играть в Настройки > Воспроизведение, и очередь остановится в конце.

Что вы одобряете

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

Одобрение покрывает ровно те файлы, что лежат в папке плагина. Если хоть один из них меняется, плагин сам выключается и показывает Изменён на диске, пока вы не одобрите его снова, и тогда карточка показывает, что изменилось в его манифесте. Удалить на странице плагинов убирает треки плагина, синхронизированные коллекции, настройки и одобрение, но оставляет его папку на месте.

Напишите свой

Плагин говорит на JSON-RPC, по одному сообщению на строку через стандартные ввод и вывод, так что подойдёт любой язык, умеющий читать и писать строки. Руководство по плагинам описывает манифест, каждый метод, тайм-ауты и то, как звук доходит до плеера. Кнопка Руководство по плагинам на странице плагинов открывает его для той версии, что у вас стоит.

В репозитории два примера. tones генерирует синусоидальные тона и аккорды, и это тот, на котором учат протокол. Internet Archive использует каждую необязательную часть протокола на настоящем каталоге: домашние полки, виды, столбцы, радио и ссылки, на Python и без ничего, кроме стандартной библиотеки.

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

Где плагины останавливаются

Попробуйте один

Скачайте rox, включите Включить плагины в Настройки > Плагины, и скопируйте пример Internet Archive в папку плагинов. Нужна сеть и не нужен аккаунт.