Museria – decentralizované úložisko hudby

Museria – decentralizované úložisko hudby

Jedného dňa som sa rozhodol napísať aplikáciu na výber hudby pre seba a počúvať ju doma/na ulici/cvičení atď. A aby to všetko fungovalo plynulo, s minimálnou účasťou z mojej strany. Prišiel som s architektúrou, načrtol prototyp a nakoniec som narazil na jeden „malý problém“.

A nie je jasné, kde získať samotné súbory skladieb. V tom čase už VKontakte zatvoril api, na veľkých hudobných portáloch bolo tiež všetko stlmené, dokonca aj piesne boli vydávané po častiach, aby sa neanalyzovali. Všetko, čo zostalo, boli nejaké jednotlivé stránky s množstvom reklám a všelijakým odpadom, všelijakými pochybnými grabovacími programami a inými „špinavými“ možnosťami. Vo všeobecnosti ani jedno naozaj dobré riešenie. Môžete si samozrejme kúpiť predplatné nejakej hudby Yandex alebo podobne. Ale zase nikde nie je otvorené verejné API a k hudbe nemáte prístup programovo. Niekoľko veľkých spoločností v podstate obmedzilo prístup ostatných k hudbe. Prečo sa to vôbec stalo? Pri hlbšom skúmaní sa ukázalo, že hlavným problémom sú autorské práva. Súčasné riešenie vo forme predplatného vyhovuje mnohým komerčným autorom hudby a tým istým spoločnostiam. Zároveň do všeobecného zoznamu spadá aj nekomerčná a polokomerčná hudba. Buď platíte za všetko, alebo nepočúvate vôbec nič.

A začal som rozmýšľať, čo s tým všetkým. Ako môžeme organizovať bezplatnú distribúciu hudby? Čo by som robil, keby som sám tvoril hudbu a chcel by som na nej zarobiť? Páčilo by sa mi, keby boli moje piesne pirátske? Aké alternatívne riešenie vôbec existuje?

V dôsledku toho existujú dva hlavné problémy, ktoré je potrebné vyriešiť:

  • Organizácia bezplatnej distribúcie hudby pomocou metód vhodných pre väčšinu ľudí, vrátane softvéru.
  • Ponúkanie alternatív pre hudobných tvorcov na zarábanie peňazí

Globálne decentralizované úložisko hudby

Spočiatku som sa snažil nájsť existujúce riešenia a vytvoriť všetko na základe toho. Po nejakom čase hľadania sa mi prvý páčil ipfs. Začal som realizovať svoj nápad, ale po chvíli som v tomto riešení objavil niekoľko kritických problémov:

  • Ipfs – úložisko pre všetko a pre všetkých. Sú tam obrázky, hudba, videá a všetko, čo chcete. Vo všeobecnosti taká veľká planetárna „popelnica“. Preto, keď spustíte svoj uzol, okamžite dostanete obrovské zaťaženie. Auto sa len zvíja od bolesti.
  • Nejaký druh nedokončeného mechanizmu zberu „odpadu“. Neviem, ako je to teraz, ale v tom momente, ak ste v konfigurácii napísali, že chcete obmedziť úložisko na desať gigabajtov dát, nič to neznamenalo. Úložisko sa zväčšilo, ignorujúc mnohé konfiguračné parametre. V dôsledku toho bolo potrebné mať obrovskú rezervu pevného disku, kým ipfs prišiel na to, ako resetovať nepotrebné.
  • V čase používania knižnice (neviem ako je to teraz) klient nemal implementované timeouty. Pošlete žiadosť o prijatie súboru a ak neexistuje, jednoducho zavesíte. Samozrejme, ľudia prišli so všetkými možnými riešeniami, ktoré problém čiastočne vyriešili, ale toto boli barličky. Tieto veci by mali vyjsť z krabice.

Vyskytlo sa ešte veľa menších problémov a dojem bol jasný: toto sa v projekte nedá použiť. Pokračoval som v hľadaní skladu, skúmal som rôzne možnosti, ale nenašiel som nič vhodné.

Nakoniec som sa rozhodol, že stojí za to skúsiť napísať decentralizované úložisko sám. Aj keď sa netvári, že je medziplanetárna, vyrieši konkrétny problém.

A tak to dopadlo roztierateľný, sklad, metastázy, musiria, museria-global.

roztierateľný - toto je hlavná, najnižšia vrstva, ktorá umožňuje spájať uzly do siete. Obsahuje algoritmus, ktorý som doteraz čiastočne implementoval na cca 10000 XNUMX serveroch. Plná verzia algoritmu je oveľa náročnejšia na implementáciu a vyžadovala by si niekoľko ďalších mesiacov (možno aj viac).

