Museria – detsentraliseeritud muusikasalvestus

Museria – detsentraliseeritud muusikasalvestus

Ühel päeval otsustasin kirjutada rakenduse, et valida endale muusika välja ja kuulata seda kodus/tänaval/trennis jne. Ja nii, et see kõik toimiks vooluna, minu minimaalse osalusega. Mõtlesin välja arhitektuuri, visandasin prototüübi ja sattusin lõpuks ühe "väikese probleemiga".

Ja pole selge, kust laulufaile ise hankida. Selleks ajaks oli VKontakte api juba sulgenud, suurtes muusikaportaalides oli samuti kõik vaigistatud, isegi lugusid anti välja tükkidena, et mitte sõeluda. Järele jäid vaid üksikud lendlevad saidid, kus oli tonni reklaami ja igasugust prügi, kõikvõimalikud kahtlased haaramisprogrammid ja muud "räpased" võimalused. Üldiselt mitte ühtegi tõeliselt head lahendust. Muidugi saate osta mõne Yandexi muusika vms tellimuse. Kuid jällegi pole kuskil avatud avalikku API-t ja teil pole programmiliselt juurdepääsu muusikale. Mitmed suured ettevõtted on sisuliselt piiranud teiste juurdepääsu muusikale. Miks see üldse juhtus? Süvenedes sai selgeks, et peamine probleem on autoriõigused. Praegune tellimuste vormis lahendus sobib paljudele kommertsmuusika autoritele ja samadele ettevõtetele. Samas mahub üldnimekirja ka mitte- ja poolkommertslik muusika. Sa kas maksad kõige eest või kuulad üldse mitte midagi.

Ja ma hakkasin mõtlema, mida selle kõigega peale hakata. Kuidas saaksime korraldada muusika tasuta levitamist? Mida ma teeksin, kui looksin ise muusikat ja tahaksin sellega raha teenida? Kas mulle meeldiks, kui mu laulud oleksid piraatlikud? Milline alternatiivne lahendus ikkagi on?

Selle tulemusena on kaks peamist probleemi, mis tuleb lahendada:

  • Muusika tasuta levitamise korraldamine, kasutades enamikule inimestele sobivaid meetodeid, sealhulgas tarkvara.
  • Muusikaloojatele raha teenimiseks alternatiivide pakkumine

Ülemaailmne detsentraliseeritud muusikasalvestus

Esialgu püüdsin leida olemasolevaid lahendusi ja sellest lähtuvalt kõike luua. Pärast mõnda aega otsimist oli esimene, mis mulle meeldis ipfs. Hakkasin oma ideed ellu viima, kuid mõne aja pärast avastasin selles lahenduses mitu kriitilist probleemi:

  • Ipfs – salvestusruum kõige ja kõigi jaoks. Seal on pilte ja muusikat ja videoid ja kõike, mida soovite. Üldiselt selline suur planetaarne “prügikast”. Seetõttu saate oma sõlme käivitamisel kohe tohutu koormuse. Auto lihtsalt väänleb valust.
  • Mingi lõpetamata “prügi” kogumise mehhanism. Ma ei tea, kuidas see praegu on, aga kui sel hetkel kirjutasite konfiguratsioonis, et soovite piirata salvestusruumi kümne gigabaidise andmemahuga, siis see ei tähendanud midagi. Salvestusruum kasvas, jättes tähelepanuta paljusid konfiguratsiooniparameetreid. Selle tulemusena oli vaja omada tohutut kõvaketta reservi, kuni ipfs leidis, kuidas mittevajalik lähtestada.
  • Teegi kasutamise ajal (ma ei tea, kuidas see praegu on) ei olnud kliendil ajalõppe rakendatud. Saadate faili vastuvõtmise taotluse ja kui seda pole, siis lihtsalt riputate. Muidugi leidsid inimesed kõikvõimalikke lahendusi, mis probleemi osaliselt lahendasid, kuid need olid kargud. Need asjad peaksid karbist välja tulema.

Väikeseid probleeme oli ikka palju ja mulje jäi selgeks: seda ei saa projekti jaoks kasutada. Jätkasin laoruumi otsimist, erinevate võimaluste uurimist, kuid ei leidnud midagi sobivat.

Lõpuks otsustasin, et tasub proovida ise detsentraliseeritud salvestusruumi kirjutada. Isegi kui see ei pretendeeri planeetidevahelisele, lahendab see konkreetse probleemi.

Ja nii see välja tuli levitav, hoidla, metastokkel, muusika, musicia-global.

levitav - see on peamine, madalaim kiht, mis võimaldab ühendada sõlmed võrku. See sisaldab algoritmi, mida olen siiani rakendanud osaliselt umbes 10000 XNUMX serveri põhjal. Algoritmi täisversiooni on palju keerulisem rakendada ja see nõuab mitut lisakuud (võib-olla rohkemgi).

