rox

Fais entrer le reste de ta musique

Un plugin apporte une source musicale extérieure dans rox. rox parcourt cette source, la cherche, la lit sans blanc et garde ce que tu lui demandes, dans les mêmes panneaux et la même file d'attente que les fichiers de ton disque.

Ce qu'est un plugin

Un plugin est un dossier contenant un petit manifeste et un programme. Le programme peut être un script Python ou un binaire natif, et il parle à rox par son entrée et sa sortie standard. rox le lance la première fois que quelque chose en a besoin et le redémarre s'il plante. Cinq plantages en dix minutes l'arrêtent jusqu'à ce que tu le désactives puis le réactives.

Ce qu'un plugin peut faire tient en une courte liste : lister et chercher dans un catalogue, synchroniser des collections dans ta bibliothèque, servir de l'audio, faire tourner une radio, renvoyer vers ses propres pages web, et ajouter des panneaux prédéfinis sous son nom. Il ne peut pas ajouter de boutons, changer l'apparence de rox ni toucher aux autres panneaux. Les plugins apportent des sources, et le lecteur autour reste entièrement celui de rox.

Parcourir une source

Chaque plugin actif obtient une entrée sous Ajouter un panneau > Plugins, qui ouvre un panneau Sources externes sur sa source. Le panneau liste les dossiers, playlists et albums du plugin, cherche, affiche les pochettes et en charge davantage au défilement. La page d'accueil d'un service figure au premier niveau du panneau, donc elle est là sans un clic.

Ce que le panneau montre d'autre dépend du plugin. Des puces au-dessus d'une liste basculent entre les vues du plugin, comme une recherche limitée aux albums. Des étagères de pochettes défilent latéralement, et une page qui n'a que des pochettes se replie en grille. Des colonnes que le service connaît et que tes tags ignorent, comme un nombre de téléchargements, se trient d'un clic sur leur en-tête. Pendant qu'une piste du plugin joue, le premier niveau la montre avec ce qui vient ensuite.

Le plugin d'exemple Internet Archive dans un panneau Sources externes : un avis en haut, des lignes à parcourir, des étagères de pochettes de sorties, et des colonnes de téléchargements et d'année.
L'exemple Internet Archive, parcourant des sorties Creative Commons de la collection de netlabels de l'Archive. Il est dans le dépôt de rox, prêt à copier.

Lire et garder

Les pistes d'un plugin vont dans la file d'attente, les playlists et l'historique comme tes propres fichiers, et se lisent sans blanc à la suite. Une piste qui coupe en cours de route se reconnecte et reprend au même endroit. Un flux en direct venu d'un plugin obtient la pause et le tampon direct, comme une station de radio.

Lire une piste ne l'ajoute pas à ta bibliothèque, c'est Ajouter à la bibliothèque qui la garde. Survole une collection et clique sur sa coche pour garder toute la collection. Elle se synchronise dans ta bibliothèque, suit la collection quand elle change, et s'ouvre depuis là même avec le plugin arrêté ou le réseau coupé.

Ouvrir dans le navigateur et Copier le lien mènent à la page d'une piste ou d'un album sur le service, depuis n'importe où ses pistes apparaissent dans rox. Le scrobbling est désactivé sauf si le plugin le demande, et c'est alors un interrupteur sur la ligne du plugin.

Radio

Un plugin avec une radio ajoute Lire des pistes proches à ses pistes, albums, playlists et artistes. Un album, une playlist ou un artiste joue d'abord ses propres pistes, alors qu'une piste sert seulement de point de départ à la station et n'y est pas lue. Les choix du service alimentent ensuite la file d'attente à mesure qu'elle se vide. La lecture aléatoire passe sur Proches, et pour les pistes du plugin elle se passe de l'analyse acoustique de ta bibliothèque. Un album que tu lis depuis le panneau continue de la même façon à sa fin, au lieu de basculer sur ta bibliothèque locale.

Les pistes de la radio se lisent via le moteur propre de rox comme n'importe quelle autre piste. Elles ne rejoignent pas ta bibliothèque, la station saute ce qui a déjà joué dans la session, et elle continue après un redémarrage. Désactive Continuer la lecture dans Réglages > Lecture et la file d'attente s'arrête à sa fin.

Ce que tu approuves

Un nouveau plugin apparaît désactivé. L'activer, c'est l'approuver, et la carte que tu confirmes dit ce qu'est le plugin, ce qu'il peut faire, quels programmes il lui faut, et qu'il s'exécute comme un programme sur ton ordinateur avec tes droits.

L'approbation couvre exactement les fichiers du dossier du plugin. Si l'un d'eux change, le plugin se désactive de lui-même et affiche Modifié sur le disque jusqu'à ce que tu l'approuves à nouveau, et la carte montre alors ce qui a changé dans son manifeste. Retirer sur la page Plugins supprime les pistes, les collections synchronisées, les réglages et l'approbation du plugin, et laisse son dossier tranquille.

Écris le tien

Un plugin parle JSON-RPC, un message par ligne sur l'entrée et la sortie standard, donc n'importe quel langage qui lit et écrit des lignes fait l'affaire. Le guide des plugins couvre le manifeste, chaque méthode, les délais et comment l'audio atteint le lecteur. Le bouton Guide des plugins sur la page Plugins l'ouvre pour la version que tu utilises.

Deux exemples sont dans le dépôt. tones génère des tonalités sinusoïdales et des accords, c'est celui pour apprendre le protocole. Internet Archive utilise chaque partie optionnelle contre un vrai catalogue, avec étagères d'accueil, vues, colonnes, radio et liens, en Python sans rien de plus que la bibliothèque standard.

Le mode développeur sur la ligne d'un plugin approuve tes propres modifications de son dossier jusqu'à ce que tu quittes rox, et redémarre le plugin à chaque sauvegarde. Chaque nouvelle partie du protocole est optionnelle. rox liste celles qu'il prend en charge au démarrage du plugin, un plugin n'a donc jamais besoin d'envoyer quelque chose qu'un rox plus ancien refuserait.

Où les plugins s'arrêtent

Essaies-en un

Télécharge rox, active Activer les plugins dans Réglages > Plugins, et copie l'exemple Internet Archive dans le dossier des plugins. Il a besoin du réseau et d'aucun compte.