V tomto článku nebudem podrobne popisovať roztierateľnosť, je lepšie niekedy napísať samostatný. Tu si všimnem len niektoré funkcie:

  • Funguje cez http/https.
  • Môžete vytvoriť samostatnú sieť pre konkrétnu úlohu, čo výrazne zníži zaťaženie každého jednotlivého projektu, ako keby boli všetky v rovnakej sieti.
  • Pôvodne bol premyslený mechanizmus s časovými limitmi a ďalšími drobnosťami. A to funguje pre všetky metódy v klientovi aj v uzle. Nastavenia môžete flexibilne spravovať z vašej aplikácie.
  • Knižnica je napísaná v nodejs. Problémy s výkonom zásobníka sú kompenzované jeho decentralizovanou povahou. Záťaž možno „rozložiť“ zvýšením počtu uzlov. Na oplátku je tu veľa výhod: obrovská komunita, jednoduchosť a jednoduchosť používania, izomorfný klient, žiadne externé závislosti atď.

sklad je vrstva zdedená z rozšíriteľnej, ktorá vám umožňuje ukladať súbory v sieti. Každý súbor má svoj vlastný hash obsahu, ktorý je možné použiť na neskoršie načítanie. Súbory nie sú rozdelené do blokov, ale sú uložené úplne.

metastázy - vrstva zdedená z rozšíriteľnej, ktorá umožňuje ukladať dáta v sieti, ale nie súbory. Rozhranie je podobné databáze Nosql. Môžete napríklad pridať súbor do úložiska, získať jeho hash a zapísať ho do metastocle s odkazom na niečo.

musiria - zdedený zo zásobníka a metastoklu. Táto vrstva je priamo zodpovedná za ukladanie hudby. Úložisko funguje iba so súbormi mp3 a id3 tagmi.

Ako „kľúč“ k skladbe sa vo forme používa jej celý názov Interpret (TPE1) – názov (TIT2), Napríklad:

  • Síra – bremeno
  • Hi-rez - Lost My Way (spolu Emilio Rojas, Dani Devinci)

Ako sa tvoria názvy skladieb, sa dozviete čo najpodrobnejšie. tu. Treba sa pozrieť na funkciu utils.beautifySongTitle().

Percento zhôd definovaných v nastaveniach uzla sa považuje za zhodu. Napríklad hodnota 0.85 znamená, že ak funkcia porovnávania klávesov (názvov skladieb) našla podobnosť viac ako 85 %, ide o tú istú skladbu.

Algoritmus na určenie podobnosti je vo funkcii utils.getSongSimilarity().

Obal k skladbe, pre neskoršie prijatie, je možné pripojiť aj pomocou značiek (APIC). Utility majú všetky potrebné metódy na prijímanie a spracovanie značiek.

Príklad práce s úložiskom cez klienta nájdete v readme.

Všetky vyššie uvedené vrstvy sú samostatné a môžu byť použité samostatne ako spodné vrstvy pre iné projekty. Napríklad už existuje nápad urobiť vrstvu na ukladanie kníh.

museria-global je už nakonfigurovaný git repozitár na spustenie vlastného uzla v globálnej hudobnej sieti. Klonovanie npm i && npm začať a to je v podstate všetko. Môžete si ho podrobnejšie nakonfigurovať, spustiť v Dockeri atď. Podrobné informácie sú k dispozícii na github.

Keď sa úložisko aktualizuje, musíte aktualizovať svoj uzol. Ak sa zmení hlavné alebo vedľajšie číslo verzie, potom je táto akcia povinná, inak budú staré uzly sieťou ignorované.

S pesničkami môžete pracovať manuálne aj programovo. Každý uzol beží na serveri pre rôzne úlohy. Vrátane toho, že keď navštívite predvolený koncový bod, dostanete rozhranie na prácu s hudbou. Môžete ísť napríklad do koreňový uzol (neskôr nemusí byť odkaz relevantný, vstupné uzly možno získať aj v telegramalebo vyhľadajte aktualizácie na Github).

Týmto spôsobom môžete vyhľadávať a nahrávať skladby do úložiska. Nahrávanie skladieb môže prebiehať v dvoch režimoch: normálnom a moderovanom. Druhý režim znamená, že prácu vykonáva osoba, nie program. A ak pri pridávaní zaškrtnete toto políčko, budete musieť vyriešiť captcha. Skladby je možné pridávať s prioritami -1, 0 alebo 1. Prioritu 1 je možné nastaviť len v moderovanom režime. Priority sú potrebné, aby sa úložisko mohlo efektívnejšie rozhodnúť, čo robiť, keď sa pokúsite nahradiť existujúcu skladbu novou. Čím je priorita vyššia, tým je pravdepodobnejšie, že prepíšete existujúci súbor. Pomáha to bojovať proti spamu a zvyšuje kvalitu stiahnutých skladieb.

Ak začnete pridávať skladby do svojho úložiska, skúste pripojiť obrázky (obal), hoci toto pole nie je povinné. V 99 % prípadov sú prvé obrázky na Googli založené na názvoch skladieb obaly albumov.

