Museria — depozit i decentralizuar pĂ«r muzikĂ«

Museria — depozit i decentralizuar pĂ«r muzikĂ«

Një herë kam vendosur të shkruaj një aplikacion për të përzgjedhur muzikë për vete dhe për ta dëgjuar në shtëpi/në rrugë/gjatë stërvitjes etj. Dhe që gjithçka të funksiononte në mënyrë automatike, me pjesëmarrje minimale nga ana ime. Krijova arkitekturën, përgatita një prototip dhe në fund u përballa me një "problem të vogël".

Por të marrë vetë skedarët e këngëve është e paqartë. Në këtë moment, VKontakte ka mbyllur API-në, në portalet e mëdha muzikore gjithashtu gjendja është e zymtë, madje këngët jepen në copa, për të mos lejuar përpunimin. Kanë mbetur vetëm disa faqe të veçanta që janë të përkohshme me shumë reklama dhe të gjithë lloje plehrash, programe të dyshimta që grumbullojnë dhe opsione të tjera 'të ndyra'. Në përgjithësi, nuk ka një zgjidhje të vlefshme dhe të mirë. Mund të blini një abonnim për muzikën e Yandex ose ndonjë gjë të ngjashme. Por përsëri, atje nuk ka API të hapur publik dhe nuk keni akses në muzikë programatikisht. Disa kompani të mëdha, në thelb, kufizuan qasjen e të tjerëve në muzikë. Pse ndodhi kështu? Duke e thelluar më tej, u kuptua se problemi kryesor ishte të drejtat e autorit. Zgjidhja aktuale në formën e abonimeve i përshtatet shumë autorëve komercialë të veprave muzikore dhe këto kompani. Në të njëjtën kohë, muzika jo-komerciale dhe nënkuptimisht komerciale gjithashtu përfshihen në listën e përgjithshme. Ju ose paguani për të gjitha, ose nuk dëgjoni asgjë.

Dhe kam filluar tĂ« mendoj se çfarĂ« tĂ« bĂ«j me gjithĂ« kĂ«tĂ«. Si mund tĂ« organizohet shpĂ«rndarja e lirĂ« e muzikĂ«s? ÇfarĂ« do tĂ« bĂ«ja nĂ«se do tĂ« merresha me krijimin e muzikĂ«s dhe do tĂ« doja tĂ« fitonja nga kjo? A do tĂ« mĂ« pĂ«lqente nĂ«se kĂ«ngĂ«t e mia do tĂ« shpĂ«rndaheshin nĂ« mĂ«nyrĂ« piratçkie? ÇfarĂ« alternative ka nĂ« tĂ« vĂ«rtetĂ«?

Së fundmi, u formuan dy probleme kryesore që duhen zgjidhur:

  • Organizimi i shpĂ«rndarjes sĂ« lirĂ« tĂ« muzikĂ«s me metoda tĂ« pĂ«rshtatshme pĂ«r shumicĂ«n e njerĂ«zve, pĂ«rfshirĂ« atyre programore.
  • OfertĂ« alternativĂ«sh pĂ«r krijuesit e muzikĂ«s pĂ«r tĂ« fituar

Një depo globale dhe të decentralizuar muzikore

