ScrobblerServer, un serveur de « scrobbles »

Posté par  (site web personnel) . Édité par Nÿco, Benoît Sibaud et Florent Zara. Modéré par Florent Zara. Licence CC By‑SA.
Étiquettes :
7
3
mai
2013
Audiovisuel

kaliko a commencé il y a quelque temps l'écriture d'un petit serveur [scserver] sous licence GPLv3 lui permettant d'enregistrer ses habitudes d'écoute de la musique. Dans le jargon de last.fm, on appelle cela un serveur de scrobble (cf. audioscrobbler pour plus d'information), un scrobble étant simplement l'unité atomique d'information enregistrée par le serveur, à savoir un titre (nom, artiste, album, etc.) associé une date et un auditeur.

NdM : merci à kaliko pour son journal.

Historique

Avant que kaliko débute ce serveur, le projet gnu.fm (l'applicatif derrière libre.fm) est apparu, se voulant une alternative libre à last.fm. Cependant, outre le fait que le projet semble au point mort, les différents choix techniques initiaux et l'évolution du projet ne convenaient pas vraiment à son besoin ou à ce qu'il attendait d'une alternative FLOSS à last.fm.

Libre.fm s'est clairement positionné comme alternative à last.fm ; entre autres, même API et la possibilité d'écouter et de découvrir de la musique. Le frontal web Nixtape et le serveur GNUkebox qui forment la solution gnu.fm n'étaient pas vraiment dissociables à l'époque. Le choix de PHP comme langage était justifié pour faciliter le déploiement de la solution.

ScrobblerServer

Son besoin dans un premier temps était bien plus simple, il voulait pouvoir enregistrer un historique de ses écoutes de musique et produire des statistiques à partir de cette base. La partie « réseautage social » de last.fm/libre.fm n'est pas un objectif prioritaire, il voulait cependant une solution multi-utilisateur. Au delà des polémiques quant à PHP, il n'a pas d'expertise dans ce langage et pas l'envie d'en développer une, il préférait partir sur une solution Python, grâce à un autre projet lié à last.fm lui aussi, MPD Sima, un client utilitaire pour MPD.

Il a donc débuté l'écriture de ScrobblerServer avec Django 1.4. Il s'agissait dans un premier temps de faire une preuve de concept simple et de me familiariser avec le web et l'écriture d'une API.

Les spécifications sont les suivantes :

  • Un interface REST avec le serveur
  • Authentification HTTP de base, pas de compatibilité avec l'API last.fm
  • Multi-utilisateur et indépendance vis à vis du lecteur utilisé
  • Servir les statistiques rudimentaires, c'est-à-dire artistes|titres les plus joués sur une période de temps définie

En l'état le serveur expose une API complète (scapi) permettant de soumettre ses scrobbles, récupérer son historique d'écoutes et quelques statistiques. Le choix de l'authentification HTTP simple impose bien évidement le déploiement du serveur sur une connexion chiffrée TLS pour éviter de voir vos identifiants circuler en clair (non critique sur un LAN domestique cependant).

L'interface web (navigable) est rudimentaire et non stylée, elle permet simplement de contrôler que le serveur fonctionne, de consulter ses derniers scrobbles ou de changer de mot de passe. La création des utilisateurs se fait via l'interface d'administration de django par l'administrateur de l'application.

Ce projet est artisanal, n'étant pas développeur et connaissant assez peu le web (ie. soyez indulgents avec le code), vous ne trouverez pas là un joyau de technologie web x.y, mais un simple petit serveur permettant de jouer avec ses habitudes d'écoute. Je n'ai pas de feuille de route précise sur ce projet, je voulais cependant le confronter à la communauté. Dans un premier temps pour avoir des retours mais aussi pour partager l'application avec d'autres personnes qui comme moi auraient en vain cherché un serveur du genre sans trouver de projet à leur goût.

Puisse scrobblerserver être utile à d'autres.

Les possibles futurs :

  • utiliser Tastypie pour construire l'API (et potentiellement supporté l'API last.fm afin d'hériter simplement des clients existants).
  • faire des affichages des statistiques du type streamgraph
  • écrire de simple client web html/javascript pour l'affichage des statistiques
  • pas de futur est aussi une possibilité…

Aller plus loin

  • # Où est l'effet réseau ?

    Posté par  (site web personnel) . Évalué à 1.

    Pour moi, l'intérêt principal de la journalisation des écoutes musicales est la découverte de nouvelles pistes par comparaison aux habitudes d'autres auditeurs. Cette activité a donc une utilité croissante avec le carré du nombre d'utilisateurs - l'effet réseau commun à toutes les communautés. Quelle est alors l'intérêt d'un serveur isolé ? A moins qu'un système permette à un serveur de s'enregistrer auprès d'un collecteur de statistiques globales d'écoute qui servira aux utilisateurs des recommandations d'écoute.

    • [^] # Re: Où est l'effet réseau ?

      Posté par  (site web personnel) . Évalué à 3.

      J'ai bien conscience de l'intérêt de mutualiser et capitaliser ce genre d'information, je développe MPD_sima qui s'appuie justement sur la base de donnée de last.fm qui est construite à partir des statistiques d'écoute.

      Comme précisé dans la dépêche, l'aspect social de last.fm n'est pas du tout présent sur scrobblerserver. Le but premier était la génération d'un log d'écoute et de statistiques, pas l'aspect social de last.fm (avec entres autre la découverte de musique, l’intelligence collective etc…). Mon objectif dans un premier temps était de reprendre le contrôle de nos données. Cependant le développement du réseautage social peut s'appuyer sur une brique comme scrobblerserver. Comme tu précises dans ton commentaire, il pourrait exister une solution de fédération de scrobbler (le mien et d'autres) à l'image de ce qui existe pour le mail, le micro-blogging (status.net), la messagerie instantannée (xmpp), etc…

      Ces évolutions sont bien plus conséquentes en termes de développement (définition d'un protocole entres autres), de plus elles demandent la création et la gestion d'une communauté autour du projet, ce qui est délicat à mener àmha (cf. libre.fm). Hors ce second point est critique dès qu'il s'agit de sollicité l'effet réseau.

      Bref, c'est une évolution très intéressante et ambitieuse pour le projet. On peut voir cette initiative, celle de libre.fm et d'autres dont je n'ai pas connaissance comme des amorces pour créer de véritables alternatives ouvertes et décentralisées à last.fm.

      • [^] # Re: Où est l'effet réseau ?

        Posté par  (site web personnel) . Évalué à 2.

        Oui, je pensais fortement à un système fédéré qui libérerait les utilisateurs de l'insularité du scrobbling - mais comme l'ont montré les fédérations de microblogging, la résolution du problème technique n'est que le premier pas : atteindre une masse critique sociale est un défi d'une toute autre ampleur. Enfin tu as déjà la première pierre de l'édifice - un bon début !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.