Museria — ruajtje e decentralizuar e muzikĂ«s

Museria — ruajtje e decentralizuar e muzikĂ«s

Një herë, vendosa të krijoj një aplikacion për të përzgjedhur muzikën për vete dhe për ta dëgjuar në shtëpi/faqe ose gjatë stërvitjeve, etj. Dhe që gjithçka të funksiononte në mënyrë të vazhdueshme, me ndërhyrjen time minimale. Krijova arkitekturën, skicova një prototip dhe në fund u përballa me një "problem të vogël".

Por nuk ishte e qartë se nga t'i merrja vetë skedarët e këngëve. Në këtë moment, VK kishte mbyllur API-në, në portalet e mëdha muzikore gjithashtu nuk kishte asgjë, madje edhe këngët jepeshin në pjesë, për të mos treguar. Kishin mbetur vetëm disa faqe të veçanta me shumë reklama dhe plehra, gjithashtu programe të dyshimta dhe opsione "të ndotura". Në përgjithësi, asnjë zgjidhje funksionale e mirë. Sigurisht, mund të blej një abonim për ndonjë muzikë si Yandex, ose diçka tjetër. Por prapë, atje nuk kishte asnjë API publik të hapur dhe nuk kishe qasje në muzikë programatikisht. Disa kompani të mëdha, në thelb, kufizuan qasjen e tjerëve në muzikë. Pse ndodhi kështu? Duke kërkuar më thellë, është e qartë se problemi kryesor është në të drejtat e autorit. Zgjidhja aktuale në formën e abonimeve kënaq shumë autorët komercialë të produksioneve muzikore dhe këto kompani. Gjithashtu, muzika jo-komerciale dhe ndonjëherë komerciale gjithashtu përfshihen në listën e përgjithshme. Ti ose paguan për gjithçka ose nuk dëgjon fare.

Dhe fillova tĂ« mendoj se çfarĂ« tĂ« bĂ«j me tĂ« gjitha kĂ«to. Si mund tĂ« organizoj shpĂ«rndarjen e lirĂ« tĂ« muzikĂ«s? ÇfarĂ« do bĂ«ja, nĂ«se do tĂ« merresha me krijimin e muzikĂ«s dhe do tĂ« doja tĂ« fitonja nga kjo? A do mĂ« pĂ«lqente nĂ«se kĂ«ngĂ«t e mia do tĂ« shpĂ«rndaheshin nĂ« mĂ«nyrĂ« piratike? ÇfarĂ« zgjidhje alternative ekziston?

Në fund, u formuan dy probleme kryesore që duhej të zgjidheshin:

  • Organizimi i shpĂ«rndarjes sĂ« lirĂ« tĂ« muzikĂ«s me metoda tĂ« pĂ«rshtatshme pĂ«r shumicĂ«n e njerĂ«zve, pĂ«rfshirĂ« metodologjitĂ« programatike.
  • OfertĂ« alternative pĂ«r krijuesit e muzikĂ«s pĂ«r tĂ« fituar

Një depo globale dhe të decentralizuar muzikore

