Museria — stockage de musique dĂ©centralisĂ©

Museria — stockage de musique dĂ©centralisĂ©

Un jour, j'ai décidé d'écrire une application pour choisir de la musique à écouter chez moi, en extérieur, pendant mes entraßnements, etc. Et pour que tout cela fonctionne en continu, avec un minimum de mon intervention. J'ai conçu l'architecture, esquissé un prototype et finalement, je suis tombé sur un petit "problÚme".

Mais je ne savais pas d'oĂč rĂ©cupĂ©rer les fichiers musicaux eux-mĂȘmes. À ce moment-lĂ , VKontakte avait dĂ©jĂ  fermĂ© son API, et les grands portails musicaux Ă©taient Ă©galement bloquĂ©s ; mĂȘme les chansons Ă©taient dĂ©livrĂ©es en morceaux pour empĂȘcher le scraping. Il ne restait que quelques sites Ă©phĂ©mĂšres remplis de publicitĂ©s et de contenu indĂ©sirable, des programmes grabbers douteux et d'autres solutions "sales". En rĂ©sumĂ©, aucune solution rĂ©ellement valable. Bien sĂ»r, on peut acheter un abonnement Ă  Yandex Music ou autre chose. Mais lĂ  encore, il n'y a pas d'API publique ouverte et tu n'as pas d'accĂšs programmatique Ă  la musique. Certaines grandes entreprises ont essentiellement limitĂ© l'accĂšs Ă  la musique pour les autres. Pourquoi cela s'est-il produit ? En approfondissant, il est devenu clair que le problĂšme principal rĂ©side dans les droits d'auteur. La solution actuelle sous forme d'abonnements satisfait de nombreux auteurs commerciaux de compositions musicales et ces mĂȘmes entreprises. Cependant, la musique non commerciale et conditionnellement commerciale est Ă©galement incluse dans la liste gĂ©nĂ©rale. Soit tu paies pour tout, soit tu ne t'Ă©coutes rien du tout.

Alors j'ai commencé à réfléchir à ce qu'il fallait faire avec tout cela. Comment organiser la distribution libre de la musique ? Que ferais-je si je créais de la musique et voulais en vivre ? Est-ce que cela me plairait si mes chansons étaient diffusées de maniÚre pirate ? Quelle alternative existe-t-il ?

Au final, deux problÚmes principaux se sont dégagés qu'il faut résoudre :

  • Organisation de la distribution libre de la musique par des mĂ©thodes confortables pour la plupart des gens, y compris des mĂ©thodes logicielles.
  • Proposition d'alternatives aux crĂ©ateurs de musique pour gagner de l'argent

Un stockage musical mondial décentralisé

Au départ, j'ai essayé de trouver des solutions existantes et de créer tout à partir de celles-ci. AprÚs un certain temps de recherche, j'ai été attiré en premier par ipfs. J'ai commencé à réaliser mon idée, mais aprÚs un certain temps, j'ai découvert plusieurs problÚmes critiques dans cette solution :

  • Ipfs — un stockage pour tout et n'importe quoi. Des images, de la musique, des vidĂ©os, et tout ce que vous pouvez imaginer. En gros, c'est une vaste « dĂ©charge » planĂ©taire. Donc, lorsque vous lancez votre nƓud, vous ĂȘtes immĂ©diatement soumis Ă  une charge Ă©norme. La machine souffre littĂ©ralement.
  • C'est une sorte de mĂ©canisme inachevĂ© de collecte de « dĂ©chets ». Je ne sais pas comment ça se passe maintenant, mais Ă  l'Ă©poque, si vous configuriez pour limiter le stockage Ă  dix gigaoctets de donnĂ©es, cela ne signifiait rien. Le stockage s'Ă©tendait, ignorant de nombreux paramĂštres de configuration. En fin de compte, il fallait avoir une Ă©norme capacitĂ© de disque dur tant qu'ipfs ne savait pas comment supprimer l'inutile.
  • Au moment d'utiliser la bibliothĂšque (je ne sais pas comment c'est actuellement), le client n'avait pas de dĂ©lais d'attente. Vous envoyez une requĂȘte pour obtenir un fichier, et si celui-ci n'existe pas, vous restez simplement bloquĂ©. Bien sĂ»r, les gens ont trouvĂ© diverses solutions de contournement qui rĂ©solvaient en partie le problĂšme, mais ce n'Ă©tait que des rustines. De telles fonctionnalitĂ©s devraient ĂȘtre incluses de maniĂšre native.

