Museria - decentralizirano shranjevanje glasbe

Museria - decentralizirano shranjevanje glasbe

Nekega dne sem se odločil, da napišem aplikacijo, da izberem glasbo zase in jo poslušam doma/na ulici/na treningu itd. In tako, da vse to deluje v toku, z minimalno mojo udeležbo. Izmislil sem si arhitekturo, skiciral prototip in na koncu naletel na eno »majhno težavo«.

In ni jasno, kje dobiti same datoteke pesmi. V tem času je VKontakte že zaprl api, na velikih glasbenih portalih je bilo tudi vse utišano, celo pesmi so bile izdane v kosih, da jih ne bi razčlenili. Vse, kar je ostalo, so bila nekatera posamezna mesta za noč s tono oglaševanja in vsemi vrstami smeti, vsemi vrstami dvomljivih grabberjev in drugimi "umazanimi" možnostmi. Na splošno niti ene res dobre rešitve. Seveda lahko kupite naročnino na Yandex glasbo ali podobno. Ampak spet, nikjer ni odprtega javnega API-ja in programsko nimate dostopa do glasbe. Več velikih podjetij je v bistvu drugim omejilo dostop do glasbe. Zakaj se je to sploh zgodilo? Ko smo se poglobili, je postalo jasno, da so bile glavna težava avtorske pravice. Trenutna rešitev v obliki naročnin ustreza mnogim komercialnim avtorjem glasbe in tem istim podjetjem. Hkrati na splošni seznam sodi tudi nekomercialna in polkomercialna glasba. Ali plačaš za vse ali pa ne poslušaš ničesar.

In začel sem razmišljati, kaj naj naredim z vsem tem. Kako lahko organiziramo brezplačno distribucijo glasbe? Kaj bi naredil, če bi sam ustvarjal glasbo in bi s tem hotel zaslužiti? Bi mi bilo všeč, če bi bile moje pesmi piratske? Kakšna alternativna rešitev sploh obstaja?

Posledično obstajata dve glavni težavi, ki ju je treba rešiti:

  • Organizacija brezplačne distribucije glasbe z metodami, ki so primerne za večino ljudi, vključno s programsko opremo.
  • Ponujanje alternativ glasbenim ustvarjalcem za zaslužek

Globalno decentralizirano shranjevanje glasbe

Na začetku sem poskušal poiskati obstoječe rešitve in na podlagi tega vse ustvariti. Po nekaj časa iskanja mi je bila prva všeč ipfs. Začel sem izvajati svojo idejo, vendar sem čez nekaj časa odkril več kritičnih težav v tej rešitvi:

  • Ipfs - shramba za vse in vsakogar. Obstajajo slike, glasba in videi in vse, kar želite. Na splošno tako velik planetarni "smetnjak". Zato, ko zaženete svoje vozlišče, takoj prejmete ogromno obremenitev. Avto se samo zvija od bolečine.
  • Nekakšen nedokončan mehanizem za zbiranje "smeti". Ne vem, kako je zdaj, ampak takrat, če si v configu napisal, da želiš omejiti shranjevanje na deset gigabajtov podatkov, potem to ni pomenilo nič. Pomnilnik se je povečal, ne da bi upoštevali številne konfiguracijske parametre. Posledično je bilo potrebno imeti ogromno rezerve trdega diska, dokler ipfs ni ugotovil, kako ponastaviti nepotrebnega.
  • V času uporabe knjižnice (ne vem, kako je zdaj) odjemalec ni imel implementiranih časovnih omejitev. Pošljete zahtevo za prejem datoteke, in če ta ne obstaja, potem samo visi. Seveda so se ljudje domislili najrazličnejših rešitev, ki so delno rešile težavo, a to so bile bergle. Te stvari bi morale priti ven iz škatle.

Bilo je še veliko manjših težav in vtis je bil jasen: tega ni mogoče uporabiti za projekt. Nadaljeval sem z iskanjem skladišča, raziskovanjem različnih možnosti, a nikoli nisem našel nič primernega.

Na koncu sem se odločil, da je vredno poskusiti sam napisati decentralizirano shrambo. Tudi če se ne pretvarja, da je medplanetarna, bo rešila določen problem.

In tako se je izkazalo mazav, storacle, metastokel, museria, museria-global.

mazav - to je glavni, najnižji sloj, ki vam omogoča združevanje vozlišč v omrežje. Vsebuje algoritem, ki sem ga do sedaj delno implementiral na približno 10000 strežnikih. Polno različico algoritma je veliko težje implementirati in bi zahtevalo več dodatnih mesecev (morda več).

