{"id":80222,"date":"2020-05-04T13:42:18","date_gmt":"2020-05-04T11:42:18","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki"},"modified":"2020-05-04T13:42:18","modified_gmt":"2020-05-04T11:42:18","slug":"museria-deczentralizovannoe-hranilishhe-muzyki","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki","title":{"rendered":"Museria \u2014 stockage de musique d\u00e9centralis\u00e9","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Museria \u2014 stockage de musique d\u00e9centralis\u00e9\" src=\"\/wp-content\/uploads\/2020\/05\/e5323f70f0df3f3bb6fb92ae0544ad2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn jour, j'ai d\u00e9cid\u00e9 d'\u00e9crire une application pour choisir de la musique \u00e0 \u00e9couter chez moi, en ext\u00e9rieur, pendant mes entra\u00eenements, etc. Et pour que tout cela fonctionne en continu, avec un minimum de mon intervention. J'ai con\u00e7u l'architecture, esquiss\u00e9 un prototype et finalement, je suis tomb\u00e9 sur un petit \"probl\u00e8me\". <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMais je ne savais pas d'o\u00f9 r\u00e9cup\u00e9rer les fichiers musicaux eux-m\u00eames. \u00c0 ce moment-l\u00e0, VKontakte avait d\u00e9j\u00e0 ferm\u00e9 son API, et les grands portails musicaux \u00e9taient \u00e9galement bloqu\u00e9s ; m\u00eame les chansons \u00e9taient d\u00e9livr\u00e9es en morceaux pour emp\u00eacher le scraping. Il ne restait que quelques sites \u00e9ph\u00e9m\u00e8res remplis de publicit\u00e9s et de contenu ind\u00e9sirable, des programmes grabbers douteux et d'autres solutions \"sales\". En r\u00e9sum\u00e9, aucune solution r\u00e9ellement valable. Bien s\u00fbr, on peut acheter un abonnement \u00e0 Yandex Music ou autre chose. Mais l\u00e0 encore, il n'y a pas d'API publique ouverte et tu n'as pas d'acc\u00e8s programmatique \u00e0 la musique. Certaines grandes entreprises ont essentiellement limit\u00e9 l'acc\u00e8s \u00e0 la musique pour les autres. Pourquoi cela s'est-il produit ? En approfondissant, il est devenu clair que le probl\u00e8me principal r\u00e9side dans les droits d'auteur. La solution actuelle sous forme d'abonnements satisfait de nombreux auteurs commerciaux de compositions musicales et ces m\u00eames entreprises. Cependant, la musique non commerciale et conditionnellement commerciale est \u00e9galement incluse dans la liste g\u00e9n\u00e9rale. Soit tu paies pour tout, soit tu ne t'\u00e9coutes rien du tout.<\/p>\n<p>Alors j'ai commenc\u00e9 \u00e0 r\u00e9fl\u00e9chir \u00e0 ce qu'il fallait faire avec tout cela. Comment organiser la distribution libre de la musique ? Que ferais-je si je cr\u00e9ais de la musique et voulais en vivre ? Est-ce que cela me plairait si mes chansons \u00e9taient diffus\u00e9es de mani\u00e8re pirate ? Quelle alternative existe-t-il ? <\/p>\n<p>Au final, deux probl\u00e8mes principaux se sont d\u00e9gag\u00e9s qu'il faut r\u00e9soudre :<\/p>\n<ul>\n<li>Organisation de la distribution libre de la musique par des m\u00e9thodes confortables pour la plupart des gens, y compris des m\u00e9thodes logicielles.<\/li>\n<li>Proposition d'alternatives aux cr\u00e9ateurs de musique pour gagner de l'argent<\/li>\n<\/ul>\n<p><\/p>\n<h3>Un stockage musical mondial d\u00e9centralis\u00e9<\/h3>\n<p>\nAu d\u00e9part, j'ai essay\u00e9 de trouver des solutions existantes et de cr\u00e9er tout \u00e0 partir de celles-ci. Apr\u00e8s un certain temps de recherche, j'ai \u00e9t\u00e9 attir\u00e9 en premier par <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ipfs\/ipfs\">ipfs<\/a><\/noindex>. J'ai commenc\u00e9 \u00e0 r\u00e9aliser mon id\u00e9e, mais apr\u00e8s un certain temps, j'ai d\u00e9couvert plusieurs probl\u00e8mes critiques dans cette solution :<\/p>\n<ul>\n<li>Ipfs \u2014 un stockage pour tout et n'importe quoi. Des images, de la musique, des vid\u00e9os, et tout ce que vous pouvez imaginer. En gros, c'est une vaste \u00ab d\u00e9charge \u00bb plan\u00e9taire. Donc, lorsque vous lancez votre n\u0153ud, vous \u00eates imm\u00e9diatement soumis \u00e0 une charge \u00e9norme. La machine souffre litt\u00e9ralement. <\/li>\n<li>C'est une sorte de m\u00e9canisme inachev\u00e9 de collecte de \u00ab d\u00e9chets \u00bb. Je ne sais pas comment \u00e7a se passe maintenant, mais \u00e0 l'\u00e9poque, si vous configuriez pour limiter le stockage \u00e0 dix gigaoctets de donn\u00e9es, cela ne signifiait rien. Le stockage s'\u00e9tendait, ignorant de nombreux param\u00e8tres de configuration. En fin de compte, il fallait avoir une \u00e9norme capacit\u00e9 de disque dur tant qu'ipfs ne savait pas comment supprimer l'inutile.<\/li>\n<li>Au moment d'utiliser la biblioth\u00e8que (je ne sais pas comment c'est actuellement), le client n'avait pas de d\u00e9lais d'attente. Vous envoyez une requ\u00eate pour obtenir un fichier, et si celui-ci n'existe pas, vous restez simplement bloqu\u00e9. Bien s\u00fbr, les gens ont trouv\u00e9 diverses solutions de contournement qui r\u00e9solvaient en partie le probl\u00e8me, mais ce n'\u00e9tait que des rustines. De telles fonctionnalit\u00e9s devraient \u00eatre incluses de mani\u00e8re native.<\/li>\n<\/ul>\n<p>\nIl y avait aussi de nombreux petits probl\u00e8mes, et l'impression que j'en ai gard\u00e9e \u00e9tait claire : on ne peut pas l'utiliser pour un projet. J'ai continu\u00e9 \u00e0 chercher un stockage, \u00e9tudiant diff\u00e9rentes options, mais je n'ai toujours rien trouv\u00e9 de convenable.<\/p>\n<p>En fin de compte, j'ai d\u00e9cid\u00e9 d'essayer d'\u00e9crire mon propre stockage d\u00e9centralis\u00e9. Qu'il ne pr\u00e9tende pas au r\u00f4le interplan\u00e9taire, mais qu'il r\u00e9solve un probl\u00e8me sp\u00e9cifique.<\/p>\n<p>Ainsi sont n\u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/spreadable\">spreadable<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/storacle\/\">storacle<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/metastocle\">metastocle<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria\">museria<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria-global\">museria-global<\/a><\/noindex>. <\/p>\n<p><b>spreadable <\/b> \u2014 c'est la couche principale, la plus basse, qui permet de relier les n\u0153uds dans un r\u00e9seau. Il contient un algorithme que j'ai partiellement impl\u00e9ment\u00e9 pour environ 10000 serveurs. La version compl\u00e8te de l'algorithme est beaucoup plus compliqu\u00e9e \u00e0 mettre en \u0153uvre et n\u00e9cessiterait encore plusieurs mois suppl\u00e9mentaires (peut-\u00eatre plus).<\/p>\n<p>Je ne vais pas d\u00e9crire approfondiament spreadable dans cet article, je pr\u00e9f\u00e8re \u00e9crire un article s\u00e9par\u00e9 un jour. Ici, je vais juste noter certaines caract\u00e9ristiques :<\/p>\n<ul>\n<li>Fonctionne via http\/https.<\/li>\n<li>Il est possible de cr\u00e9er un r\u00e9seau distinct pour une t\u00e2che sp\u00e9cifique, ce qui r\u00e9duit consid\u00e9rablement la charge sur chaque projet individuel, contrairement \u00e0 s'ils \u00e9taient tous sur un m\u00eame r\u00e9seau.<\/li>\n<li>Un m\u00e9canisme avec des d\u00e9lais d'attente et d'autres petits d\u00e9tails a \u00e9t\u00e9 initialement pr\u00e9vu. Et cela fonctionne pour toutes les m\u00e9thodes, tant dans le client que dans le n\u0153ud. On peut g\u00e9rer les param\u00e8tres de mani\u00e8re flexible depuis sa propre application.<\/li>\n<li>La biblioth\u00e8que est \u00e9crite en nodejs. Les probl\u00e8mes de performance de la pile sont compens\u00e9s par la nature d\u00e9centralis\u00e9e. La charge peut \u00eatre \"\u00e9tal\u00e9e\" en augmentant le nombre de n\u0153uds. En retour, il y a beaucoup d'avantages : une immense communaut\u00e9, simplicit\u00e9 et facilit\u00e9 de travail, un client isomorphe, absence de d\u00e9pendances ext\u00e9rieures, etc.<\/li>\n<\/ul>\n<p>\n<b>storacle <\/b> \u2014 est une couche qui h\u00e9rite de spreadable, permettant de stocker des fichiers sur le r\u00e9seau. Chaque fichier a son propre hachage bas\u00e9 sur son contenu, ce qui permet de l'acc\u00e9der par la suite. Les fichiers ne sont pas divis\u00e9s en blocs, mais stock\u00e9s en entier.<\/p>\n<p><b>metastocle <\/b> \u2014 est une couche qui h\u00e9rite de spreadable, permettant de stocker des donn\u00e9es sur le r\u00e9seau, mais pas des fichiers. L'interface est similaire aux bases de donn\u00e9es nosql. Par exemple, on peut ajouter un fichier \u00e0 storacle, obtenir son hachage et l'\u00e9crire dans metastocle avec un lien vers quelque chose.<\/p>\n<p><b>museria<\/b> \u2014 h\u00e9rite 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. <\/p>\n<p>La \"cl\u00e9\" de la chanson est son titre complet sous la forme de <b>Artiste (TPE1) \u2014 Titre (TIT2)<\/b>. Par exemple :<\/p>\n<ul>\n<li>Brimstone \u2014 The Burden<\/li>\n<li>Hi-rez \u2014 Lost My Way (feat. Emilio Rojas, Dani Devinci)<\/li>\n<\/ul>\n<p>\nPour savoir comment les titres des chansons sont form\u00e9s en d\u00e9tail, il faut <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria\/blob\/master\/src\/utils.js\">ici<\/a><\/noindex>regarder la fonction <b>utils.beautifySongTitle()<\/b>.<\/p>\n<p>Une correspondance par cl\u00e9s est consid\u00e9r\u00e9e comme un pourcentage d\u00e9fini dans les param\u00e8tres du n\u0153ud. Par exemple, une valeur de 0,85 signifie que si la fonction de comparaison des cl\u00e9s (titres de chansons) d\u00e9tecte une similarit\u00e9 sup\u00e9rieure \u00e0 85%, alors il s'agit de la m\u00eame chanson.<\/p>\n<p>L'algorithme de d\u00e9termination de similarit\u00e9 est \u00e9galement l\u00e0, dans la fonction <b>utils.getSongSimilarity()<\/b>.<\/p>\n<p>La couverture de la chanson, pour un acc\u00e8s ult\u00e9rieur, doit \u00e9galement \u00eatre attach\u00e9e via les tags (<b>APIC<\/b>). Dans les utilitaires (utils), tous les m\u00e9thodes n\u00e9cessaires pour obtenir et traiter les tags sont disponibles.<\/p>\n<p>Un exemple de travail avec le stockage via le client peut \u00eatre vu dans <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria\">readme<\/a><\/noindex>.<\/p>\n<blockquote><p>Tous les couches mentionn\u00e9es ci-dessus sont autonomes et peuvent \u00eatre utilis\u00e9es s\u00e9par\u00e9ment comme des couches inf\u00e9rieures pour d'autres projets. Par exemple, l'id\u00e9e de cr\u00e9er une couche pour le stockage de livres existe d\u00e9j\u00e0.<\/p><\/blockquote>\n<p>\n<b>museria-global<\/b> \u2014 est un d\u00e9p\u00f4t git pr\u00e9configur\u00e9 pour lancer votre propre n\u0153ud dans le r\u00e9seau mondial de la musique. Clonez-le, <b>npm i &amp;&amp; npm<\/b> start et c'est tout. Une configuration plus d\u00e9taill\u00e9e peut \u00eatre effectu\u00e9e, lancer dans docker, etc. Des informations d\u00e9taill\u00e9es sont disponibles sur <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria-global#museria-global-storage-alpha-\">GitHub<\/a><\/noindex>.<\/p>\n<p>Lorsqu'un d\u00e9p\u00f4t est mis \u00e0 jour, il est \u00e9galement n\u00e9cessaire de mettre \u00e0 jour votre n\u0153ud. Si le num\u00e9ro de version majeur ou mineur change, cette action est obligatoire, sinon les anciens n\u0153uds seront ignor\u00e9s par le r\u00e9seau.<\/p>\n<p>Il est possible de travailler avec des chansons manuellement et par programme. Chaque n\u0153ud lance un serveur pour diverses t\u00e2ches. En visitant le point d'acc\u00e8s par d\u00e9faut, vous obtiendrez une interface pour travailler avec la musique. Par exemple, vous pouvez acc\u00e9der \u00e0 <noindex><a rel=\"nofollow\" href=\"http:\/\/storage.museria.com\">le n\u0153ud racine<\/a><\/noindex> (le lien peut ne plus \u00eatre pertinent plus tard, les n\u0153uds d'entr\u00e9e sont \u00e9galement accessibles via <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/museria\">Telegram<\/a><\/noindex>, ou consulter les mises \u00e0 jour sur GitHub).<\/p>\n<p>Ainsi, vous pouvez rechercher et t\u00e9l\u00e9charger des chansons dans le stockage. Le t\u00e9l\u00e9chargement de chansons peut se faire en deux modes : normal et mod\u00e9r\u00e9. Le deuxi\u00e8me mode signifie qu'une personne, et non un programme, g\u00e8re le processus. Si vous cochez cette case lors de l'ajout, vous devrez r\u00e9soudre un captcha. Les chansons peuvent \u00eatre ajout\u00e9es avec des priorit\u00e9s -1, 0 ou 1. La priorit\u00e9 1 ne peut \u00eatre donn\u00e9e qu'en mode mod\u00e9r\u00e9. Les priorit\u00e9s sont n\u00e9cessaires pour que le stockage prenne des d\u00e9cisions plus efficaces lorsque vous essayez de remplacer une chanson existante par une nouvelle. Plus la priorit\u00e9 est \u00e9lev\u00e9e, plus vous aurez de chances de remplacer le fichier existant. Cela aide \u00e0 lutter contre le spam et augmente la qualit\u00e9 des chansons t\u00e9l\u00e9charg\u00e9es. <\/p>\n<p>Si vous commencez \u00e0 ajouter des chansons dans le stockage, essayez d'attacher des images (couverture), m\u00eame si ce champ n'est pas obligatoire. Dans 99 % des cas, les premi\u00e8res images sur Google en fonction des titres de chansons sont des couvertures d'albums.<\/p>\n<p>En termes techniques, voici comment les fichiers sont ajout\u00e9s, en deux mots :<\/p>\n<ul>\n<li>Le client re\u00e7oit l'adresse d'un n\u0153ud libre, qui deviendra coordonnateur pendant un certain temps.<\/li>\n<li>La fonction d'ajout de chanson (par une personne ou par code) est d\u00e9clench\u00e9e, une demande d'ajout est envoy\u00e9e au point d'acc\u00e8s du coordonnateur.<\/li>\n<li>Le coordonnateur calcule combien de doublons doivent \u00eatre conserv\u00e9s (param\u00e8tre configurable).<\/li>\n<li>Les n\u0153uds les plus appropri\u00e9s pour le stockage sont recherch\u00e9s.<\/li>\n<li>Le fichier est directement envoy\u00e9 \u00e0 ces n\u0153uds. <\/li>\n<\/ul>\n<p>\nVoici comment les fichiers sont r\u00e9cup\u00e9r\u00e9s techniquement :<\/p>\n<ul>\n<li>Le client re\u00e7oit l'adresse d'un n\u0153ud libre, qui deviendra coordonnateur pendant un certain temps.<\/li>\n<li>La fonction d'obtention de chanson (par une personne ou par code) est d\u00e9clench\u00e9e, une demande d'obtention est envoy\u00e9e au point d'acc\u00e8s du coordonnateur.<\/li>\n<li>Le coordonnateur v\u00e9rifie la pr\u00e9sence du lien dans le cache. S'il existe et qu'il est actif, il est imm\u00e9diatement renvoy\u00e9 au client, sinon les n\u0153uds sont interrog\u00e9s pour v\u00e9rifier leur disponibilit\u00e9.<\/li>\n<li>Le fichier est en cours de r\u00e9cup\u00e9ration via le lien, si trouv\u00e9. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Alternatives pour les cr\u00e9ateurs de musique<\/h3>\n<p>\nJe me suis toujours demand\u00e9 comment \u00e9valuer objectivement le prix de nombreuses \u0153uvres cr\u00e9atives. Pourquoi, par exemple, une personne fixe-t-elle le prix de son album musical \u00e0 10 $ ? Ou \u00e0 20 $ ou \u00e0 100 $. Quel est l'algorithme ? Quand, par exemple, nous parlons d'un produit physique ou m\u00eame de nombreux types de services, nous pouvons au moins calculer le co\u00fbt de production et partir de l\u00e0. <\/p>\n<p>Ok, supposons qu'on fixe le prix \u00e0 10 $. Est-ce vraiment efficace ? Supposons que j'\u00e9coute l'album quelque part ou une chanson de celui-ci et que je souhaite remercier l'artiste. Mais selon mes impressions et mes capacit\u00e9s, 3 $ est mon plafond. Que faire alors ? Il est probable que je ne ferai rien, comme la plupart des gens. <\/p>\n<p>En fixant un prix fixe pour un travail cr\u00e9atif, tu te limites simplement, tu ne permets pas \u00e0 un plus grand nombre de personnes de t'envoyer moins d'argent, ce qui pourrait cumulativement \u00eatre plus important que ce que ceux qui ach\u00e8tent \u00e0 ton prix fixe. Je pense que la cr\u00e9ativit\u00e9 est justement ce domaine o\u00f9 les dons devraient, en premier lieu, pr\u00e9dominer. Pour cela, il faut :<\/p>\n<ul>\n<li>Apprendre aux gens \u00e0 remercier de cette mani\u00e8re. Les cr\u00e9ateurs doivent montrer clairement qu'ils aimeraient recevoir des dons, en ajoutant des liens vers diff\u00e9rents moyens de paiement, etc.<\/li>\n<li>Il faut plus de m\u00e9canismes pour simplifier et renforcer ces processus. Par exemple, cr\u00e9er un site global o\u00f9 les dons pour la cr\u00e9ativit\u00e9 pourraient \u00eatre faits via des liens d'auteur.\n<p>Disons que le lien est \u00e0 peu pr\u00e8s comme \u00e7a : <\/p>\n<p><b><code>http:\/\/someartistsdonationsite.site\/category\/artist?external-info<\/code><\/b><\/p>\n<p>Si l'on se limite aux musiciens, alors :<\/p>\n<p><b><code>http:\/\/someartistsdonationsite.com\/music\/miyagi?song=blabla<\/code><\/b><\/p>\n<p>L'interpr\u00e8te doit v\u00e9rifier son pseudo et s'y rattacher.<\/p>\n<p>Dans le client museria, nous ajoutons une fonction de g\u00e9n\u00e9ration 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 \u00e0 c\u00f4t\u00e9 des chansons. Les utilisateurs ont la possibilit\u00e9 de faire des dons tr\u00e8s rapidement et facilement. \u00c9videmment, cette approche peut \u00eatre utilis\u00e9e dans n'importe quel projet et cat\u00e9gorie de cr\u00e9ativit\u00e9, pas seulement \u00e0 travers le stockage.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Pourquoi, en particulier pour toi, un stockage musical, et comment y participer ?<\/h3>\n<p><\/p>\n<ul>\n<li>Si tu travailles sur un projet li\u00e9 \u00e0 la musique ou si tu pr\u00e9vois d'en cr\u00e9er un, c'est pour cela que tout cela a \u00e9t\u00e9 con\u00e7u. Tu peux utiliser museria pour stocker et obtenir des chansons, augmentant le flux de chansons en ligne. Si tu as la possibilit\u00e9 de cr\u00e9er et de maintenir au moins un n\u0153ud, ce sera la meilleure contribution au d\u00e9veloppement du r\u00e9seau.<\/li>\n<li>Peut-\u00eatre es-tu pr\u00eat \u00e0 assumer un autre r\u00f4le : aider avec le code, ou remplir et mod\u00e9rer la base de donn\u00e9es, diffuser des informations sur le projet \u00e0 tes connaissances, etc.<\/li>\n<li>Peut-\u00eatre que l'id\u00e9e t'a plu et que tu es pr\u00eat \u00e0 aider financi\u00e8rement pour que tout cela vive et se d\u00e9veloppe. Plus il y aura de n\u0153uds, plus il y aura de chansons.<\/li>\n<li>Ou peut-\u00eatre qu'\u00e0 un moment donn\u00e9, tu auras simplement besoin de trouver et de t\u00e9l\u00e9charger une chanson. Tu pourras le faire tr\u00e8s facilement, par exemple, via <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/MuseriaBot\">un bot Telegram<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nLe projet est actuellement \u00e0 un stade tr\u00e8s pr\u00e9coce. Un r\u00e9seau test a \u00e9t\u00e9 lanc\u00e9, les n\u0153uds peuvent souvent red\u00e9marrer, n\u00e9cessiter des mises \u00e0 jour, etc. En l'absence de probl\u00e8mes critiques pendant la p\u00e9riode d'\u00e9valuation, ce m\u00eame r\u00e9seau sera transform\u00e9 en r\u00e9seau principal.<\/p>\n<p>Pour voir les informations sur un n\u0153ud de l'ext\u00e9rieur : le nombre de chansons, l'espace libre, etc., tu peux te rendre sur un lien de type <b><code>http:\/\/node-address\/status<\/code><\/b> ou <b><code>http:\/\/node-address\/status?pretty<\/code><\/b><\/p>\n<p>Mes contacts :<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/ortex\">@ortex<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"mailto:mywebstreet@gmail.com\">mywebstreet@gmail.com<\/a><\/noindex>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/museria\">Groupe Telegram en anglais.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/museria.com\/\">Et le site qui a donn\u00e9 naissance \u00e0 toute cette id\u00e9e.<\/a><\/noindex><\/li>\n<\/ul>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495058\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u044f \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0431\u0438\u0440\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0438 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0434\u043e\u043c\u0430\/\u043d\u0430 \u0443\u043b\u0438\u0446\u0435\/\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430\u0445 \u0438.\u0442.\u0434. \u0418 \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0432 \u043f\u043e\u0442\u043e\u043a\u0435, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u043e\u0438\u043c \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c. \u041f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u043b \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043e\u0434\u043d\u043e\u0439 \u201c\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439\u201d. \u0410 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u044b \u043f\u0435\u0441\u0435\u043d. \u041a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0435 \u0443\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u043b\u0430 api, \u043d\u0430 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80222","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u044f \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Museria \u2014 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043c\u0443\u0437\u044b\u043a\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u044f \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-04T11:42:18+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-04T11:42:18+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Museria \u2014 un stockage d\u00e9centralis\u00e9 de musique | ProHoster","description":"Je me suis un jour d\u00e9cid\u00e9 \u00e0 \u00e9crire une application, juste pour.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Museria \u2014 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043c\u0443\u0437\u044b\u043a\u0438 | ProHoster","og:description":"\u0421\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u044f \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-04T11:42:18+00:00","article:modified_time":"2020-05-04T11:42:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80222","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:22:48","updated":"2022-10-08 10:56:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/80222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=80222"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/80222\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/80223"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=80222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=80222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=80222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}