Il y avait aussi de nombreux petits problÚmes, et l'impression que j'en ai gardée était claire : on ne peut pas l'utiliser pour un projet. J'ai continué à chercher un stockage, étudiant différentes options, mais je n'ai toujours rien trouvé de convenable.

En fin de compte, j'ai décidé d'essayer d'écrire mon propre stockage décentralisé. Qu'il ne prétende pas au rÎle interplanétaire, mais qu'il résolve un problÚme spécifique.

Ainsi sont nés spreadable, storacle, metastocle, museria, museria-global.

spreadable — c'est la couche principale, la plus basse, qui permet de relier les nƓuds dans un rĂ©seau. Il contient un algorithme que j'ai partiellement implĂ©mentĂ© pour environ 10000 serveurs. La version complĂšte de l'algorithme est beaucoup plus compliquĂ©e Ă  mettre en Ɠuvre et nĂ©cessiterait encore plusieurs mois supplĂ©mentaires (peut-ĂȘtre plus).

Je ne vais pas décrire approfondiament spreadable dans cet article, je préfÚre écrire un article séparé un jour. Ici, je vais juste noter certaines caractéristiques :

  • Fonctionne via http/https.
  • Il est possible de crĂ©er un rĂ©seau distinct pour une tĂąche spĂ©cifique, ce qui rĂ©duit considĂ©rablement la charge sur chaque projet individuel, contrairement Ă  s'ils Ă©taient tous sur un mĂȘme rĂ©seau.
  • Un mĂ©canisme avec des dĂ©lais d'attente et d'autres petits dĂ©tails a Ă©tĂ© initialement prĂ©vu. Et cela fonctionne pour toutes les mĂ©thodes, tant dans le client que dans le nƓud. On peut gĂ©rer les paramĂštres de maniĂšre flexible depuis sa propre application.
  • La bibliothĂšque est Ă©crite en nodejs. Les problĂšmes de performance de la pile sont compensĂ©s par la nature dĂ©centralisĂ©e. La charge peut ĂȘtre "Ă©talĂ©e" en augmentant le nombre de nƓuds. En retour, il y a beaucoup d'avantages : une immense communautĂ©, simplicitĂ© et facilitĂ© de travail, un client isomorphe, absence de dĂ©pendances extĂ©rieures, etc.

storacle — est une couche qui hĂ©rite de spreadable, permettant de stocker des fichiers sur le rĂ©seau. Chaque fichier a son propre hachage basĂ© sur son contenu, ce qui permet de l'accĂ©der par la suite. Les fichiers ne sont pas divisĂ©s en blocs, mais stockĂ©s en entier.

metastocle — est une couche qui hĂ©rite de spreadable, permettant de stocker des donnĂ©es sur le rĂ©seau, mais pas des fichiers. L'interface est similaire aux bases de donnĂ©es nosql. Par exemple, on peut ajouter un fichier Ă  storacle, obtenir son hachage et l'Ă©crire dans metastocle avec un lien vers quelque chose.

museria — hĂ©rite de storacle et metastocle. Cette couche est directement responsable du stockage de la musique. Le stockage ne travaille qu'avec des fichiers mp3 et des tags id3.

La "clĂ©" de la chanson est son titre complet sous la forme de Artiste (TPE1) — Titre (TIT2). Par exemple :

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

Pour savoir comment les titres des chansons sont formés en détail, il faut iciregarder la fonction utils.beautifySongTitle().

Une correspondance par clĂ©s est considĂ©rĂ©e comme 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 des clĂ©s (titres de chansons) dĂ©tecte une similaritĂ© supĂ©rieure Ă  85%, alors il s'agit de la mĂȘme chanson.

L'algorithme de détermination de similarité est également là, dans la fonction utils.getSongSimilarity().

La couverture de la chanson, pour un accĂšs ultĂ©rieur, doit Ă©galement ĂȘtre attachĂ©e via les tags (APIC). Dans les utilitaires (utils), tous les mĂ©thodes nĂ©cessaires pour obtenir et traiter les tags sont disponibles.

