Museria - stockage de musique décentralisé

Museria - stockage de musique décentralisé

Un jour, j'ai décidé d'écrire une application pour sélectionner moi-même de la musique et l'écouter à la maison/dans la rue/à l'entraînement, etc. Et pour que tout cela se déroule de manière fluide, avec une participation minimale de ma part. J’ai imaginé une architecture, esquissé un prototype et finalement je me suis heurté à un « petit problème ».

Et on ne sait pas où trouver les fichiers de chansons eux-mêmes. À ce moment-là, VKontakte avait déjà fermé l'API, sur les grands portails musicaux, tout était également mis en sourdine, même les chansons étaient distribuées en morceaux afin de ne pas être analysées. Il ne restait plus que quelques sites isolés avec une tonne de publicité et toutes sortes d'ordures, toutes sortes de programmes de capture douteux et d'autres options « sales ». En général, pas une seule bonne solution. Vous pouvez bien sûr acheter un abonnement à de la musique Yandex ou autre. Mais encore une fois, il n’existe aucune API publique ouverte et vous n’avez pas accès à la musique par programmation. Plusieurs grandes entreprises ont essentiellement restreint l'accès des autres à la musique. Pourquoi est-ce arrivé ? En creusant plus profondément, il est devenu clair que le principal problème était le droit d’auteur. La solution actuelle sous forme d’abonnements convient à de nombreux auteurs de musique commerciaux et à ces mêmes sociétés. Dans le même temps, la musique non commerciale et semi-commerciale entre également dans la liste générale. Soit vous payez tout, soit vous n'écoutez rien du tout.

Et j'ai commencé à réfléchir à quoi faire avec tout cela. Comment organiser la distribution gratuite de la musique ? Que ferais-je si je créais moi-même de la musique et que je voulais en tirer profit ? Est-ce que j’aimerais que mes chansons soient piratées ? Quelle solution alternative existe-t-il de toute façon ?

En conséquence, deux problèmes principaux doivent être résolus :

  • Organisation de la distribution gratuite de musique en utilisant des méthodes convenant à la plupart des gens, y compris des logiciels.
  • Offrir des alternatives aux créateurs de musique pour gagner de l'argent

Stockage de musique décentralisé mondial

Au départ, j'ai essayé de trouver des solutions existantes et de tout créer sur cette base. Après quelques temps de recherche, le premier que j'ai aimé était ipfs. J'ai commencé à mettre en œuvre mon idée, mais au bout d'un moment, j'ai découvert plusieurs problèmes critiques dans cette solution :

  • Ipfs - stockage pour tout et pour tout le monde. Il y a des images, de la musique, des vidéos et tout ce que vous voulez. En général, une si grande «poubelle» planétaire. Par conséquent, lorsque vous lancez votre nœud, vous recevez immédiatement une charge énorme. La voiture se tord de douleur.
  • Une sorte de mécanisme de collecte des « déchets » inachevé. Je ne sais pas comment ça se passe maintenant, mais à ce moment-là, si vous écriviez dans la configuration que vous vouliez limiter le stockage à dix gigaoctets de données, cela ne voulait rien dire. Le stockage a augmenté, ignorant de nombreux paramètres de configuration. En conséquence, il était nécessaire de disposer d'une énorme réserve de disque dur jusqu'à ce que ipfs comprenne comment réinitialiser les éléments inutiles.
  • Au moment de l'utilisation de la bibliothèque (je ne sais pas comment c'est maintenant), le client n'avait pas de délai d'attente implémenté. Vous envoyez une demande pour recevoir un fichier, et s'il n'existe pas, vous vous bloquez simplement. Bien sûr, les gens ont trouvé toutes sortes de solutions qui ont partiellement résolu le problème, mais ce n’étaient que des béquilles. Ces choses devraient sortir des sentiers battus.

Il y avait encore de nombreux problèmes mineurs, et l'impression était claire : cela ne pouvait pas être utilisé pour le projet. J'ai continué à chercher une installation de stockage, en explorant différentes options, mais je n'ai jamais rien trouvé de convenable.

En fin de compte, j'ai décidé que cela valait la peine d'essayer d'écrire moi-même un stockage décentralisé. Même s’il ne prétend pas être interplanétaire, il résoudra un problème précis.

Et c'est ainsi qu'il s'est avéré tartinable, stockage, métastole, musée, museria-global.

tartinable - il s'agit de la couche principale la plus basse qui vous permet de combiner des nœuds en un réseau. Il contient un algorithme que j'ai jusqu'à présent implémenté en partie sur environ 10000 XNUMX serveurs. La version complète de l’algorithme est beaucoup plus difficile à mettre en œuvre et nécessiterait plusieurs mois supplémentaires (voire plus).