Fillimisht, përpiqesha të gjeja zgjidhje ekzistuese dhe të krijoja gjithçka mbi këtë bazë. Pas pak kohësh kërkimesh, më ra në sy ipfs. Fillova realizimin e ideve të mia, por pas disa kohësh, zbulova disa probleme kritike në këtë zgjidhje:

  • Ipfs — njĂ« depo pĂ«r gjithçka. KĂ«tu ka imazhe, muzikĂ«, video dhe gjithçka tjetĂ«r. TĂ« themi se Ă«shtĂ« njĂ« «depozitë» planetare e madhe. Prandaj, kur fillon nodin tĂ«nd, menjĂ«herĂ« ndjen njĂ«ngarkesĂ« tĂ« madhe. Pjesa e makinĂ«s thjesht nxjerr zĂ« nga dhimbja.
  • NjĂ« mekanizĂ«m ndĂ«rtimi «mbeturinash» i papĂ«rfunduar. Nuk e di si Ă«shtĂ« tani, por nĂ« atĂ« moment, nĂ«se e vendosje nĂ« konfigurim se doje ta kufizoje hapĂ«sirĂ«n nĂ« dhjetĂ« gigabajt tĂ« dhĂ«nash, kjo nuk do tĂ« thoshte asgjĂ«. Hapesira shtrihej, duke injoruar shumĂ« parametra tĂ« konfigurimit. NĂ« fund, duhej tĂ« kishe njĂ« rezervĂ« tĂ« madhe disku, derisa ipfs tĂ« kuptonte si tĂ« hiqte gjĂ«rat e panevojshme.
  • NĂ« momentin e pĂ«rdorimit tĂ« bibliotekĂ«s (nuk e di si Ă«shtĂ« tani), klienti nuk kishte implementuar timeout-et. Dergoje njĂ« kĂ«rkesĂ« pĂ«r tĂ« marrĂ« njĂ« skedar, dhe nĂ«se nuk ka, thjesht vjesh. Sigurisht, njerĂ«zit shpikĂ«n disa rrugĂ« alternative qĂ« pjesĂ«risht zgjidhnin problemin, por kĂ«to ishin zgjidhje tĂ« pĂ«rkohshme. KĂ«to gjĂ«ra duhet tĂ« ishin gati nga kutia.

Ishte dhe shumë probleme të vogla, përshtypja që krijova atëherë ishte e qartë: kjo nuk mund të përdoret për një projekt. Unë vazhdova kërkimin për një depo, studioja variante të ndryshme, por nuk gjeta asgjë të përshtatshme.

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

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

spreadable — kjo Ă«shtĂ« shtresa kryesore, mĂ« e ulĂ«t, qĂ« lejon bashkimin e nodeve nĂ« rrjet. NĂ« tĂ« Ă«shtĂ« i inkorporuar njĂ« algoritĂ«m, tĂ« cilin e kam implementuar pjesĂ«risht deri nĂ« 10000 serverĂ«. Versioni i plotĂ« i algoritmit Ă«shtĂ« shumĂ« mĂ« i ndĂ«rlikuar nĂ« zbatim dhe do tĂ« kĂ«rkonte disa muaj shtesĂ« (ndoshta edhe mĂ« shumĂ«).

Nuk do të hyj në detaje të spreadable në këtë artikull, më mirë do të shkruaj një të veçantë ndonjëherë. Këtu do të theksoj disa veçori:

  • Punon pĂ«rmes http/https.
  • Mund tĂ« krijosh njĂ« rrjet tĂ« veçantĂ« pĂ«r njĂ« detyrĂ« specifike, gjĂ« qĂ« ndjeshĂ«m do tĂ« ulej ngarkesa nĂ« çdo projekt individual, pĂ«rveç nĂ«se tĂ« gjitha do tĂ« ishin nĂ« njĂ« rrjet.
  • Fillimisht Ă«shtĂ« menduar mekanizmi me timeout-et dhe gjĂ«ra tĂ« tjera tĂ« vogla. Dhe kjo funksionon pĂ«r tĂ« gjitha metodat dhe nĂ« klient dhe nĂ« nod. Mund tĂ« menaxhosh parametrat fleksibĂ«l nga aplikacioni yt.
  • Biblioteka Ă«shtĂ« shkruar nĂ« nodejs. Problemet me performancĂ«n e grumbullit kompensohen nga natyra e decentralizuar. Ngarkesa mund tĂ« "shpĂ«rndahet" duke rritur numrin e nyjeve. NĂ« vend tĂ« kĂ«saj, ka shumĂ« pĂ«rfitime: njĂ« komunitet tĂ« madh, thjeshtĂ«si dhe lehtĂ«si nĂ« punĂ«, klient izomorfik, mungesĂ« e varĂ«sive tĂ« jashtme, etj.