Ako technicky prebieha pridávanie súborov, v skratke:

  • Klient dostane adresu voľného uzla, ktorý sa na chvíľu stane koordinátorom.
  • Spustí sa funkcia pridania skladby (osobou alebo kódom) a požiada sa o pridanie koordinátora do koncového bodu.
  • Koordinátor vypočíta, koľko duplikátov sa má uložiť (konfigurovateľný parameter).
  • Hľadajú sa najvhodnejšie uzly na uloženie.
  • Súbor ide priamo do týchto uzlov.

Ako technicky sa súbory prijímajú:

  • Klient dostane adresu voľného uzla, ktorý sa na chvíľu stane koordinátorom.
  • Spustí sa funkcia prijatia skladby (osobou alebo kódom) a odošle sa žiadosť o jej prijatie na koncovom bode koordinátora.
  • Koordinátor skontroluje prítomnosť odkazu vo vyrovnávacej pamäti. Ak existuje a funguje, okamžite sa vráti klientovi, v opačnom prípade sú uzly požiadané o dostupnosť.
  • Súbor je prijatý z odkazu, ak sa nejaký nájde.

Alternatívy pre hudobných tvorcov

Vždy ma zaujímala otázka, ako možno objektívne zhodnotiť hodnotu mnohých tvorivých diel? Prečo napríklad človek ponúka svoj hudobný album za 10 dolárov? Buď za 20 alebo 100 dolárov. Kde je algoritmus? Keď sa napríklad bavíme o nejakom fyzickom produkte alebo dokonca o mnohých typoch služieb, tak si vieme aspoň vypočítať náklady a z toho vychádzať.

Dobre, povedzme, že sme vsadili 10 dolárov. Je to veľmi účinné? Povedzme, že som si niekde vypočul album alebo pesničku odtiaľ a rozhodol som sa ukázať svoju vďačnosť. Ale podľa mojich pocitov a vlastných možností sú 3 doláre môj strop. Čo by sme teda mali robiť? S najväčšou pravdepodobnosťou jednoducho neurobím nič, ako väčšina ľudí.

Stanovením akejsi pevnej ceny za kreatívnu prácu sa jednoducho obmedzíte a zabránite väčšiemu počtu ľudí, aby vám posielali menej peňazí, čo môže byť celkovo pôsobivejšie ako tí, ktorí nakúpia za vami stanovenú cenu. Zdá sa mi, že kreativita je práve oblasťou, kde by v prvom rade malo vládnuť darcovstvo. K tomu potrebujete:

  • Naučte ľudí ďakovať týmto spôsobom. Samotní tvorcovia musia jasne ukázať, že by chceli dostávať dary, všade pridávať odkazy na rôzne spôsoby platby atď.
  • Na zjednodušenie a posilnenie týchto procesov je potrebných viac mechanizmov. Vytvorte si napríklad nejaký druh globálnej webovej stránky, kde môžete prispieť na kreativitu pomocou odkazov na autorské práva.

    Povedzme, že odkaz je niečo také:

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

    Ak to zúžime na hudobníkov, potom:

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

    Interpret musí overiť svoju prezývku a pripojiť sa k nej.

    Pridávame funkciu na vygenerovanie takéhoto odkazu na klienta museria a všetky projekty využívajúce úložisko môžu na svojich weboch/aplikáciách k piesňam umiestniť darovacie tlačidlá s týmito odkazmi. Používatelia majú možnosť veľmi rýchlo a jednoducho prispieť. Prirodzene, tento prístup je možné použiť v akomkoľvek projekte a kategórii kreativity, nielen prostredníctvom skladovania.

Prečo presne potrebujete zariadenie na ukladanie hudby a ako sa na ňom môžete podieľať?

  • Ak pracujete na projekte súvisiacom s hudbou, alebo plánujete nejaký vytvoriť, tak na toto bolo všetko určené. Museria môžete použiť na ukladanie a získavanie skladieb, čím sa zvyšuje tok skladieb online. Ak máte zároveň možnosť zvýšiť a držať aspoň jeden vlastný uzol, bude to najlepší príspevok k rozvoju siete.
  • Možno ste pripravení prevziať inú úlohu: pomôcť s kódom alebo vyplniť a moderovať databázu, distribuovať informácie o projekte svojim priateľom atď.
  • Možno sa vám nápad zapáčil a ste pripravení finančne pomôcť, aby to všetko žilo a rozvíjalo sa. Čím viac uzlov, tým viac skladieb.
  • Alebo jednoducho potrebujete nájsť a stiahnuť skladbu v určitom okamihu. Môžete to urobiť veľmi jednoducho, napríklad prostredníctvom telegramový robot.

Projekt je teraz v úplnom počiatočnom štádiu. Bola spustená testovacia sieť, uzly sa môžu často reštartovať, vyžadovať aktualizácie atď. Ak sa počas vyhodnocovacieho obdobia nevyskytnú žiadne kritické problémy, tá istá sieť sa transformuje na hlavnú.

Môžete zobraziť informácie o uzle zvonku: počet skladieb, voľné miesto atď., Pomocou odkazu, ako sa mi páči http://node-address/status alebo http://node-address/status?pretty

Moje kontakty:

Zdroj: hab.com

Pridať komentár