Ma ei kirjelda selles artiklis levitatavat üksikasjalikult; parem on kunagi kirjutada eraldi. Siinkohal märgin vaid mõned funktsioonid:

  • Töötab läbi http/https.
  • Konkreetse ülesande jaoks saate luua eraldi võrgu, mis vähendab oluliselt iga üksiku projekti koormust, kui need kõik oleksid samas võrgus.
  • Algselt mõeldi välja mehhanism koos ajalõppude ja muude pisiasjadega. Ja see töötab kõigi meetodite puhul nii kliendis kui ka sõlmes. Saate oma rakenduses sätteid paindlikult hallata.
  • Raamatukogu on kirjutatud nodejs. Viru jõudlusprobleemid kompenseeritakse selle detsentraliseeritud olemuse tõttu. Koormust saab "laiali hajutada", suurendades sõlmede arvu. Vastutasuks on palju eeliseid: tohutu kogukond, lihtsus ja kasutusmugavus, isomorfne klient, väliste sõltuvuste puudumine jne.

hoidla on levitatavast päritud kiht, mis võimaldab faile võrku salvestada. Igal failil on oma sisu räsi, mida saab hiljem kasutada selle taastamiseks. Faile ei jagata plokkideks, vaid salvestatakse täielikult.

metastokkel - levitatavast päritud kiht, mis võimaldab salvestada võrku andmeid, kuid mitte faile. Liides sarnaneb Nosql-i andmebaasiga. Saate näiteks lisada faili Storacle'i, hankida selle räsi ja kirjutada selle metastocle'i koos millegi lingiga.

muusika - päritud sarvedest ja metastoklitest. See kiht vastutab otseselt muusika salvestamise eest. Salvestus töötab ainult mp3-failide ja ID3-siltidega.

Laulu võtmena kasutatakse vormis selle täisnime Esitaja (TPE1) – pealkiri (TIT2). Näiteks:

  • Väävel – koorem
  • Hi-rez – Lost My Way (feat. Emilio Rojas, Dani Devinci)

Saate võimalikult üksikasjalikult teada, kuidas laulude pealkirjad moodustuvad. siin. Peate funktsiooni vaatama utils.beautifySongTitle().

Sõlme seadetes määratletud vastete protsent loetakse vasteks. Näiteks väärtus 0.85 tähendab, et kui klahvide võrdlusfunktsioon (laulude nimed) leidis sarnasuse rohkem kui 85%, siis on tegemist sama lauluga.

Sarnasuse määramise algoritm on funktsioonis olemas utils.getSongSimilarity().

Loole saab hilisemaks kättesaamiseks kaane kinnitada ka siltide kaudu (APIC). Utiliididel on kõik vajalikud meetodid siltide vastuvõtmiseks ja töötlemiseks.

Näite salvestusruumiga kliendi kaudu töötamise kohta leiate aadressilt readme.

Kõik ülaltoodud kihid on iseseisvad ja neid saab kasutada eraldi alumiste kihtidena teiste projektide jaoks. Näiteks on juba mõte teha kiht raamatute hoiustamiseks.

musicia-global on juba konfigureeritud git-hoidla oma sõlme käivitamiseks globaalses muusikavõrgus. Kloonimine npm i && npm alusta ja see on põhimõtteliselt kõik. Saate seda täpsemalt seadistada, Dockeris käivitada jne. Üksikasjalik teave on saadaval aadressil githabe.

Kui hoidla on värskendatud, peate värskendama oma sõlme. Kui põhi- või väikeversiooni number muutub, on see toiming kohustuslik, vastasel juhul eirab võrk vanu sõlmi.

Saate lugudega töötada käsitsi ja programmiliselt. Iga sõlm käitab erinevate ülesannete jaoks serverit. Sealhulgas saate vaikimisi lõpp-punkti külastades liidese muusikaga töötamiseks. Näiteks võite minna aadressile juursõlm (link ei pruugi hiljem asjakohane olla, sisendsõlmed saab ka sisse telegrammvõi otsige värskendusi Githubist).

Nii saate laule otsida ja salvestusruumi üles laadida. Lugude üleslaadimine võib toimuda kahes režiimis: tavaline ja modereeritud. Teine režiim tähendab, et tööd teeb inimene, mitte programm. Ja kui lisamisel selle kasti märgite, peate lahendama captcha. Laule saab lisada prioriteediga -1, 0 või 1. Prioriteeti 1 saab määrata ainult modereeritud režiimis. Prioriteedid on vajalikud, et salvestusruum saaks tõhusamalt otsustada, mida teha, kui proovite olemasolevat lugu uuega asendada. Mida kõrgem on prioriteet, seda tõenäolisemalt kirjutate olemasoleva faili üle. See aitab võidelda rämpsposti vastu ja tõstab allalaaditud lugude kvaliteeti.

Kui hakkate oma salvestusruumi lugusid lisama, proovige lisada pilte (kaant), kuigi see väli pole kohustuslik. 99% juhtudest on Google'is esimesed laulude pealkirjade põhjal tehtud pildid albumikaaned.