Fillimisht, kam provuar të gjej zgjidhje ekzistuese dhe të krijoj gjithçka mbi këtë bazë. Pas disa kohësh kërkimi, e para që më bëri përshtypje ishte ipfs. Fillova realizimin e ideve të mia, por pas një kohe të shkurtër zbulova disa probleme kritike në këtë zgjidhje:

  • Ipfs Ă«shtĂ« njĂ« depo pĂ«r gjithçka. KĂ«tu ka imazhe, muzikĂ«, video dhe gjithçka tjetĂ«r. NĂ« thelb, Ă«shtĂ« njĂ« "zhurmĂ«" planetare e madhe. Prandaj, kur nis nodin tĂ«nd, menjĂ«herĂ« pĂ«rballesh me njĂ« ngarkesĂ« tĂ« madhe. Makina thjesht gjunjĂ«zohet nga dhimbja.
  • NjĂ« mekanizĂ«m i papĂ«rfunduar pĂ«r mbledhjen e 'papĂ«rmbushjeve'. Nuk e di sesi Ă«shtĂ« tani, por nĂ« atĂ« moment, nĂ«se e shkruaje nĂ« konfigurim se doje tĂ« kufizosh depozitimin nĂ« dhjetĂ« gigabajt tĂ« dhĂ«nash, kjo nuk kishte asnjĂ« kuptim. Depozita zgjerohej, duke injoruar shumĂ« parametra tĂ« konfigurimit. NĂ« fund, duhej tĂ« kishe njĂ« rezervĂ« tĂ« madhe disku tĂ« fortĂ«, derisa ipfs tĂ« kuptonte si tĂ« shkarkonte tĂ« panevojshmet.
  • NĂ« momentin e pĂ«rdorimit tĂ« bibliotekĂ«s (nuk e di sesi Ă«shtĂ« tani), klientit nuk i ishin implementuar kohĂ«zgjatjet. DĂ«rgon njĂ« kĂ«rkesĂ« pĂ«r tĂ« marrĂ« njĂ« skedĂ«, dhe nĂ«se ajo nuk Ă«shtĂ« aty, thjesht ngec. Sigurisht, njerĂ«zit shpikĂ«n disa mĂ«nyra pĂ«r ta anashkaluar kĂ«tĂ«, tĂ« cilat pjesĂ«risht zgjidhnin problemin, por ato ishin 'kosti'. KĂ«to gjĂ«ra duhet tĂ« jenĂ« gati nga kutia.

Ishin gjithashtu shumë probleme të vogla, përshtypja e formuar atëherë ishte e qartë: kjo nuk mund të përdoret për një projekt. Vazhdova të kërkoj depozita, studiuam mundësi të ndryshme, por nuk gjeta asgjë të përshtatshme.

Në fund, vendosa se ia vlen të provoj të shkruaj një depozitë të decentralizuar vetë. Le të mos pretendojë të jetë ndërplanetare, por do të zgjidhë detyrën e caktuar.

Kështu erdhën spreadable, storacle, metastocle, museria, museria-global.

spreadable — Ă«shtĂ« shtresa kryesore, mĂ« e ulĂ«t, e cila lejon lidhjen e nyjeve nĂ« njĂ« rrjet. NĂ« tĂ« Ă«shtĂ« integruar algoritmi, i cili deri tani Ă«shtĂ« implementuar pjesĂ«risht pĂ«r rreth 10,000 serverĂ«. Versioni i plotĂ« i algoritmit Ă«shtĂ« shumĂ« mĂ« i komplikuar pĂ«r t’u zbatuar dhe do tĂ« kĂ«rkonte disa muaj tĂ« tjerĂ« tĂ« shtuar (nĂ« disa raste edhe mĂ« shumĂ«).

Nuk do të përshkruaj detajet e spreadable në këtë artikull, më mirë do të shkruaj një të veçantë ndonjëherë. Këtu vetëm do të theksoj disa veçori:

  • Funksionon pĂ«rmes http/https.
  • Mund tĂ« krijoni njĂ« rrjet tĂ« veçantĂ« pĂ«r njĂ« detyrĂ« tĂ« caktuar, gjĂ« qĂ« do tĂ« zvogĂ«lojĂ« ndjeshĂ«m ngarkesĂ«n nĂ« çdo projekt tĂ« veçantĂ«, sesa nĂ«se tĂ« gjitha do tĂ« ishin nĂ« njĂ« rrjet tĂ« vetĂ«m.
  • Fillimisht u mendua mekanizmi me kohĂ«matĂ«s dhe gjĂ«ra tĂ« tjera tĂ« vogla. Dhe kjo funksionon pĂ«r tĂ« gjitha metodat, si nĂ« klient ashtu edhe nĂ« nyje. Mund tĂ« menaxhoni parametrat nĂ« mĂ«nyrĂ« fleksibile nga aplikacioni juaj.
  • Biblioteka Ă«shtĂ« e shkruar nĂ« nodejs. Problemet me performancĂ«n e stack-ut kompenzohen nga natyra decentralizuese. Ngarkesa mund tĂ« "shpĂ«rndahet" duke rritur numrin e nyjeve. NĂ« kĂ«mbim ka shumĂ« avantazhe: njĂ« komunitet tĂ« madh, thjeshtĂ«si dhe lehtĂ«si nĂ« punĂ«, klient izomorfik, mungesĂ« varĂ«sish tĂ« jashtme, etj.