storacle — Ă«shtĂ« njĂ« sloj, qĂ« trashĂ«gohet nga spreadable, i cili lejon ruajtjen e skedarĂ«ve nĂ« rrjet. Çdo skedar ka njĂ« hash sipas pĂ«rmbajtjes, me tĂ« cilin mund tĂ« merret mĂ« vonĂ«. SkedarĂ«t nuk ndahen nĂ« blloqe, por ruhen tĂ«rĂ«sisht.

metastocle — sloj qĂ« trashĂ«gohet nga spreadable, i cili lejon ruajtjen e tĂ« dhĂ«nave nĂ« rrjet, por jo tĂ« skedarĂ«ve. NdĂ«rfaqja Ă«shtĂ« e ngjashme me databazat 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. Ky sloj Ă«shtĂ« pĂ«rgjegjĂ«s drejtpĂ«rdrejt pĂ«r ruajtjen e muzikĂ«s. Depoja punon vetĂ«m me skedarĂ« mp3 dhe etiketat id3.

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

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

Për të mësuar sa më detajisht si formohen titujt e këngëve, mund të këtu. Duhet të shikosh funksionin utils.beautifySongTitle().

Një përputhje sipas çelësave konsiderohet një përqindje e caktuar e caktuar në cilësimet e nyjës. Për shembull, vlera 0.85 do të thotë se nëse funksioni i krahasimit të çelësave (titujve të këngëve) prej dëshmoi ngjashmëri më shumë se 85%, atëherë kjo është e njëjta këngë.

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

Cover-i për këngën, për marrjen e mëvonshme, gjithashtu lidhet përmes etiketave (APIC). Në utilitetet (utils) ka të gjitha metodat e nevojshme për marrjen dhe përpunimin e etiketimeve.

Një shembull i punës me depot përmes klientit mund të shihet në readme.

Të gjitha slojrat e mësipërme janë të vetëqëndrueshme dhe mund të përdoren veçmas si slojra më të ulta për projekte të tjera. Për shembull, tashmë ka mendim për të bërë një sloj për ruajtjen e librave.

museria-global — Ă«shtĂ« njĂ« git-repozitor i konfiguruar tashmĂ« pĂ«r tĂ« nisur nyjĂ«n tuaj nĂ« rrjetin global tĂ« muzikĂ«s. E klononi, npm i && npm start dhe nĂ« thelb Ă«shtĂ« gjithçka. Mund tĂ« konfiguroni mĂ« nĂ« detaje, ta nisni nĂ« docker etj. Informacione tĂ« detajuara ka nĂ« GitHub.

Kur repozitoriumi përditësohet, duhet të përditësohet edhe nyja juaj. Nëse ndryshon numri i versionit të madh ose të vogël, atëherë kjo veprim është e domosdoshme, përndryshe nyjat e vjetra do të injorohen nga rrjeti.

Mund tĂ« punoni me kĂ«ngĂ«t manualisht dhe nĂ« mĂ«nyrĂ« programore. Çdo nyjĂ« aktivizon njĂ« server pĂ«r detyra tĂ« ndryshme. PĂ«rfshirĂ«, kur vizitoni endpoint-in e paracaktuar, do tĂ« merrni njĂ« ndĂ«rfaqe pĂ«r tĂ« punuar me muzikĂ«n. PĂ«r shembull, mund tĂ« shkoni nĂ« nyjen rrĂ«njore (linku mund tĂ« mos jetĂ« mĂ« aktual mĂ« vonĂ«, nyjat hyrĂ«se mund tĂ« merren gjithashtu nĂ« telegram, ose tĂ« shihni pĂ«rditĂ«simet nĂ« GitHub).