Un exemple de travail avec le stockage via le client peut ĂȘtre vu dans readme.

Tous les couches mentionnĂ©es ci-dessus sont autonomes et peuvent ĂȘtre utilisĂ©es sĂ©parĂ©ment comme des couches infĂ©rieures pour d'autres projets. Par exemple, l'idĂ©e de crĂ©er une couche pour le stockage de livres existe dĂ©jĂ .

museria-global — est un dĂ©pĂŽt git prĂ©configurĂ© pour lancer votre propre nƓud dans le rĂ©seau mondial de la musique. Clonez-le, npm i && npm start et c'est tout. Une configuration plus dĂ©taillĂ©e peut ĂȘtre effectuĂ©e, lancer dans docker, etc. Des informations dĂ©taillĂ©es sont disponibles sur GitHub.

Lorsqu'un dĂ©pĂŽt est mis Ă  jour, il est Ă©galement nĂ©cessaire de mettre Ă  jour votre nƓud. Si le numĂ©ro de version majeur ou mineur change, cette action est obligatoire, sinon les anciens nƓuds seront ignorĂ©s par le rĂ©seau.

Il est possible de travailler avec des chansons manuellement et par programme. Chaque nƓud lance un serveur pour diverses tĂąches. En visitant le point d'accĂšs par dĂ©faut, vous obtiendrez une interface pour travailler avec la musique. Par exemple, vous pouvez accĂ©der Ă  le nƓud racine (le lien peut ne plus ĂȘtre pertinent plus tard, les nƓuds d'entrĂ©e sont Ă©galement accessibles via Telegram, ou consulter les mises Ă  jour sur GitHub).

Ainsi, vous pouvez rechercher et tĂ©lĂ©charger des chansons dans le stockage. Le tĂ©lĂ©chargement de chansons peut se faire en deux modes : normal et modĂ©rĂ©. Le deuxiĂšme mode signifie qu'une personne, et non un programme, gĂšre le processus. Si vous cochez cette case lors de l'ajout, vous devrez rĂ©soudre un captcha. Les chansons peuvent ĂȘtre ajoutĂ©es avec des prioritĂ©s -1, 0 ou 1. La prioritĂ© 1 ne peut ĂȘtre donnĂ©e qu'en mode modĂ©rĂ©. Les prioritĂ©s sont nĂ©cessaires pour que le stockage prenne des dĂ©cisions plus efficaces lorsque vous essayez de remplacer une chanson existante par une nouvelle. Plus la prioritĂ© est Ă©levĂ©e, plus vous aurez de chances de remplacer le fichier existant. Cela aide Ă  lutter contre le spam et augmente la qualitĂ© des chansons tĂ©lĂ©chargĂ©es.

Si vous commencez Ă  ajouter des chansons dans le stockage, essayez d'attacher des images (couverture), mĂȘme si ce champ n'est pas obligatoire. Dans 99 % des cas, les premiĂšres images sur Google en fonction des titres de chansons sont des couvertures d'albums.

En termes techniques, voici comment les fichiers sont ajoutés, en deux mots :

  • Le client reçoit l'adresse d'un nƓud libre, qui deviendra coordonnateur pendant un certain temps.
  • La fonction d'ajout de chanson (par une personne ou par code) est dĂ©clenchĂ©e, une demande d'ajout est envoyĂ©e au point d'accĂšs du coordonnateur.
  • Le coordonnateur calcule combien de doublons doivent ĂȘtre conservĂ©s (paramĂštre configurable).
  • Les nƓuds les plus appropriĂ©s pour le stockage sont recherchĂ©s.
  • Le fichier est directement envoyĂ© Ă  ces nƓuds.

Voici comment les fichiers sont récupérés techniquement :

  • Le client reçoit l'adresse d'un nƓud libre, qui deviendra coordonnateur pendant un certain temps.
  • La fonction d'obtention de chanson (par une personne ou par code) est dĂ©clenchĂ©e, une demande d'obtention est envoyĂ©e au point d'accĂšs du coordonnateur.
  • Le coordonnateur vĂ©rifie la prĂ©sence du lien dans le cache. S'il existe et qu'il est actif, il est immĂ©diatement renvoyĂ© au client, sinon les nƓuds sont interrogĂ©s pour vĂ©rifier leur disponibilitĂ©.
  • Le fichier est en cours de rĂ©cupĂ©ration via le lien, si trouvĂ©.