V tem članku ne bom podrobno opisoval namaza, bolje je, da nekoč napišem ločenega. Tukaj bom omenil le nekaj funkcij:

  • Deluje preko http/https.
  • Za določeno nalogo lahko ustvarite ločeno omrežje, kar bo bistveno zmanjšalo obremenitev vsakega posameznega projekta, kot če bi bili vsi v istem omrežju.
  • Sprva je bil premišljen mehanizem s časovnimi omejitvami in drugimi malenkostmi. In to deluje za vse metode tako v odjemalcu kot v vozlišču. Nastavitve lahko prilagodljivo upravljate znotraj svoje aplikacije.
  • Knjižnica je napisana v nodejs. Težave z zmogljivostjo sklada so izravnane z njegovo decentralizirano naravo. Obremenitev se lahko "razporedi" s povečanjem števila vozlišč. V zameno je veliko prednosti: ogromna skupnost, preprostost in enostavna uporaba, izomorfen odjemalec, brez zunanjih odvisnosti itd.

storacle je sloj, podedovan od spreadable, ki vam omogoča shranjevanje datotek v omrežju. Vsaka datoteka ima lastno zgoščeno vsebino, ki jo lahko uporabite za kasnejši priklic. Datoteke niso razdeljene na bloke, ampak so shranjene v celoti.

metastokel - plast, podedovana iz spreadable, ki omogoča shranjevanje podatkov v omrežju, ne pa datotek. Vmesnik je podoben bazi podatkov Nosql. Lahko na primer dodate datoteko v storacle, pridobite njeno zgoščeno vrednost in jo zapišete v metastocle s povezavo do nečesa.

museria - podedovano od storacle in metastocle. Ta plast je neposredno odgovorna za shranjevanje glasbe. Shramba deluje samo z datotekami mp3 in oznakami id3.

Kot »ključ« pesmi je v obrazcu uporabljeno njeno polno ime Izvajalec (TPE1) - Naslov (TIT2). Na primer:

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

Kako nastanejo naslovi pesmi, lahko izveste čim bolj podrobno. tukaj. Pogledati morate funkcijo utils.beautifySongTitle().

Za ujemanje se šteje odstotek ujemanj, določen v nastavitvah vozlišča. Na primer, vrednost 0.85 pomeni, da če je ključna primerjalna funkcija (imena pesmi) našla več kot 85-odstotno podobnost, potem gre za isto pesem.

Algoritem za določanje podobnosti je tam, v funkciji utils.getSongSimilarity().

Priredbo pesmi, za kasnejši prevzem, lahko pripnete tudi preko tagov (APIC). Pripomočki imajo vse potrebne metode za sprejemanje in obdelavo oznak.

Primer dela s shrambo prek odjemalca najdete v readme.

Vse zgornje plasti so samostojne in jih je mogoče uporabiti ločeno kot nižje plasti za druge projekte. Na primer, že obstaja ideja, da bi naredili sloj za shranjevanje knjig.

museria-global je že konfiguriran repozitorij git za zagon lastnega vozlišča v globalnem glasbenem omrežju. Kloniranje npm i && npm začeti in to je v bistvu to. Lahko ga podrobneje konfigurirate, zaženete v Dockerju itd. Podrobne informacije so na voljo na github.

Ko je repozitorij posodobljen, morate posodobiti svoje vozlišče. Če se glavna ali manjša številka različice spremeni, je to dejanje obvezno, sicer bo omrežje prezrlo stara vozlišča.

S pesmimi lahko delate ročno in programsko. Vsako vozlišče poganja strežnik za različne naloge. Vključno, ko obiščete privzeto končno točko, boste prejeli vmesnik za delo z glasbo. Na primer, lahko greš na korensko vozlišče (povezava kasneje morda ne bo ustrezna, vhodna vozlišča lahko dobite tudi v telegram, ali poiščite posodobitve na Githubu).

Tako lahko iščete in nalagate pesmi v shrambo. Nalaganje pesmi lahko poteka v dveh načinih: običajnem in moderiranem. Drugi način pomeni, da delo opravlja oseba in ne program. In če ob dodajanju označite to polje, boste morali rešiti captcha. Pesmi je mogoče dodati s prioritetami -1, 0 ali 1. Prednost 1 je mogoče nastaviti samo v moderiranem načinu. Prioritete so potrebne, da se lahko shramba učinkoviteje odloči, kaj storiti, ko poskušate zamenjati obstoječo skladbo z novo. Višja kot je prioriteta, večja je verjetnost, da boste prepisali obstoječo datoteko. To pomaga v boju proti neželeni pošti in poveča kakovost prenesenih pesmi.

Če začnete dodajati pesmi v svojo shrambo, poskusite priložiti slike (naslov), čeprav to polje ni obvezno. V 99% primerov so prve slike na Googlu, ki temeljijo na naslovih pesmi, naslovnice albumov.