Je ne décrirai pas le tartinable en détail dans cet article ; il vaut mieux en écrire un séparé un jour. Ici, je noterai simplement quelques fonctionnalités :

  • Fonctionne via http/https.
  • Vous pouvez créer un réseau distinct pour une tâche spécifique, ce qui réduira considérablement la charge sur chaque projet individuel par rapport à s'ils étaient tous sur le même réseau.
  • Un mécanisme avec des délais d'attente et d'autres petites choses a été initialement pensé. Et cela fonctionne pour toutes les méthodes à la fois dans le client et dans le nœud. Vous pouvez gérer les paramètres de manière flexible depuis votre application.
  • La bibliothèque est écrite en nodejs. Les problèmes de performances de la pile sont compensés par sa nature décentralisée. La charge peut être « répartie » en augmentant le nombre de nœuds. En contrepartie, les avantages sont nombreux : une immense communauté, une simplicité et une facilité d'utilisation, un client isomorphe, pas de dépendances externes, etc.

stockage est une couche héritée du spreadable qui permet de stocker des fichiers sur le réseau. Chaque fichier possède son propre hachage de son contenu, qui peut être utilisé pour le récupérer ultérieurement. Les fichiers ne sont pas divisés en blocs, mais sont entièrement stockés.

métastole - une couche héritée du spreadable, qui permet de stocker des données sur le réseau, mais pas des fichiers. L'interface est similaire à une base de données Nosql. Vous pouvez, par exemple, ajouter un fichier au stockage, obtenir son hachage et l'écrire dans le métastocle avec un lien vers quelque chose.

musée - hérité du storacle et du métastocle. Cette couche est directement responsable du stockage de la musique. Le stockage fonctionne uniquement avec les fichiers mp3 et les balises id3.

Comme « clé » de la chanson, son nom complet est utilisé sous la forme Artiste (TPE1) - Titre (TIT2). Par exemple:

  • Brimstone - Le fardeau
  • Hi-rez - Lost My Way (feat. Emilio Rojas, Dani Devinci)

Vous pouvez découvrir de manière aussi détaillée que possible comment les titres des chansons sont formés. ici. Il faut regarder la fonction utils.beautifySongTitle().

Le pourcentage de correspondances défini dans les paramètres du nœud est considéré comme une correspondance. Par exemple, une valeur de 0.85 signifie que si la fonction de comparaison clé (noms des chansons) a trouvé une similitude de plus de 85 %, alors il s'agit de la même chanson.

L'algorithme pour déterminer la similarité est là, dans la fonction utils.getSongSimilarity().

La reprise de la chanson, pour une réception ultérieure, peut également être attachée via des tags (APIC). Les utilitaires disposent de toutes les méthodes nécessaires pour recevoir et traiter les balises.

Un exemple de travail avec le stockage via un client peut être trouvé dans readme.

Toutes les couches ci-dessus sont autonomes et peuvent être utilisées séparément comme couches inférieures pour d'autres projets. Par exemple, il existe déjà une idée pour créer un calque pour stocker des livres.

museria-global est un référentiel git déjà configuré pour lancer votre propre nœud dans le réseau musical mondial. Clonage npm je && npm commencez et c'est essentiellement tout. Vous pouvez le configurer plus en détail, l'exécuter dans Docker, etc. Des informations détaillées sont disponibles sur githabé.

Lorsque le référentiel est mis à jour, vous devez mettre à jour votre nœud. Si le numéro de version majeure ou mineure change, alors cette action est obligatoire, sinon les anciens nœuds seront ignorés par le réseau.

