rox

Hol dir den Rest deiner Musik dazu

Ein Plugin bringt eine Musikquelle von außen in rox. rox durchsucht diese Quelle, sucht in ihr, spielt sie lückenlos ab und behält, was du ihm sagst, in denselben Panels und derselben Warteschlange wie die Dateien auf deiner Platte.

Was ein Plugin ist

Ein Plugin ist ein Ordner mit einem kleinen Manifest und einem Programm. Das Programm kann ein Python-Skript oder eine native Binärdatei sein, und es spricht mit rox über seine Standardein- und -ausgabe. rox startet es, sobald es zum ersten Mal gebraucht wird, und startet es neu, wenn es abstürzt. Fünf Abstürze in zehn Minuten stoppen es, bis du es aus- und wieder einschaltest.

Was ein Plugin kann, ist eine kurze Liste: einen Katalog auflisten und durchsuchen, Sammlungen in deine Bibliothek synchronisieren, Audio ausliefern, ein Radio betreiben, auf eigene Webseiten verlinken und vorgefertigte Panels unter seinem Namen hinzufügen. Es kann keine Knöpfe hinzufügen, das Aussehen von rox ändern oder in andere Panels hineinreichen. Plugins bringen Quellen herein, und der Player drumherum bleibt ganz rox selbst.

Eine Quelle durchsuchen

Jedes laufende Plugin bekommt einen Eintrag unter Panel hinzufügen > Plugins, der ein Externe-Quellen-Panel auf seiner Quelle öffnet. Das Panel listet die Ordner, Playlists und Alben des Plugins auf, sucht, zeigt Cover und lädt beim Scrollen nach. Die Startseite eines Dienstes steht auf der obersten Ebene des Panels, also ohne einen Klick schon da.

Was das Panel sonst noch zeigt, hängt vom Plugin ab. Chips über einer Liste wechseln zwischen den Ansichten des Plugins, etwa Suche auf Alben eingeschränkt. Regale aus Covern scrollen seitwärts, und eine Seite aus nichts als Covern wird zu einem Raster. Spalten, die der Dienst kennt und deine Tags nicht, etwa eine Downloadzahl, sortieren sich mit einem Klick auf die Überschrift. Während einer der Titel des Plugins läuft, zeigt die oberste Ebene ihn zusammen mit dem, was als Nächstes kommt.

Das Internet-Archive-Beispiel-Plugin in einem Externe-Quellen-Panel: ein Hinweis oben, Zeilen zum Durchsuchen, Regale aus Release-Covern, und Spalten für Downloads und Jahr.
Das Internet-Archive-Beispiel, beim Durchsuchen von Creative-Commons-Veröffentlichungen aus der Netlabels-Sammlung des Archivs. Es liegt im Repository von rox, bereit zum Kopieren.

Abspielen und behalten

Titel aus Plugins landen in der Warteschlange, in Playlists und im Verlauf wie deine eigenen Dateien und laufen lückenlos hintereinander. Ein Titel, der mittendrin abbricht, verbindet sich neu und macht an derselben Stelle weiter. Ein Livestream aus einem Plugin bekommt Pause und den Live-Puffer, wie eine Station.

Einen Titel abzuspielen fügt ihn nicht zur Bibliothek hinzu, das macht Zur Bibliothek hinzufügen. Fahr über eine Sammlung und klick auf ihr Häkchen, um die ganze Sammlung zu behalten. Sie synchronisiert sich in deine Bibliothek, folgt der Sammlung, wenn sie sich ändert, und öffnet sich von dort aus auch bei gestopptem Plugin oder ohne Netzwerk.

Im Browser öffnen und Link kopieren führen zur Seite eines Titels oder Albums beim Dienst, von überall dort, wo seine Titel in rox auftauchen. Scrobbling ist aus, außer das Plugin fragt danach, dann ist es ein Schalter in der Zeile des Plugins.

Radio

Ein Plugin mit Radio fügt Ähnliches abspielen zu seinen Titeln, Alben, Playlists und Künstlern hinzu. Ein Album, eine Playlist oder ein Künstler spielt zuerst die eigenen Titel, ein Titel dagegen dient der Station nur als Ausgangspunkt und läuft selbst nicht mit. Danach hält die Auswahl des Dienstes die Warteschlange am Laufen, wenn sie zur Neige geht. Die Zufallswiedergabe wechselt auf Ähnlich, und für die Titel des Plugins braucht sie dafür keine Klanganalyse deiner Bibliothek. Ein Album, das du aus dem Panel abspielst, geht am Ende genauso weiter, statt in deine lokale Bibliothek überzugehen.

Die Titel des Radios laufen über die eigene Engine von rox wie jeder andere Titel. Sie kommen nicht in deine Bibliothek, die Station überspringt, was in dieser Sitzung schon lief, und macht nach einem Neustart weiter. Schalte Weiterspielen in Einstellungen > Wiedergabe aus, und die Warteschlange stoppt an ihrem Ende.

Was du damit freigibst

Ein neues Plugin taucht ausgeschaltet auf. Es einzuschalten ist die Freigabe, und die Karte, die du bestätigst, sagt, was das Plugin ist, was es kann, welche Programme es braucht, und dass es als Programm auf deinem Computer mit deinen Rechten läuft.

Die Freigabe gilt genau für die Dateien im Ordner des Plugins. Ändert sich eine davon, schaltet sich das Plugin selbst aus und zeigt Auf der Festplatte geändert, bis du es erneut freigibst, und die Karte zeigt dann, was sich in seinem Manifest geändert hat. Entfernen auf der Plugins-Seite löscht die Titel, synchronisierten Sammlungen, Einstellungen und die Freigabe des Plugins und lässt seinen Ordner in Ruhe.

Schreib dein eigenes

Ein Plugin spricht JSON-RPC, eine Nachricht pro Zeile über Standardein- und -ausgabe, also reicht jede Sprache, die Zeilen liest und schreibt. Die Plugin-Anleitung behandelt das Manifest, jede Methode, die Timeouts und wie Audio den Player erreicht. Der Knopf „Plugin-Anleitung“ auf der Plugins-Seite öffnet sie für die Version, die bei dir läuft.

Zwei Beispiele liegen im Repository. tones erzeugt Sinustöne und Akkorde und ist das Beispiel zum Lernen des Protokolls. Internet Archive nutzt jeden optionalen Teil davon an einem echten Katalog, mit Home-Regalen, Ansichten, Spalten, Radio und Links, in Python ohne mehr als die Standardbibliothek.

Entwicklermodus in der Zeile eines Plugins gibt eigene Änderungen an seinem Ordner frei, bis rox beendet wird, und startet das Plugin bei jedem Speichern neu. Jeder neuere Teil des Protokolls ist opt-in. rox listet beim Start des Plugins auf, welche es unterstützt, ein Plugin muss also nie etwas schicken, das ein älteres rox ablehnen würde.

Wo Plugins aufhören

Probier eins aus

Lad dir rox herunter, schalte Plugins aktivieren in Einstellungen > Plugins ein und kopier das Internet-Archive-Beispiel in den Plugins-Ordner. Es braucht das Netzwerk und kein Konto.