Kako tehnično poteka dodajanje datotek, na kratko:

  • Stranka prejme naslov brezplačnega vozlišča, ki bo za nekaj časa postalo koordinator.
  • Sproži se funkcija dodajanja skladbe (z osebo ali kodo) in zahteva dodajanje koordinatorja na končno točko.
  • Koordinator izračuna, koliko dvojnikov naj se shrani (nastavljiv parameter).
  • Poišče se najprimernejša vozlišča za shranjevanje.
  • Datoteka gre neposredno do teh vozlišč.

Kako tehnično sprejemamo datoteke:

  • Stranka prejme naslov brezplačnega vozlišča, ki bo za nekaj časa postalo koordinator.
  • Sproži se funkcija sprejema skladbe (po osebi ali kodi) in podana zahteva za sprejem na končni točki koordinatorja.
  • Koordinator preveri prisotnost povezave v predpomnilniku. Če obstaja in deluje, se takoj vrne odjemalcu, v nasprotnem primeru se vozlišča vprašajo glede razpoložljivosti.
  • Datoteka je prejeta s povezave, če je najdena.

Alternative za glasbene ustvarjalce

Vedno me je zanimalo vprašanje, kako objektivno ovrednotiti vrednost mnogih ustvarjalnih del? Zakaj na primer nekdo ponudi svoj glasbeni album za 10 dolarjev? Za 20 ali 100 dolarjev. Kje je algoritem? Ko na primer govorimo o nekem fizičnem izdelku ali celo več vrstah storitev, potem lahko izračunamo vsaj stroške in iz tega izhajamo.

V redu, recimo, da stavimo 10 $. Je to zelo učinkovito? Recimo, da sem nekje poslušal album ali pesem od tam in se odločil pokazati svojo hvaležnost. Toda glede na moje občutke in lastne zmožnosti je 3 $ moja zgornja meja. Torej, kaj naj storimo? Najverjetneje preprosto ne bom naredil ničesar, kot večina ljudi.

Z določitvijo neke vrste fiksne cene za kreativno delo se preprosto omejite in preprečite, da bi vam večje število ljudi poslalo manj denarja, kar je lahko skupaj bolj impresivno kot tisti, ki bodo kupili po ceni, ki ste jo določili. Zdi se mi, da je ravno ustvarjalnost tisto področje, kjer bi morale najprej vladati donacije. Za to potrebujete:

  • Naučite ljudi, da se na ta način zahvaljujejo. Ustvarjalci sami morajo jasno pokazati, da želijo prejemati donacije, povsod dodati povezave do različnih načinov plačila itd.
  • Za poenostavitev in krepitev teh procesov je potrebnih več mehanizmov. Na primer, ustvarite nekakšno globalno spletno stran, kjer lahko prispevate za ustvarjalnost z uporabo avtorskih povezav.

    Recimo, da je povezava nekaj takega:

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

    Če se zožimo na glasbenike, potem:

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

    Izvajalec mora preveriti svoj vzdevek in ga pripeti.

    Dodamo funkcijo za generiranje takšne povezave do odjemalca museria in vsi projekti, ki uporabljajo repozitorij, lahko poleg pesmi na svojih spletnih mestih/aplikacijah postavijo gumbe za donacije s temi povezavami. Uporabniki imajo možnost zelo hitro in enostavno donirati. Seveda je ta pristop mogoče uporabiti pri katerem koli projektu in kategoriji ustvarjalnosti, ne le pri shranjevanju.

Zakaj natančno potrebujete prostor za shranjevanje glasbe in kako lahko pri tem sodelujete?

  • Če delate na projektu, povezanem z glasbo, ali ga nameravate ustvariti, potem je bilo vse namenjeno temu. Museria lahko uporabite za shranjevanje in pridobivanje pesmi, kar poveča pretok pesmi na spletu. Če imate hkrati možnost dvigniti in zadržati vsaj eno lastno vozlišče, potem bo to najboljši prispevek k razvoju omrežja.
  • Morda ste pripravljeni prevzeti kakšno drugo vlogo: pomagati pri kodi ali izpolniti in moderirati bazo podatkov, posredovati informacije o projektu svojim prijateljem itd.
  • Morda vam je bila ideja všeč in ste pripravljeni finančno pomagati, da vse živi in ​​se razvija. Več vozlišč, več pesmi.
  • Ali pa morate samo najti in prenesti pesem na neki točki. To lahko storite zelo preprosto, na primer prek telegram bot.

Projekt je zdaj na samem začetku. Testno omrežje je bilo zagnano, vozlišča se lahko pogosto znova zaganjajo, zahtevajo posodobitve itd. Če med ocenjevalnim obdobjem ni kritičnih težav, se to isto omrežje spremeni v glavno.

Informacije o vozlišču si lahko ogledate od zunaj: število pesmi, prosti prostor itd., s povezavo, kot je http://node-address/status ali http://node-address/status?pretty

Moji stiki:

Vir: www.habr.com

Dodaj komentar