storacle — njĂ« shtresĂ« qĂ« trashĂ«gohet nga spreadable, e cila lejon ruajtjen e skedarĂ«ve nĂ« rrjet. Çdo skedar ka hash-in e vet sipas pĂ«rmbajtjes, me tĂ« cilin mund tĂ« aksesohesh mĂ« vonĂ«. SkedarĂ«t nuk ndahen nĂ« blloqe, por ruhen tĂ«rĂ«sisht.

metastocle — njĂ« shtresĂ« qĂ« trashĂ«gohet nga spreadable, e cila lejon ruajtjen e tĂ« dhĂ«nave nĂ« rrjet, por jo skedarĂ«ve. NdĂ«rfaqja Ă«shtĂ« e ngjashme me bazat e tĂ« dhĂ«nave nosql. Mund, pĂ«r shembull, tĂ« shtosh njĂ« skedar nĂ« storacle, tĂ« marrĂ«sh hash-in e tij dhe ta regjistrosh nĂ« metastocle lidhur me diçka.

museria — trashĂ«gohet nga storacle dhe metastocle. Kjo shtresĂ« Ă«shtĂ« pĂ«rgjegjĂ«se drejtpĂ«rdrejt pĂ«r ruajtjen e muzikĂ«s. Depozita punon vetĂ«m me skedarĂ«t mp3 dhe etiketat id3.

Si "çelĂ«si" pĂ«r kĂ«ngĂ«n pĂ«rdoret emri i plotĂ« i saj nĂ« formĂ«n Interpretuesi (TPE1) — Titulli (TIT2). PĂ«r shembull:

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

Mund të mësosh maksimalisht se si formohen emrat e këngëve këtu. Duhet të shikosh funksionin utils.beautifySongTitle().

Një përputhje sipas çelimeve konsiderohet përqindja e përcaktuar në cilësimet e nyjës. Për shembull, vlera 0.85 do të thotë se nëse funksioni i krahasimit të çelimeve (emrave të këngëve) ka zbuluar një ngjashmëri më shumë se 85%, atëherë kjo është e njëjta këngë.

Algoritmi i përcaktimit të ngjashmërisë është atje, në funksionin utils.getSongSimilarity().

Kover për këngën, që do të shkarkohet pas, gjithashtu do të bashkëngjitet përmes etiketave (APIC). Në utilitetet (utils) janë të gjitha metodat e nevojshme për të marrë dhe përpunuar etiketat.

Shembulli i punës me depozitën përmes klientit mund të shikohet në readme.

Të gjitha shtresat e përmendura më sipër janë të vetë-mjaftueshme dhe mund të përdoren veçmas si shtresa më të ulëta për projekte të tjera. Për shembull, tani ekziston ideja për të bërë një shtresë për magazinimin e librave.

museria-global — Ă«shtĂ« tashmĂ« njĂ« depo e konfiguruar git pĂ«r tĂ« nisur nodin tuaj nĂ« rrjetin global tĂ« muzikĂ«s. Kloni, npm i && npm start dhe nĂ« thelb Ă«shtĂ« gjithçka. Mund tĂ« vendosni mĂ« nĂ« detaje, tĂ« nisni nĂ« docker etj. Informacione mĂ« tĂ« detajuar gjenden nĂ« github.

Kur depoja përditësohet, duhet të përditësoni edhe nodin tuaj. Nëse ndërron numri major ose minor i versionit, atëherë ky veprim është i domosdoshëm, përndryshe nodet e vjetra do të injorohen nga rrjeti.

TĂ« punosh me kĂ«ngĂ«t mund tĂ« bĂ«het manualisht dhe programatikisht. Çdo nod nis njĂ« server pĂ«r detyra tĂ« ndryshme. Po ashtu, kur vizitoni endpoint-in default, do tĂ« merrni njĂ« ndĂ«rfaqe pĂ«r tĂ« punuar me muzikĂ«n. PĂ«r shembull, mund tĂ« hyni nĂ« nodin rrĂ«njor (linku mund tĂ« mos jetĂ« mĂ« i vlefshĂ«m mĂ« vonĂ«, nyjtĂ« e hyrjes mund tĂ« merren gjithashtu nĂ« telegram, ose mund tĂ« shikoni pĂ«rditĂ«simet nĂ« github).

