{"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\/da\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki","title":{"rendered":"Museria \u2014 decentraliseret musikopbevaring","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Museria \u2014 decentraliseret musikopbevaring\" src=\"\/wp-content\/uploads\/2020\/05\/e5323f70f0df3f3bb6fb92ae0544ad2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn dag besluttede jeg at skrive en applikation til at v\u00e6lge musik til mig selv, s\u00e5 jeg kunne lytte til det hjemme, ude og under tr\u00e6ning osv. Og at alt dette skulle fungere i en str\u00f8m med minimal involvering fra min side. Jeg kom op med arkitekturen, skitserede prototypen, og endte op med et \u201elille problem\u201c. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMen jeg forstod ikke, hvor jeg skulle f\u00e5 filerne til sangene fra. P\u00e5 det tidspunkt havde Vkontakte allerede lukket sit API, og p\u00e5 de store musikportaler var der ogs\u00e5 stilstand, selv sangene blev givet i bidder for ikke at blive masseret. Der var kun nogle enkelte engangs-websteder med tonsvis af reklamer og skrald, samt forskellige tvivlsomme programmer til at grabbe og andre \u201esnavsede\u201c l\u00f8sninger. Kort sagt, der var ingen reelle gode l\u00f8sninger. Man kan selvf\u00f8lgelig k\u00f8be et abonnement p\u00e5 Yandex Music eller lignende. Men igen, der er ikke noget \u00e5bent offentligt API, og du har ikke adgang til musikken programm\u00e6ssigt. Flere store virksomheder har i bund og grund begr\u00e6nset andres adgang til musikken. Hvorfor skete det hele? Da jeg dykkede dybere, blev det klart, at det prim\u00e6re problem ligger i ophavsretten. Den nuv\u00e6rende l\u00f8sning i form af abonnementer tilfredsstiller mange kommercielle forfattere af musikv\u00e6rker og disse virksomheder. Samtidig er ikke-kommerciel og betinget kommerciel musik ogs\u00e5 med i den generelle liste. Enten betaler du for alt, eller ogs\u00e5 lytter du slet ikke til noget.<\/p>\n<p>Og jeg begyndte at t\u00e6nke over, hvad jeg skulle g\u00f8re med det hele. Hvordan kan man organisere frit distribution af musik? Hvad ville jeg g\u00f8re, hvis jeg selv besk\u00e6ftigede mig med musikproduktion og ville tjene penge p\u00e5 det? Ville jeg kunne lide, at mine sange blev distribueret p\u00e5 piratman\u00e9r? Hvilke alternative l\u00f8sninger er der overhovedet? <\/p>\n<p>Resultatet er, at der er opst\u00e5et to hovedproblemer, som skal l\u00f8ses:<\/p>\n<ul>\n<li>Organisering af fri distribution af musik p\u00e5 metoder, der er bekvemme for de fleste mennesker, herunder programmatiske.<\/li>\n<li>Tilbud af alternativer til musikskabere for at tjene penge<\/li>\n<\/ul>\n<p><\/p>\n<h3>Globalt decentralt musiklager<\/h3>\n<p>\nOprindeligt fors\u00f8gte jeg at finde eksisterende l\u00f8sninger og skabe alt baseret p\u00e5 dem. Efter lidt tid med at lede, fangede det f\u00f8rste min opm\u00e6rksomhed <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ipfs\/ipfs\">ipfs<\/a><\/noindex>. Jeg begyndte at gennemf\u00f8re min id\u00e9, men efter noget tid opdagede jeg flere kritiske problemer med denne l\u00f8sning:<\/p>\n<ul>\n<li>Ipfs \u2014 et lager for alt og ingenting. Her finnes bilder, musikk, videoer og hva som helst. Generelt sett er det en stor, planetarisk \"s\u00f8ppeldynge\". Derfor, n\u00e5r du starter din node, f\u00e5r du umiddelbart en enorm belastning. Maskinen lider. <\/li>\n<li>En slags uferdig mekanisme for \u00e5 samle \"s\u00f8ppel\". Jeg vet ikke hvordan det er n\u00e5, men p\u00e5 det tidspunktet, hvis du i konfigurasjonen spesifiserte at du ville begrense lagringen til ti gigabyte data, s\u00e5 betydde det ingenting. Lagringen vokste, og ignorerte mange konfigurasjonsparametre. Til slutt m\u00e5tte man ha en enorm mengde harddiskplass, mens ipfs klarte \u00e5 kvitte seg med det un\u00f8dvendige.<\/li>\n<li>P\u00e5 tidspunktet for bruken av biblioteket (jeg vet ikke hvordan det er n\u00e5), var det ikke implementert tidsavbrudd for klienten. Du sender en foresp\u00f8rsel om \u00e5 motta en fil, og hvis den ikke finnes, henger du bare. Selvf\u00f8lgelig fant folk p\u00e5 forskjellige omveier som delvis l\u00f8ste problemet, men dette var bare n\u00f8dl\u00f8sninger. Slike ting b\u00f8r v\u00e6re innebygget.<\/li>\n<\/ul>\n<p>\nDet var ogs\u00e5 mange sm\u00e5 problemer, og inntrykket som ble dannet var entydig: dette kan ikke brukes til prosjektet. Jeg fortsatte letingen etter lagring, unders\u00f8kte forskjellige alternativer, men fant ingen passende.<\/p>\n<p>Til slutt bestemte jeg meg for \u00e5 pr\u00f8ve \u00e5 skrive et desentralisert lagringssystem selv. La det ikke v\u00e6re interplanet\u00e6rt, men det vil l\u00f8se den spesifikke oppgaven.<\/p>\n<p>Slik ble det til <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 er det prim\u00e6re, laveste laget som gj\u00f8r det mulig \u00e5 koble noder til et nettverk. Det inneholder en algoritme som jeg per n\u00e5 har implementert delvis med tanke p\u00e5 omtrent 10000 servere. Den fullstendige versjonen av algoritmen er mye mer komplisert \u00e5 implementere og ville krevd flere m\u00e5neder til (kanskje mer).<\/p>\n<p>Jeg vil ikke g\u00e5 i detalj om spreadable i denne artikkelen, men heller skrive en egen senere. Her vil jeg bare nevne noen spesielle trekk:<\/p>\n<ul>\n<li>Det fungerer via http\/https.<\/li>\n<li>Du kan opprette et eget nettverk for en spesifikk oppgave, noe som betydelig vil redusere belastningen p\u00e5 hvert enkelt prosjekt, sammenlignet med hvis de alle var i ett nettverk.<\/li>\n<li>Mekanismen med tidsavbrudd og andre detaljer var opprinnelig planlagt. Og det fungerer for alle metoder, b\u00e5de i klienten og i noden. Du kan fleksibelt administrere parametrene fra din applikasjon.<\/li>\n<li>Biblioteket er skrevet i Node.js. Problemer med ydeevnen bliver kompenseret af den decentrale natur. Belastningen kan 'spredes' ved at \u00f8ge antallet af noder. Til geng\u00e6ld er der mange fordele: et stort f\u00e6llesskab, enkelhed og brugervenlighed, isomorfisk klient, frav\u00e6r af eksterne afh\u00e6ngigheder osv.<\/li>\n<\/ul>\n<p>\n<b>storacle <\/b> \u2014 er et lag, der nedarves fra spreadable, som muligg\u00f8r lagring af filer p\u00e5 netv\u00e6rket. Hver fil har sin egen hash baseret p\u00e5 indholdet, som den senere kan hentes p\u00e5. Filerne opdeles ikke i blokke, men opbevares hele.<\/p>\n<p><b>metastocle <\/b> \u2014 et lag, der nedarves fra spreadable, som tillader lagring af data i netv\u00e6rket, men ikke filer. Gr\u00e6nsefladen minder om NoSQL-databaser. Man kan for eksempel tilf\u00f8je en fil til storacle, f\u00e5 dens hash og skrive den i metastocle med tilknytning til noget.<\/p>\n<p><b>museria<\/b> \u2014 nedarves fra storacle og metastocle. Dette lag er direkte ansvarligt for opbevaring af musik. Lagringen arbejder kun med mp3-filer og ID3-tags. <\/p>\n<p>Som 'n\u00f8gle' til sangen bruges dens fulde navn i form af <b>Kunstner (TPE1) \u2014 Titel (TIT2)<\/b>. For eksempel:<\/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>\nMan kan f\u00e5 en maksimal detaljeret forst\u00e5else af, hvordan sangtitler dannes <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria\/blob\/master\/src\/utils.js\">her<\/a><\/noindex>. Man skal kigge p\u00e5 funktionen <b>utils.beautifySongTitle()<\/b>.<\/p>\n<p>Et match af n\u00f8gler defineres som en bestemt procentdel indstillet i nodens indstillinger. For eksempel betyder v\u00e6rdien 0,85, at hvis sammenligningsfunktionen for n\u00f8gler (sangtitler) finder lighed p\u00e5 mere end 85%, s\u00e5 er det den samme sang.<\/p>\n<p>Algoritmen til at bestemme ligheden findes ogs\u00e5 der, i funktionen <b>utils.getSongSimilarity()<\/b>.<\/p>\n<p>Coveret til sangen, til senere opn\u00e5else, skal ogs\u00e5 knyttes gennem tags (<b>APIC<\/b>). I v\u00e6rkt\u00f8jerne (utils) findes alle n\u00f8dvendige metoder til at hente og behandle tags.<\/p>\n<p>Et eksempel p\u00e5 arbejdet med lageret gennem klienten kan ses i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria\">readme<\/a><\/noindex>.<\/p>\n<blockquote><p>Alle de ovenn\u00e6vnte lag er selvforsynende og kan bruges s\u00e6rskilt som lavere lag i andre projekter. For eksempel er der allerede nu tanker om at lave et lag til opbevaring af b\u00f8ger.<\/p><\/blockquote>\n<p>\n<b>museria-global<\/b> \u2014 er et allerede konfigureret git-repositorium til at starte sin egen node i det globale musiknetv\u00e6rk. Klon det, <b>npm i &amp;&amp; npm<\/b> start, og det er stort set det hele. Man kan konfigurere det mere detaljeret, starte det i Docker osv. Der er detaljeret information tilg\u00e6ngelig p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria-global#museria-global-storage-alpha-\">GitHub<\/a><\/noindex>.<\/p>\n<p>N\u00e5r et repository opdateres, skal din node ogs\u00e5 opdateres. Hvis hoved- eller minorversionsnummeret \u00e6ndres, er denne handling obligatorisk, ellers vil \u00e6ldre noder blive ignoreret af netv\u00e6rket.<\/p>\n<p>Du kan arbejde med sange b\u00e5de manuelt og programmatisk. Hver node starter en server til forskellige opgaver. N\u00e5r du bes\u00f8ger den standard endpoint, f\u00e5r du en brugergr\u00e6nseflade til at arbejde med musik. For eksempel kan du bes\u00f8ge <noindex><a rel=\"nofollow\" href=\"http:\/\/storage.museria.com\">roden af noden<\/a><\/noindex> (linket kan v\u00e6re for\u00e6ldet senere, indgangsnoder kan ogs\u00e5 f\u00e5s i <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/museria\">telegram<\/a><\/noindex>, eller du kan se opdateringer p\u00e5 GitHub).<\/p>\n<p>P\u00e5 den m\u00e5de kan du s\u00f8ge og downloade sange til lageret. Upload af sange kan finde sted i to tilstande: normal og modereret. Den anden tilstand betyder, at arbejdet udf\u00f8res af et menneske og ikke et program. Hvis du s\u00e6tter dette flueben ved tilf\u00f8jelse, skal du l\u00f8se en captcha. Sange kan tilf\u00f8jes med prioriteter -1, 0 eller 1. Prioritet 1 kan kun s\u00e6ttes i den modererede tilstand. Prioriteterne er n\u00f8dvendige, s\u00e5 lageret kan tr\u00e6ffe en mere effektiv beslutning om, hvad der skal g\u00f8res, n\u00e5r du fors\u00f8ger at erstatte en eksisterende sang med en ny. Jo h\u00f8jere prioritet, desto st\u00f8rre sandsynlighed for at du overskriver den eksisterende fil. Dette hj\u00e6lper med at bek\u00e6mpe spam og \u00f8ger kvaliteten af de uploadede sange. <\/p>\n<p>Hvis du begynder at tilf\u00f8je sange til lageret, skal du fors\u00f8ge at vedh\u00e6fte billeder (cover), selvom dette felt ikke er obligatorisk. I 99 % af tilf\u00e6ldene er de f\u00f8rste billeder i Google, n\u00e5r man s\u00f8ger med sangtitler, albumcovers.<\/p>\n<p>Hvordan filerne teknisk tilf\u00f8jes, i grove tr\u00e6k:<\/p>\n<ul>\n<li>Klienten modtager adressen til en ledig node, som i et stykke tid vil blive koordinator.<\/li>\n<li>Funktionen til at tilf\u00f8je en sang (af et menneske eller kode) udl\u00f8ses, foresp\u00f8rgslen sendes til koordinatorens endpoint.<\/li>\n<li>Koordinatoren beregner, hvor mange duplikater der skal gemmes (konfigurerbar parameter).<\/li>\n<li>De mest passende noder til opbevaring findes.<\/li>\n<li>Filene sendes direkte til disse noder. <\/li>\n<\/ul>\n<p>\nHvordan filer teknisk hentes:<\/p>\n<ul>\n<li>Klienten modtager adressen til en ledig node, som i et stykke tid vil blive koordinator.<\/li>\n<li>Funktionen til at hente en sang (af et menneske eller kode) udl\u00f8ses, foresp\u00f8rgslen sendes til koordinatorens endpoint.<\/li>\n<li>Koordinatoren tjekker, om der er en link i cachen. Hvis der er, og det fungerer, returneres det straks til klienten, ellers foresp\u00f8rges noderne om deres tilg\u00e6ngelighed.<\/li>\n<li>Filen hentes fra linket, hvis et s\u00e5dant findes. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Alternativer for musikskabere<\/h3>\n<p>\nJeg har altid v\u00e6ret interesseret i, hvordan man objektivt kan vurdere prisen p\u00e5 mange kreative v\u00e6rker. Hvorfor s\u00e6tter en person for eksempel sit musikalbum til 10$? Eller 20$ eller 100$. Hvor er algoritmen? N\u00e5r vi taler om et fysisk produkt, eller endda mange typer tjenester, kan vi i det mindste regne omkostningerne og tage udgangspunkt i det. <\/p>\n<p>Okay, lad os sige, at prisen er sat til 10$. Er det effektivt? Lad os sige, at jeg har lyttet til et album et sted eller en sang derfra og besluttede at give lidt som tak. Men efter min egen opfattelse og mine egne muligheder er 3$ mit loft. Hvad g\u00f8r man s\u00e5? Sandsynligvis vil jeg bare ikke g\u00f8re noget, ligesom de fleste mennesker. <\/p>\n<p>Ved at s\u00e6tte en fast pris for kreativt arbejde begr\u00e6nser man sig selv, man giver ikke et st\u00f8rre antal mennesker mulighed for at sende lesser bel\u00f8b, som i sum kan v\u00e6re mere imponerende end dem, der k\u00f8ber til den pris, man har fastsat. Jeg mener, at kreativitet netop er det omr\u00e5de, hvor donationer f\u00f8rst og fremmest skal v\u00e6re styrende. For dette kr\u00e6ves der:<\/p>\n<ul>\n<li>At l\u00e6re folk at takke p\u00e5 denne m\u00e5de. Skaberne skal tydeligt vise, at de \u00f8nsker at modtage donationer og tilf\u00f8je links til forskellige betalingsmetoder overalt.<\/li>\n<li>Der skal v\u00e6re flere mekanismer til at forenkle og styrke disse processer. For eksempel at oprette et globalt website, hvor man kan donere for kreativitet ved hj\u00e6lp af forfatterlinks.\n<p>Lad os sige, at linket ser ungef\u00e4r s\u00e5dan ud: <\/p>\n<p><b><code>http:\/\/someartistsdonationsite.site\/category\/artist?external-info<\/code><\/b><\/p>\n<p>Hvis vi sn\u00e6ver det ned til musikere, s\u00e5:<\/p>\n<p><b><code>http:\/\/someartistsdonationsite.com\/music\/miyagi?song=blabla<\/code><\/b><\/p>\n<p>Kunstneren skal verificere sit kaldenavn og knytte det til sig.<\/p>\n<p>I klienten museria tilf\u00f8jer vi en funktion til at generere et s\u00e5dant link, og alle projekter, der bruger lageret, kan placere donation buttons med disse links p\u00e5 deres websites\/appliceringer ved siden af sangene. Brugerne har mulighed for hurtigt og let at donere. Naturligvis kan denne tilgang anvendes i ethvert projekt og kreativ kategori, ikke kun gennem lageret.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Hvorfor, netop for dig, er musiklageret vigtigt, og hvordan kan man deltage i det?<\/h3>\n<p><\/p>\n<ul>\n<li>Hvis du arbejder p\u00e5 et projekt relateret til musik, eller planl\u00e6gger at oprette et, s\u00e5 er det hele blevet t\u00e6nkt i den retning. Du kan bruge museria til at gemme og hente sange, hvilket \u00f8ger str\u00f8mmen af sange online. Hvis du desuden har mulighed for at oprette og vedligeholde mindst \u00e9n egen node, vil det v\u00e6re det bedste bidrag til udviklingen af netv\u00e6rket.<\/li>\n<li>M\u00e5ske er du klar til at p\u00e5tage dig en anden rolle: hj\u00e6lpe med koden, eller udfylde og moderere databasen, sprede information om projektet til dine bekendte osv.<\/li>\n<li>M\u00e5ske kunne du lide id\u00e9en, og du er klar til at st\u00f8tte \u00f8konomisk, s\u00e5 dette kan eksistere og udvikle sig. Jo flere noder, jo flere sange.<\/li>\n<li>Eller m\u00e5ske f\u00e5r du bare behov for at finde og downloade en sang p\u00e5 et tidspunkt. Du kan g\u00f8re dette meget enkelt, for eksempel via <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/MuseriaBot\">telegram-boten<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nProjektet er i \u00f8jeblikket i den tidlige fase. Testnettet er startet, noderne kan ofte genstarte, kr\u00e6ve opdateringer osv. Hvis der ikke opst\u00e5r kritiske problemer i l\u00f8bet af evalueringsperioden, vil dette net transformeres til hovednettet.<\/p>\n<p>Du kan se information om en node udefra: antallet af sange, ledig plads osv. ved hj\u00e6lp af et link i formatet <b><code>http:\/\/node-address\/status<\/code><\/b> eller <b><code>http:\/\/node-address\/status?pretty<\/code><\/b><\/p>\n<p>Mine kontaktoplysninger:<\/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\">Gruppen p\u00e5 Telegram p\u00e5 engelsk.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/museria.com\/\">Og hjemmesiden, der gjorde det hele muligt.<\/a><\/noindex><\/li>\n<\/ul>\n<p>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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 et decentraliseret musiklager | ProHoster","description":"Jeg satte mig en dag for at skrive en applikation, for at.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/80222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=80222"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/80222\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/80223"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=80222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=80222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=80222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}