Alternatives pour les créateurs de musique

Je me suis toujours demandĂ© comment Ă©valuer objectivement le prix de nombreuses Ɠuvres crĂ©atives. Pourquoi, par exemple, une personne fixe-t-elle le prix de son album musical Ă  10 $ ? Ou Ă  20 $ ou Ă  100 $. Quel est l'algorithme ? Quand, par exemple, nous parlons d'un produit physique ou mĂȘme de nombreux types de services, nous pouvons au moins calculer le coĂ»t de production et partir de lĂ .

Ok, supposons qu'on fixe le prix à 10 $. Est-ce vraiment efficace ? Supposons que j'écoute l'album quelque part ou une chanson de celui-ci et que je souhaite remercier l'artiste. Mais selon mes impressions et mes capacités, 3 $ est mon plafond. Que faire alors ? Il est probable que je ne ferai rien, comme la plupart des gens.

En fixant un prix fixe pour un travail crĂ©atif, tu te limites simplement, tu ne permets pas Ă  un plus grand nombre de personnes de t'envoyer moins d'argent, ce qui pourrait cumulativement ĂȘtre plus important que ce que ceux qui achĂštent Ă  ton prix fixe. Je pense que la crĂ©ativitĂ© est justement ce domaine oĂč les dons devraient, en premier lieu, prĂ©dominer. Pour cela, il faut :

  • Apprendre aux gens Ă  remercier de cette maniĂšre. Les crĂ©ateurs doivent montrer clairement qu'ils aimeraient recevoir des dons, en ajoutant des liens vers diffĂ©rents moyens de paiement, etc.
  • Il faut plus de mĂ©canismes pour simplifier et renforcer ces processus. Par exemple, crĂ©er un site global oĂč les dons pour la crĂ©ativitĂ© pourraient ĂȘtre faits via des liens d'auteur.

    Disons que le lien est à peu prÚs comme ça :

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

    Si l'on se limite aux musiciens, alors :

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

    L'interprÚte doit vérifier son pseudo et s'y rattacher.

    Dans le client museria, nous ajoutons une fonction de gĂ©nĂ©ration de ce type de lien, et tous les projets utilisant le stockage peuvent placer sur leurs sites/applications des boutons pour des dons avec ces liens Ă  cĂŽtĂ© des chansons. Les utilisateurs ont la possibilitĂ© de faire des dons trĂšs rapidement et facilement. Évidemment, cette approche peut ĂȘtre utilisĂ©e dans n'importe quel projet et catĂ©gorie de crĂ©ativitĂ©, pas seulement Ă  travers le stockage.

Pourquoi, en particulier pour toi, un stockage musical, et comment y participer ?

  • Si tu travailles sur un projet liĂ© Ă  la musique ou si tu prĂ©vois d'en crĂ©er un, c'est pour cela que tout cela a Ă©tĂ© conçu. Tu peux utiliser museria pour stocker et obtenir des chansons, augmentant le flux de chansons en ligne. Si tu as la possibilitĂ© de crĂ©er et de maintenir au moins un nƓud, ce sera la meilleure contribution au dĂ©veloppement du rĂ©seau.
  • Peut-ĂȘtre es-tu 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 Ă  tes connaissances, etc.
  • Peut-ĂȘtre que l'idĂ©e t'a plu et que tu es prĂȘt Ă  aider financiĂšrement pour que tout cela vive et se dĂ©veloppe. Plus il y aura de nƓuds, plus il y aura de chansons.
  • Ou peut-ĂȘtre qu'Ă  un moment donnĂ©, tu auras simplement besoin de trouver et de tĂ©lĂ©charger une chanson. Tu pourras le faire trĂšs facilement, par exemple, via un bot Telegram.

Le projet est actuellement Ă  un stade trĂšs prĂ©coce. Un rĂ©seau test a Ă©tĂ© lancĂ©, 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, ce mĂȘme rĂ©seau sera transformĂ© en rĂ©seau principal.

Pour voir les informations sur un nƓud de l'extĂ©rieur : le nombre de chansons, l'espace libre, etc., tu peux te rendre sur un lien de type http://node-address/status ou http://node-address/status?pretty

Mes contacts :

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster