Принесите остальную музыку сюда
Плагин приносит в rox один внешний источник музыки. rox просматривает этот источник, ищет по нему, играет без пауз и сохраняет то, что вы попросите, в тех же панелях и той же очереди, что и файлы на вашем диске.
Что такое плагин
Плагин — это папка с небольшим манифестом и программой. Программа может быть скриптом на Python или нативным бинарником, и она говорит с rox через свои стандартные ввод и вывод. rox запускает её в первый раз, когда она понадобится, и перезапускает при падении. Пять падений за десять минут останавливают её, пока вы не выключите и снова не включите плагин.
То, что умеет плагин, — короткий список: листать и искать по каталогу, синхронизировать коллекции в медиатеку, отдавать звук, вести радио, вести на свои собственные веб-страницы и добавлять готовые панели под своим именем. Он не может добавлять кнопки, менять внешний вид rox или лезть в другие панели. Плагины приносят источники, а плеер вокруг них остаётся плеером rox.
Просмотр источника
У каждого запущенного плагина появляется пункт в Добавить панель > Плагины, который открывает панель Внешние источники для его источника. Панель перечисляет папки, плейлисты и альбомы плагина, ищет, показывает обложки и подгружает ещё по мере прокрутки. Домашняя страница сервиса стоит на верхнем уровне панели, так что она там без единого клика.
Что ещё показывает панель, зависит от плагина. Чипы над списком переключают между видами плагина, например поиск, суженный до альбомов. Полки обложек прокручиваются вбок, а страница из одних обложек сворачивается в сетку. Столбцы, которые знает сервис, а ваши теги нет, например число загрузок, сортируются кликом по заголовку. Пока играет один из треков плагина, верхний уровень показывает его вместе с тем, что следующее.

Воспроизведение и сохранение
Треки плагина попадают в очередь, плейлисты и историю, как ваши собственные файлы, и играют без пауз один за другим. Трек, оборвавшийся на середине, переподключается и продолжает с того же места. У живого потока от плагина есть пауза и буфер перемотки, как у радиостанции.
Воспроизведение трека не добавляет его в медиатеку, это делает Добавить в медиатеку. Наведите на коллекцию и нажмите на её галочку, чтобы сохранить целиком. Она синхронизируется в медиатеку, следует за коллекцией по мере её изменений и открывается оттуда, даже когда плагин остановлен или сеть недоступна.
Открыть в браузере и Копировать ссылку ведут на страницу трека или альбома на сервисе, из любого места, где его треки показаны в rox. Скробблинг выключен, если плагин сам его не попросит, и тогда это переключатель в строке плагина.
Радио
Плагин с радио добавляет Воспроизвести похожее к своим трекам, альбомам, плейлистам и исполнителям. Альбом, плейлист или исполнитель сначала играет свои треки, а трек служит станции только отправной точкой и сам в ней не звучит. Затем выбор сервиса продолжает очередь по мере того, как она заканчивается. Перемешивание переключается на Похожие, и для треков плагина ему не нужен акустический анализ вашей медиатеки. Альбом, который вы включили из панели, продолжается так же по окончании, вместо перехода в вашу локальную медиатеку.
Треки радио играют через собственный движок rox, как любой другой трек. Они не входят в медиатеку, станция пропускает то, что уже играло в этой сессии, и продолжает после перезапуска. Выключите Продолжать играть в Настройки > Воспроизведение, и очередь остановится в конце.
Что вы одобряете
Новый плагин появляется выключенным. Включение и есть одобрение, и карточка, которую вы подтверждаете, говорит, что это за плагин, что он умеет, какие программы ему нужны, и что он работает как программа на вашем компьютере с вашими правами.
Одобрение покрывает ровно те файлы, что лежат в папке плагина. Если хоть один из них меняется, плагин сам выключается и показывает Изменён на диске, пока вы не одобрите его снова, и тогда карточка показывает, что изменилось в его манифесте. Удалить на странице плагинов убирает треки плагина, синхронизированные коллекции, настройки и одобрение, но оставляет его папку на месте.
Напишите свой
Плагин говорит на JSON-RPC, по одному сообщению на строку через стандартные ввод и вывод, так что подойдёт любой язык, умеющий читать и писать строки. Руководство по плагинам описывает манифест, каждый метод, тайм-ауты и то, как звук доходит до плеера. Кнопка Руководство по плагинам на странице плагинов открывает его для той версии, что у вас стоит.
В репозитории два примера. tones генерирует синусоидальные тона и аккорды, и это тот, на котором учат протокол. Internet Archive использует каждую необязательную часть протокола на настоящем каталоге: домашние полки, виды, столбцы, радио и ссылки, на Python и без ничего, кроме стандартной библиотеки.
Режим разработчика в строке плагина одобряет ваши собственные правки в его папке до выхода из rox и перезапускает плагин при каждом сохранении. Каждая более новая часть протокола необязательна. rox перечисляет те, что поддерживает, когда плагин запускается, так что плагину никогда не придётся посылать то, что более старый rox отверг бы.
Где плагины останавливаются
- Плагины приносят источники и больше ничего. У компонента foobar2000, который менял сам плеер, например новую панель или DSP, нет аналога среди плагинов.
- Плагинам-скриптам нужен Python 3 на машине. У большинства установок Linux он есть, а у Windows и macOS обычно нет.
- Flatpak не видит программы, установленные в хост-системе. Он включает Python 3, так что плагин, которому нужна только стандартная библиотека, работает как есть. Всё остальное должно идти в собственной папке
binплагина. - Приложение Mac, запущенное из Finder или Dock, не получает PATH вашей оболочки, так что программы, поставленные через Homebrew, выглядят отсутствующими, пока вы не добавите папку Homebrew в Папки программ в Настройки > Плагины.
- В Windows файлы нативного плагина нельзя заменить, пока он работает. Выключите его перед обновлением папки.
Попробуйте один
Скачайте rox, включите Включить плагины в Настройки > Плагины, и скопируйте пример Internet Archive в папку плагинов. Нужна сеть и не нужен аккаунт.