Kuidas failide lisamine tehniliselt toimub, lühidalt:

  • Klient saab tasuta sõlme aadressi, millest saab mõneks ajaks koordinaator.
  • Laulu lisamise funktsioon käivitatakse (isiku või koodi poolt) ja esitatakse taotlus lisada lõpp-punktile koordinaator.
  • Koordinaator arvutab välja, mitu duplikaati tuleks salvestada (konfigureeritav parameeter).
  • Otsitakse salvestamiseks sobivaimad sõlmed.
  • Fail läheb otse nendesse sõlmedesse.

Kuidas failid tehniliselt vastu võetakse:

  • Klient saab tasuta sõlme aadressi, millest saab mõneks ajaks koordinaator.
  • Laulu vastuvõtmise funktsioon (isiku või koodi poolt) käivitatakse ja koordinaatori lõpp-punktis esitatakse taotlus selle vastuvõtmiseks.
  • Koordinaator kontrollib vahemälus lingi olemasolu. Kui see on olemas ja see töötab, tagastatakse see kohe kliendile, vastasel juhul küsitakse sõlmede saadavust.
  • Fail saadakse lingilt, kui see leitakse.

Alternatiivid muusikaloojatele

Mind on alati huvitanud küsimus, kuidas saab objektiivselt hinnata paljude loometööde väärtust? Miks pakub inimene näiteks oma muusikaalbumit 10 dollari eest? Kas 20 või 100 dollari eest. Kus on algoritm? Kui me räägime näiteks mõnest füüsilisest tootest või isegi mitut tüüpi teenustest, siis saame vähemalt kulu arvutada ja sellest lähtuda.

Olgu, oletame, et panustame 10 dollarit. Kas see on väga tõhus? Oletame, et kuulasin kuskilt albumit või sealt pärit laulu ja otsustasin oma tänu avaldada. Aga vastavalt minu tunnetele ja enda võimalustele on minu lagi 3 dollarit. Mida me siis tegema peaksime? Tõenäoliselt ma lihtsalt ei tee midagi, nagu enamik inimesi.

Loovtööle mingi kindla hinna määramisega lihtsalt piirad ennast, takistades suuremal hulgal inimestel sulle vähem raha saatmast, mis kokkuvõttes võib olla muljetavaldavam kui need, kes sinu määratud hinnaga ostavad. Mulle tundub, et loovus on just see valdkond, kus kõigepealt peaksid valitsema annetused. Selleks vajate:

  • Õpetage inimesi sel viisil tänama. Tegijad ise peavad selgelt näitama, et nad sooviksid annetusi saada, lisama kõikjale erinevate makseviiside linke jne.
  • Nende protsesside lihtsustamiseks ja tugevdamiseks on vaja rohkem mehhanisme. Näiteks looge mingisugune ülemaailmne veebisait, kus saate autoriõiguse linke kasutades loovuse heaks annetada.

    Oletame, et link on umbes selline:

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

    Kui kitsendada seda muusikutele, siis:

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

    Esineja peab oma hüüdnime kinnitama ja sellele lisama.

    Lisame funktsiooni sellise lingi genereerimiseks museria kliendile ning kõik repositooriumit kasutavad projektid saavad oma veebisaitidel/rakendustes laulude kõrvale paigutada nende linkidega annetusnuppe. Kasutajatel on võimalus teha annetus väga kiiresti ja lihtsalt. Loomulikult saab seda lähenemisviisi kasutada igas projektis ja loovuse kategoorias, mitte ainult ladustamise kaudu.

Miks on teil muusikasalvestusruumi vaja ja kuidas saate selles osaleda?

  • Kui töötate muusikaga seotud projekti kallal või plaanite seda luua, siis see on see, milleks kõik oli mõeldud. Saate kasutada museriat lugude salvestamiseks ja allalaadimiseks, suurendades lugude voogu võrgus. Kui teil on samal ajal võimalus tõsta ja hoida vähemalt ühte oma sõlme, on see parim panus võrgu arendamisse.
  • Võib-olla olete valmis võtma mõne muu rolli: aitama koodiga või täitma ja modereerima andmebaasi, jagama projekti kohta teavet oma sõpradele jne.
  • Võib-olla meeldis teile idee ja olete valmis rahaliselt aitama, et see kõik elaks ja areneks. Mida rohkem sõlme, seda rohkem laule.
  • Või peate lihtsalt mingil hetkel laulu üles otsima ja alla laadima. Seda saab teha väga lihtsalt, näiteks läbi telegrammi bot.

Projekt on praegu väga algusjärgus. Testvõrk on käivitatud, sõlmed võivad sageli taaskäivitada, nõuda värskendusi jne. Kui hindamisperioodil kriitilisi probleeme ei esine, muudetakse see sama võrgustik peamiseks.

Saate vaadata teavet sõlme kohta väljastpoolt: lugude arv, vaba ruum jne, kasutades linki nagu http://node-address/status või http://node-address/status?pretty

Minu kontaktid:

Allikas: www.habr.com

Lisa kommentaar