Kështu mund të kërkoni dhe të ngarkoni këngë në depo. Ngarkimi i këngëve mund të ndodhë në dy moda: të zakonshme dhe të moderuara. Moda e dytë do të thotë se një person e drejton punën, jo një program. Dhe nëse e vendosni këtë kutinë gjatë shtimit, do t'ju duhet të zgjidhni CAPTCHA. Këngët mund të shtohen me përparësi -1, 0 ose 1. Përparësia 1 mund të vendoset vetëm në modin e moderuar. Përparësitë janë të nevojshme që depoja të marrë vendime më efektive kur përpiqeni të zëvendësoni një këngë ekzistuese me të re. Sa më e lartë të jetë përparësia, aq më shumë shanse keni për të riparuar skedarin ekzistues. Kjo ndihmon në luftimin e spam-it dhe rrit cilësinë e këngëve të ngarkuara.

Nëse filloni të shtoni këngë në depo, përpiquni të bashkëngjitni edhe imazhe (cover), edhe pse ky fushë nuk është i detyrueshëm. Në 99% të rasteve, të parat imazhe në Google për emrat e këngëve janë kopertina albumesh.

Si ndodh teknikasht shtimi i skedareve, me dy fjalë:

  • Klienti merr adresĂ«n e nodit tĂ« lirĂ«, i cili pĂ«r njĂ« kohĂ« tĂ« shkurtĂ«r do tĂ« bĂ«het koordinatori.
  • Aktivizohet funksioni i shtimit tĂ« kĂ«ngĂ«s (nga njĂ« njeri ose me kod), dhe ndodh kĂ«rkesa pĂ«r tĂ« shtuar nĂ« endpoint-in e koordinatorit.
  • Koordinatori llogarit se sa kopje duhet tĂ« ruhen (parametĂ«r i konfigurable).
  • KĂ«rkohen nodet mĂ« tĂ« pĂ«rshtatshme pĂ«r ruajtje.
  • Skedari drejtpĂ«rdrejt dĂ«rgohet nĂ« kĂ«to node.

Si ndodh tekniksht marrja e skedarëve:

  • Klienti merr adresĂ«n e nodit tĂ« lirĂ«, i cili pĂ«r njĂ« kohĂ« tĂ« shkurtĂ«r do tĂ« bĂ«het koordinatori.
  • Aktivizohet funksioni i marrjes sĂ« kĂ«ngĂ«s (nga njĂ« njeri ose me kod), dhe ndodh kĂ«rkesa pĂ«r tĂ« marrĂ« nĂ« endpoint-in e koordinatorit.
  • Koordinatori kontrollon nĂ«se ka njĂ« lidhje nĂ« cache. NĂ«se ka dhe Ă«shtĂ« funksionale, atĂ«herĂ« kthehet menjĂ«herĂ« te klienti, ndryshe vizitohen node-t pĂ«r tĂ« kontrolluar disponueshmĂ«rinĂ«.
  • Merret skedari pĂ«rmes lidhjes, nĂ«se e tillĂ« Ă«shtĂ« gjetur.

Alternativa për krijuesit e muzikës.

Mua ka ka që më ka interesuar gjithmonë, si mund të vlerësohet objektivisht çmimi i shumë veprave krijuese? Pse, për shembull, një person e përcakton albumin e tij muzikor për 10$? Ose për 20$ apo 100$. Ku është algoritmi? Kur, për shembull, flasim për një produkt fizike, ose madje për shumë lloje shërbimesh, ne mund ta llogarisim të paktën koston e prodhimit dhe të dalim nga ajo.

Ok, le të themi se çmimi është 10$. A është kjo efektive? Le të themi se dëgjova albumin diku ose ndonjë këngë prej aty dhe vendosa ta falenderoj. Por sipas ndjenjave dhe mundësive të mia, 3$ është kufiri im. Dhe çfarë të bëj këtu? Ndërsa ka shumë mundësi, thjesht nuk do të bëj asgjë, ashtu si shumica e njerëzve.