Vous pouvez travailler avec des chansons manuellement et par programme. Chaque nœud exécute un serveur pour différentes tâches. Y compris, lorsque vous visitez le point de terminaison par défaut, vous recevrez une interface pour travailler avec de la musique. Par exemple, vous pouvez aller sur Noeud principal (le lien ne sera peut-être plus pertinent plus tard, les nœuds d'entrée peuvent également être obtenus dans télégramme, ou recherchez des mises à jour sur Github).

De cette façon, vous pouvez rechercher et télécharger des chansons sur le stockage. Le téléchargement de chansons peut s'effectuer selon deux modes : normal et modéré. Le deuxième mode signifie que le travail est effectué par une personne et non par un programme. Et si vous cochez cette case lors de l'ajout, vous devrez résoudre le captcha. Les chansons peuvent être ajoutées avec des priorités -1, 0 ou 1. La priorité 1 ne peut être définie qu'en mode modéré. Des priorités sont nécessaires pour que le stockage puisse décider plus efficacement quoi faire lorsque vous essayez de remplacer une chanson existante par une nouvelle. Plus la priorité est élevée, plus vous risquez d'écraser un fichier existant. Cela aide à lutter contre le spam et augmente la qualité des chansons téléchargées.

Si vous commencez à ajouter des chansons à votre stockage, essayez de joindre des images (couverture), bien que ce champ ne soit pas obligatoire. Dans 99 % des cas, les premières images sur Google basées sur les titres des chansons sont des pochettes d'album.

Comment se produit techniquement l’ajout de fichiers, en un mot :

  • Le client reçoit l'adresse d'un nœud libre, qui deviendra temporairement coordinateur.
  • La fonction d'ajout d'une chanson est déclenchée (par une personne ou un code), et une demande est faite pour ajouter un coordinateur au point final.
  • Le coordinateur calcule combien de doublons doivent être stockés (paramètre configurable).
  • Les nœuds les plus adaptés à la sauvegarde sont recherchés.
  • Le fichier va directement à ces nœuds.

Comment techniquement les fichiers sont reçus :

  • Le client reçoit l'adresse d'un nœud libre, qui deviendra temporairement coordinateur.
  • La fonction de réception d'une chanson (par une personne ou un code) est déclenchée et une demande est faite pour la recevoir au niveau du point final du coordinateur.
  • Le coordinateur vérifie la présence du lien dans le cache. S'il y en a un et qu'il fonctionne, il est immédiatement renvoyé au client, sinon les nœuds sont interrogés sur leur disponibilité.
  • Le fichier est reçu à partir du lien, s'il en est trouvé un.

Alternatives pour les créateurs de musique

J'ai toujours été intéressé par la question de savoir comment évaluer objectivement la valeur de nombreuses œuvres créatives ? Pourquoi, par exemple, une personne propose-t-elle son album de musique à 10 $ ? Soit pour 20 $, soit 100 $. Où est l'algorithme ? Lorsque, par exemple, nous parlons d'un produit physique, ou même de plusieurs types de services, nous pouvons au moins calculer le coût et partir de là.

D'accord, disons que nous parions 10 $. Est-ce très efficace ? Disons que j'ai écouté un album quelque part ou une chanson de là-bas et que j'ai décidé de montrer ma gratitude. Mais selon mon ressenti et mes propres capacités, 3$ est mon plafond. Alors, que devrions-nous faire? Très probablement, je ne ferai rien, comme la plupart des gens.

En fixant une sorte de prix fixe pour le travail créatif, vous vous limitez simplement, empêchant un plus grand nombre de personnes de vous envoyer moins d'argent, ce qui au total peut être plus impressionnant que ceux qui achèteront au prix que vous avez fixé. Il me semble que la créativité est précisément le domaine dans lequel les dons devraient primer. Pour ce faire, vous avez besoin de :

  • Apprenez aux gens à rendre grâce de cette manière. Les créateurs eux-mêmes doivent clairement montrer qu'ils souhaitent recevoir des dons, ajouter des liens vers différents moyens de paiement partout, etc.
  • Davantage de mécanismes sont nécessaires pour simplifier et renforcer ces processus. Par exemple, créez une sorte de site Web mondial sur lequel vous pouvez faire un don pour la créativité en utilisant des liens de droits d'auteur.

    Disons que le lien ressemble à ceci :

    http://someartistsdonationsite.site/category/artist?external-info

    Si nous nous limitons aux musiciens, alors :

    http://someartistsdonationsite.com/music/miyagi?song=blabla

    L'artiste doit vérifier son surnom et s'y attacher.

    Nous ajoutons une fonction permettant de générer un tel lien vers le client museria, et tous les projets utilisant le référentiel peuvent placer des boutons de don avec ces liens à côté des chansons sur leurs sites Web/applications. Les utilisateurs ont la possibilité de faire un don très rapidement et facilement. Naturellement, cette approche peut être utilisée dans n’importe quel projet et catégorie de créativité, pas seulement par le biais du stockage.

Pourquoi exactement avez-vous besoin d’un espace de stockage de musique et comment pouvez-vous y participer ?

  • Si vous travaillez sur un projet lié à la musique, ou envisagez d'en créer un, alors tout est destiné à cela. Vous pouvez utiliser museria pour stocker et récupérer des chansons, augmentant ainsi le flux de chansons en ligne. Si, en même temps, vous avez la possibilité d'élever et de maintenir au moins un nœud de votre choix, ce sera alors la meilleure contribution au développement du réseau.
  • Peut-être êtes-vous prêt à assumer un autre rôle : aider avec le code, ou remplir et modérer la base de données, diffuser des informations sur le projet à vos amis, etc.
  • Peut-être que l’idée vous a plu et que vous êtes prêt à aider financièrement pour que tout cela vive et se développe. Plus il y a de nœuds, plus il y a de chansons.
  • Ou vous avez simplement besoin de rechercher et de télécharger une chanson à un moment donné. Vous pouvez le faire très simplement, par exemple en robot de télégramme.

Le projet en est maintenant au tout début. Un réseau de test a été lancé, les nœuds peuvent redémarrer fréquemment, nécessiter des mises à jour, etc. S'il n'y a pas de problèmes critiques pendant la période d'évaluation, ce même réseau est transformé en réseau principal.

Vous pouvez visualiser les informations sur le nœud de l'extérieur : le nombre de chansons, l'espace libre, etc., en utilisant un lien comme http://node-address/status ou http://node-address/status?pretty

Mes contacts:

Source: habr.com

Ajouter un commentaire