Kështu mund të kërkoni dhe ngarkoni këngët në depo. Ngarkimi i këngëve mund të ndodhë në dy mënyra: normale dhe të moderuara. Mënyra e dytë do të thotë se puna udhëhiqet nga një person dhe jo nga një program. Dhe nëse e vendosni këtë shenjë gjatë shtimit, do të duhet të zgjidhni kapçen. Këngët mund të shtohen me prioritete -1, 0 ose 1. Prioriteti 1 mund të vendoset vetëm në mënyrën e moderuar. Prioritetet janë të nevojshme për të ndihmuar depon në marrjen e vendimeve më efikase kur përpiqeni të zëvendësoni një këngë ekzistuese me një të re. Sa më i madh të jetë prioriteti, aq më shumë mundësi keni që të zëvendësoni 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), megjithëse ky fushë nuk është e detyrueshme. Në 99% të rasteve, imazhet e para në Google sipas emrave të këngëve janë kopertinat e albumeve.

Si ndodh teknikisht shtimi i skedarëve, në dy fjalë:

  • Klienti merr adresĂ«n e njĂ« nyje tĂ« lirĂ«, e cila pĂ«r njĂ« kohĂ« tĂ« caktuar do tĂ« bĂ«het koordinatori.
  • Aktivizohet funksioni i shtimit tĂ« kĂ«ngĂ«s (nga njĂ« person ose nga kodi), pranohet njĂ« kĂ«rkesĂ« pĂ«r shtim nĂ« endpoint-in e koordinatori.
  • Koordinatori llogarit se sa kopje duhet tĂ« ruhen (parametr i konfigurueshĂ«m).
  • KĂ«rkohen nyjat mĂ« tĂ« pĂ«rshtatshme pĂ«r ruajtje.
  • Skedari, direkt, shkon nĂ« kĂ«to nyja.

Si ndodh teknikisht marrja e skedarëve:

  • Klienti merr adresĂ«n e njĂ« nyje tĂ« lirĂ«, e cila pĂ«r njĂ« kohĂ« tĂ« caktuar do tĂ« bĂ«het koordinatori.
  • Aktivizohet funksioni i marrjes sĂ« kĂ«ngĂ«s (nga njĂ« person ose nga kodi), pranohet njĂ« kĂ«rkesĂ« pĂ«r marrje nĂ« endpoint-in e koordinatori.
  • Koordinatori kontrollon nĂ«se linku Ă«shtĂ« nĂ« cache. NĂ«se Ă«shtĂ« kĂ«shtu dhe Ă«shtĂ« funksional, ai menjĂ«herĂ« kthehet te klienti, pĂ«rndryshe nyjat pyeten pĂ«r tĂ« gjetur nĂ«se e kanĂ«.
  • Po shkarkohet skedari nga lidhja, nĂ«se njĂ« e tillĂ« Ă«shtĂ« gjetur.

Alternativat për krijuesit e muzikës

Ndonjëherë më ka interesuar si mund të vlerësohet objektivisht çmimi i shumë veprave krijuese? Pse, për shembull, një person e nxjerr albumin e tij muzikor për 10$? Apo për 20$ ose 100$. Ku është algoritmi? Kur, për shembull, flasim për ndonjë produkt fizik, ose madje për shumë lloje shërbimesh, mund të llogarisim së paku kosto dhe të fillojmë nga aty.

Ok, le tĂ« themi se çmimi Ă«shtĂ« 10$. A Ă«shtĂ« kjo njĂ« strategji efektive? Le tĂ« themi se e kam dĂ«gjuar albumin diku ose njĂ« kĂ«ngĂ« prej tij dhe vendosa tĂ« kontribuoj. Por pĂ«r ndjenjat dhe mundĂ«sitĂ« e mia, 3$ janĂ« maksimumi qĂ« mund tĂ« jap. ÇfarĂ« duhet bĂ«rĂ« nĂ« kĂ«tĂ« rast? MĂ« shumĂ« gjasa nuk do tĂ« bĂ«j asgjĂ«, ashtu si shumica e njerĂ«zve.