Duke vendosur një çmim të caktuar për punën kreative, thjesht e kufizon veten, nuk i jep një numri më të madh njerëzish mundësinë për të të dërguar para më të vogla, të cilat në total mund të jenë më të konsiderueshme se ata që do të blejnë sipas çmimit që ke vendosur. Më duket se krijimtaria është pikërisht ajo fushë ku donacionet duhet të drejtojnë në mënyrë të parë. Për këtë, nevojitet:

  • TĂ« mĂ«sojmĂ« njerĂ«zit tĂ« falenderojnĂ« nĂ« kĂ«tĂ« mĂ«nyrĂ«. Krijuesit vetĂ« duhet ta tregojnĂ« qartĂ« se dĂ«shirojnĂ« tĂ« marrin dhurata, tĂ« shtojnĂ« gjithandej linke pĂ«r mĂ«nyra tĂ« ndryshme pagese, etj.
  • Duhet mĂ« shumĂ« mekanizma pĂ«r tĂ« thjeshtuar dhe forcuar kĂ«to procese. PĂ«r shembull, tĂ« krijohet njĂ« faqe globale, ku mund tĂ« dhurohet pĂ«r krijimtarinĂ« nĂ«pĂ«rmjet linkeve autorĂ«sore.

    Le të themi, linku është diçka si:

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

    Nëse e ngushtojmë për muzikantët, atëherë:

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

    Artistit i nevojitet të vërtetojë pseudonimin e tij dhe të lidhet me të.

    Në klientin museria, shtojmë funksionin për gjenerimin e një linku të tillë, dhe të gjithë projektet që përdorin depozita, mund të vendosin në faqet/aplikacionet e tyre butona për dhurata me këto linke pranë këngëve. Përdoruesit kanë mundësinë për të bërë një dhuratë shumë shpejt dhe lehtësisht. Natyrisht, ky qasje mund të përdoret në çdo projekt dhe kategori krijimtarie, jo vetëm përmes depozitave.

Përse, pikërisht për ty, një depo muzikore, dhe si mund të merrni pjesë në këtë?

  • NĂ«se po punon nĂ« njĂ« projekt qĂ« ka lidhje me muzikĂ«n, ose planifikon tĂ« krijosh njĂ« tĂ« tillĂ«, kjo ishte arsyeja pĂ«r tĂ« cilĂ«n u mendua. Mund tĂ« pĂ«rdorĂ«sh museria pĂ«r tĂ« ruajtur dhe marrĂ« kĂ«ngĂ«, duke rritur fluksin e kĂ«ngĂ«ve nĂ« rrjet. NĂ«se, pĂ«r mĂ« tepĂ«r, ke mundĂ«sinĂ« tĂ« ngresh dhe tĂ« mbash tĂ« paktĂ«n njĂ« nod tĂ«ndin, kjo do tĂ« jetĂ« kontributi mĂ« i mirĂ« pĂ«r zhvillimin e rrjetit.
  • Ndoshta je i gatshĂ«m tĂ« marrĂ«sh ndonjĂ« rol tjetĂ«r: tĂ« ndihmosh me kodin, ose tĂ« mbushĂ«sh dhe moderosh bazĂ«n, tĂ« shpĂ«rndash informacionin pĂ«r projektin tek miqtĂ« dhe etj.
  • Mund tĂ« tĂ« ketĂ« pĂ«lqyer ideja dhe je i gatshĂ«m tĂ« ndihmosh financiarisht, qĂ« kjo tĂ« jetojĂ« dhe tĂ« zhvillohet. Sa mĂ« shumĂ« nodĂ«, aq mĂ« shumĂ« kĂ«ngĂ«.
  • Ose ndoshta njĂ« moment do tĂ« duhet tĂ« gjesh dhe shkarkosh njĂ« kĂ«ngĂ«. Mund ta bĂ«sh kĂ«tĂ« shpejt dhe lehtĂ«, pĂ«r shembull, pĂ«rmes botit tĂ« Telegramit.

Projekti aktualisht është në fazën më të hershme. është aktive një rrjet testues, nodet mund të rinisën shpesh, të kërkojnë përditësime, etj. Në rast se nuk ka probleme kritike gjatë periudhës së vlerësimit, ky rrjet do të transformohet në atë kryesore.

Shikoni informacionin për nyjën nga jashtë: numri i këngëve, hapësira e lirë, etj., mund të bëhet përmes një linku të tillë http://node-address/status ose http://node-address/status?pretty

Kontaktet e mia:

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster