Museria - un référentiel décentralisé de musique

image

Je me suis réuni une fois pour écrire une application pour sélectionner la musique pour moi et écouter à la maison / dans la rue / à l'entraînement, etc. Et pour que tout cela fonctionne en flux, avec un minimum de ma participation. Il est venu avec l'architecture, a esquissé un prototype et s'est retrouvé avec un «petit problème».

Et il n'est pas clair où obtenir les fichiers de chansons eux-mêmes. À ce moment, VKontakte avait déjà fermé son API, tout était sourd sur les grands portails de musique, même les chansons étaient données en morceaux pour ne pas être analysées. Il n'y avait que quelques sites Web séparés d'une journée avec des tonnes de publicité et toutes sortes de déchets, toutes sortes de programmes de saisie douteux et d'autres options «sales». En général, pas une seule bonne décision valable. Vous pouvez, bien sûr, acheter un abonnement à de la musique Yandex ou similaire. Mais là encore, il n'y a nulle part une API publique ouverte et vous n'avez pas accès à la musique par programmation. En fait, plusieurs grandes entreprises ont restreint le reste de leur accès à la musique. Pourquoi est-ce arrivé? En creusant plus profondément, il est devenu clair que le principal problème du droit d'auteur. La solution actuelle sous forme d'abonnement convient à de nombreux auteurs commerciaux d'œuvres musicales et à ces mêmes sociétés.Dans le même temps, la musique à but non lucratif et shareware fait également partie de la liste générale. Soit vous payez pour tout, soit vous n’écoutez rien du tout.

Et j'ai commencé à penser quoi faire avec tout ça. Comment organiser la distribution gratuite de musique? Que ferais-je si je créais de la musique moi-même et que j'aimerais gagner de l'argent avec ça? Est-ce que j'aimerais que mes chansons commencent à être distribuées de manière piratée? Qu'est-ce qu'une solution alternative?

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

  • Organisation de la distribution gratuite de musique par des mĂ©thodes pratiques pour la plupart des gens, y compris des logiciels.
  • Offrez des alternatives aux crĂ©ateurs de musique pour de l'argent

Dépôt de musique mondial décentralisé


Au départ, j'ai essayé de trouver des solutions existantes et de tout créer à partir de cela. Après un certain temps de recherche, ipfs l'a d' abord aimé . J'ai commencé à mettre en œuvre mon idée, mais après un certain temps, j'ai trouvé plusieurs problèmes critiques dans cette solution:

  • Ipfs - stockage pour tout et tout. Ici, et des images et de la musique et des vidĂ©os, et toute autre chose. En gĂ©nĂ©ral, une telle grosse "poubelle" planĂ©taire. Par consĂ©quent, lorsque vous dĂ©marrez votre nĹ“ud, vous obtenez immĂ©diatement une Ă©norme charge. La voiture se contente de douleur.
  • - «». , , , , . , . , , ipfs .
  • ( ), . , , . , , , . .

Il y avait encore beaucoup de problèmes mineurs, l'impression était alors sans ambiguïté: cela ne peut pas être utilisé pour le projet. J'ai continué à chercher le référentiel, j'ai exploré diverses options, mais je n'ai toujours rien trouvé de convenable.

Au final, j'ai décidé qu'il valait la peine d'essayer d'écrire moi-même un stockage décentralisé. Qu'elle ne prétende pas être interplanétaire, mais elle résoudra une tâche spécifique.

Voici comment tartinable , storacle , metastocle , museria , museria-global avéré .

tartinable- Il s'agit de la couche principale, la plus basse, qui vous permet de combiner des nœuds dans un réseau. Il contient un algorithme que j'ai jusqu'à présent partiellement implémenté sur la base de quelque 10 000 serveurs. La version complète de l'algorithme est beaucoup plus difficile à implémenter et nécessiterait quelques mois supplémentaires (peut-être plus).

En détail, je ne décrirai pas l'étalable dans cet article, je ferais mieux d'écrire un autre d'une manière ou d'une autre. Ici, je note juste quelques fonctionnalités:

  • Cela 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 de chaque projet individuel que s'ils Ă©taient tous sur le mĂŞme rĂ©seau.
  • Initialement, un mĂ©canisme avec des dĂ©lais d'attente et d'autres petites choses a Ă©tĂ© pensĂ©. Et cela fonctionne pour toutes les mĂ©thodes du client et du nĹ“ud. Vous pouvez gĂ©rer de manière flexible les paramètres de votre application.
  • nodejs. . «», . : , , , ...

storacle est une couche héritée de spreadable qui vous permet de stocker des fichiers sur le réseau. Chaque fichier a son propre hachage en fonction du contenu, par lequel il peut être obtenu plus tard. Les fichiers ne sont pas divisés en blocs, mais sont stockés dans leur intégralité.

métastocle - une couche héritée de spreadable, qui vous permet de stocker des données sur le réseau, mais pas des fichiers. L'interface est similaire à la base de données nosql. Vous pouvez, par exemple, ajouter un fichier à storacle, obtenir son hachage et l'écrire dans métastocle en référence à quelque chose.

museria - hérité de storacle et metastocle. Cette couche est directement responsable du stockage de la musique. Le référentiel ne fonctionne qu'avec des fichiers mp3 et des balises id3.

En tant que "clé" de la chanson, son nom complet est utilisé sous la forme Artiste (TPE1) - Titre (TIT2) . Par exemple:

  • Brimstone — The Burden
  • Hi-rez — Lost My Way (feat. Emilio Rojas, Dani Devinci)

Vous pouvez découvrir autant que possible comment les noms des chansons sont formés ici . Nous devons regarder la fonction utils.beautifySongTitle () .

Une correspondance clé est un pourcentage défini dans les paramètres du nœud. Par exemple, une valeur de 0,85 signifie que si la fonction de comparaison clé (noms de morceaux) a trouvé une similitude de plus de 85%, alors c'est le même morceau.

Un algorithme pour déterminer la similitude se trouve au même endroit, dans la fonction utils.getSongSimilarity () .

Couverture de la chanson, pour une récupération ultérieure, également jointe via des balises ( APIC ). Les utilitaires disposent de toutes les méthodes nécessaires pour recevoir et traiter des balises.

Un exemple de travail avec le référentiel via le client peut être trouvé dans le fichier Lisez-moi .
. , .

museria-global est un référentiel git déjà configuré pour lancer son propre nœud dans le réseau musical mondial. Clonez npm i && npm start et c'est tout. Vous pouvez configurer plus en détail, exécuter dans docker, etc. Les détails sont sur le github .

Lorsque le référentiel est mis à jour, vous devez mettre à jour votre site. Si le numéro de version majeur ou mineur change, cette action est requise, 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 démarre le serveur pour diverses tâches. Y compris, lorsque vous visitez le point de terminaison par défaut, vous obtiendrez une interface pour travailler avec de la musique. Par exemple, vous pouvez aller au nœud racine(le lien peut ne pas être pertinent plus tard, les nœuds d'entrée peuvent également être obtenus par télégramme , ou voir les mises à jour sur le github).

Vous pouvez donc rechercher et télécharger des chansons dans le référentiel. Le téléchargement de chansons peut avoir lieu en 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 morceaux peuvent être ajoutés avec les 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 rendre le référentiel plus efficace pour décider quoi faire lorsque vous essayez de remplacer un morceau existant par un nouveau. Plus la priorité est élevée, plus vous risquez d'écraser le fichier existant. Cela permet de lutter contre le spam et augmente la qualité des chansons téléchargées.

Si vous commencez à ajouter des chansons au référentiel, essayez de joindre des images (couverture), bien que ce champ soit facultatif. Dans 99% des cas, les toutes premières images dans Google par nom de chanson sont des pochettes d'album.

Comment les fichiers sont techniquement ajoutés en un mot:

  • Le client reçoit l'adresse d'un nĹ“ud libre, qui deviendra pendant quelque temps le coordinateur.
  • La fonction d'ajout d'une chanson est dĂ©clenchĂ©e (par une personne ou un code), une demande est faite pour ajouter un coordinateur au point final.
  • Le coordinateur calcule le nombre de doublons Ă  enregistrer (paramètre configurable).
  • Les nĹ“uds les plus appropriĂ©s Ă  enregistrer 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 pendant quelque temps le coordinateur.
  • La fonction de rĂ©ception de la chanson est dĂ©clenchĂ©e (par une personne ou un code), une demande est reçue pour obtenir un coordinateur au point final.
  • . , , .
  • , .


J'ai toujours été intéressé par la question, comment peut-on évaluer objectivement la valeur de nombreuses œuvres créatives? Pourquoi, par exemple, une personne expose-t-elle son album de musique pour 10 $? Ou pour 20 $ ou pour 100 $. Où est l'algorithme? Lorsque, par exemple, nous parlons d'une sorte de produit physique, ou même de nombreux types de services, nous pouvons au moins calculer le prix de revient et partir de là.

Ok, mettons 10 $. Est-ce vraiment efficace? Supposons que j'écoute un album quelque part ou une chanson de là et que je décide de remercier. Mais selon mes sentiments et mes propres capacités, 3 $ est mon plafond. Et comment être ici? Je ne ferai probablement rien, comme la plupart des gens.

En fixant un prix fixe pour le travail créatif, vous vous limitez simplement, ne laissez pas un grand nombre de personnes vous envoyer moins d'argent, ce qui au total peut être plus impressionnant que ceux qui achètent au prix que vous fixez. Il me semble que la créativité est exactement le domaine dans lequel les dons doivent d'abord être dirigés. Pour ce faire, vous avez besoin de:

  • Apprendre aux gens Ă  rendre grâce de cette façon. Les crĂ©ateurs eux-mĂŞmes doivent clairement montrer qu'ils aimeraient recevoir des dons, ajouter partout des liens vers diffĂ©rents modes de paiement, etc.
  • . , , .

    , :

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

    , :

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

    .

    museria , , / . . , , .

, , ,


  • , , , . museria , . , , , .
  • - : , , ...
  • , . , .
  • - . , , .

Le projet en est à ses balbutiements. Un réseau de test est en cours d'exécution, les nœuds peuvent souvent redémarrer, nécessiter des mises à jour, etc. En l'absence de problèmes critiques pendant la période d'évaluation, le même réseau est transformé en réseau principal.

Afficher des informations sur le site de l'extérieur: le nombre de chansons, l'espace libre, etc., vous pouvez cliquer sur le type de lien http://node-address/statusou Mes contacts:http://node-address/status?pretty




All Articles