Duke vendosur një çmim të fiksuar për punën krijuese, në fakt po e kufizoni veten, duke mos lejuar një numër më të madh njerëzish të dërgojnë ndihma më të vogla që në përllogaritje mund të jenë më të rëndësishme se ata që do të blejnë sipas çmimit që keni vendosur. Më duket se krijimtaria është një fushë ku donacionet duhet të jenë prioritet. Për këtë nevojiten:

  • TĂ« mĂ«sojmĂ« njerĂ«zit tĂ« falĂ«nderojnĂ« pikĂ«risht nĂ« kĂ«tĂ« mĂ«nyrĂ«. Krijuesit vetĂ« duhet ta tregojnĂ« qartĂ« se dĂ«shirojnĂ« tĂ« marrin donacione, tĂ« shtojnĂ« lidhje pĂ«r metoda tĂ« ndryshme pagesash kudo, etj.
  • Duhet tĂ« krijohen mĂ« shumĂ« mekanizma pĂ«r tĂ« thjeshtuar dhe pĂ«rforcuar kĂ«to procese. PĂ«r shembull, tĂ« krijohet njĂ« sit global ku mund tĂ« dĂ«rgohen donacione pĂ«r krijime pĂ«rmes lidhjeve tĂ« autorĂ«ve.

    Le të themi se lidhja është rreth kësaj:

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

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

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

    Krijuesi duhet të verifikojë emrin e tij dhe të lidhet me të.

    Në klientin museria, të shtojmë funksionin e gjenerimit të një lidhjeje të tillë, dhe të gjitha projektet që përdorin ruajtjen, mund të vendosin në faqet e tyre/aplikacionet butona për donacione me këto lidhje pranë këngëve. Përdoruesit kanë mundësi të bëjnë donacione shumë shpejt dhe lehtë. Sigurisht, ky qasje mund të përdoret në çdo projekt dhe kategori krijimi, jo vetëm përmes ruajtjes.

Pse, pikërisht ti, ruajtja muzikore, dhe si mund të marrësh pjesë në këtë?

  • NĂ«se po punon nĂ« njĂ« projekt qĂ« ka tĂ« bĂ«jĂ« me muzikĂ«n, ose po planifikon tĂ« krijosh njĂ« tĂ« tillĂ«, atĂ«herĂ« pĂ«r kĂ«tĂ« gjithçka Ă«shtĂ« menduar. Mund tĂ« pĂ«rdorĂ«sh museria pĂ«r tĂ« ruajtur dhe marrĂ« kĂ«ngĂ«, duke rritur rrjedhĂ«n e kĂ«ngĂ«ve nĂ« internet. NĂ«se, pĂ«r mĂ« tepĂ«r, ke mundĂ«si tĂ« ngrish dhe mbash tĂ« paktĂ«n njĂ« nod tĂ«ndin, kjo do tĂ« ishte kontribuimi mĂ« i mirĂ« pĂ«r zhvillimin e rrjetit.
  • Ndoshta je gati tĂ« marrĂ«sh njĂ« rol tjetĂ«r mbi vete: tĂ« ndihmosh me kodin, ose tĂ« plotĂ«sosh dhe moderosh bazĂ«n, tĂ« pĂ«rhapĂ«sh informacionin pĂ«r projektin tek njohurit e tu, etj.
  • Mund tĂ« tĂ« pĂ«lqejĂ« ideja dhe je gati tĂ« ndihmosh financiarisht, qĂ« gjithçka tĂ« jetojĂ« dhe tĂ« zhvillohet. Sa mĂ« shumĂ« nod, aq mĂ« shumĂ« kĂ«ngĂ«.
  • Ose, ndoshta, nĂ« njĂ« moment tĂ« caktuar do tĂ« tĂ« nevojitet tĂ« gjesh dhe shkarkosh njĂ« kĂ«ngĂ«. Mund ta bĂ«sh kĂ«tĂ« shumĂ« lehtĂ«, pĂ«r shembull, pĂ«rmes botit tĂ« Telegramit.

Projekti është aktualisht në fazën më të hershme. Një rrjet testimi është aktiv, nodet mund të ribashkohen shpesh, 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ë kryesor.

Të shikosh informacionin për nodin nga jashtë: numri i këngëve, hapësira e lirë, etj., mund të bëhet përmes një lidhjeje të formatit http://node-address/status ose http://node-address/status?pretty

Kontaktet e mia:

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster