Museria - ruajtja e decentralizuar e muzikës

Museria - ruajtja e decentralizuar e muzikës

Një ditë vendosa të shkruaj një aplikacion për të zgjedhur muzikën për veten time dhe për ta dëgjuar në shtëpi/në rrugë/stërvitje etj. Dhe në mënyrë që e gjithë kjo të funksionojë në një rrjedhë, me pjesëmarrje minimale nga unë. Unë dola me një arkitekturë, skicova një prototip dhe përfundimisht hasa në një "problem të vogël".

Dhe nuk është e qartë se ku mund t'i merrni vetë skedarët e këngëve. Në këtë kohë, VKontakte kishte mbyllur tashmë api, në portalet e mëdha muzikore gjithçka ishte gjithashtu e heshtur, madje këngët u shpërndanë në copa në mënyrë që të mos analizoheshin. Gjithçka që mbeti ishin disa faqe individuale fluturuese për natë me një ton reklamash dhe lloj-lloj mbeturinash, lloj-lloj programesh të dyshimta grabitqare dhe opsione të tjera "të pista". Në përgjithësi, jo një zgjidhje e vetme vërtet e mirë. Sigurisht, mund të blini një abonim për disa muzikë Yandex ose të ngjashme. Por përsëri, nuk ka askund API të hapur publike dhe nuk keni akses në muzikë në mënyrë programore. Disa kompani të mëdha në thelb kanë kufizuar aksesin e të tjerëve në muzikë. Pse ndodhi kjo fare? Duke gërmuar më thellë, u bë e qartë se problemi kryesor ishte e drejta e autorit. Zgjidhja aktuale në formën e abonimeve u përshtatet shumë autorëve komercialë të muzikës dhe po këtyre kompanive. Në të njëjtën kohë, muzika jo-komerciale dhe gjysmë komerciale gjithashtu bie në listën e përgjithshme. Ju ose paguani për gjithçka ose nuk dëgjoni asgjë.

Dhe fillova të mendoj se çfarë të bëj me gjithë këtë. Si mund ta organizojmë shpërndarjen falas të muzikës? Çfarë do të bëja nëse do të krijoja vetë muzikë dhe do të doja të fitoja para prej saj? A do të më pëlqente nëse këngët e mia do të ishin pirate? Çfarë zgjidhje alternative ka gjithsesi?

Si rezultat, ka dy probleme kryesore që duhet të zgjidhen:

  • Organizimi i shpërndarjes falas të muzikës duke përdorur metoda të përshtatshme për shumicën e njerëzve, përfshirë softuerin.
  • Ofrimi i alternativave për krijuesit e muzikës për të fituar para

Ruajtja globale e decentralizuar e muzikës

Fillimisht u përpoqa të gjeja zgjidhje ekzistuese dhe të krijoja gjithçka bazuar në këtë. Pas ca kohësh kërkimi, i pari që më pëlqeu ishte ipfs. Fillova të zbatoja idenë time, por pas një kohe zbulova disa probleme kritike në këtë zgjidhje:

  • Ipfs - ruajtje për gjithçka dhe këdo. Ka imazhe, muzikë dhe video dhe gjithçka që dëshironi. Në përgjithësi, një "koshi" kaq i madh planetar. Prandaj, kur nisni nyjen tuaj, menjëherë merrni një ngarkesë të madhe. Makina thjesht po përpëlitet nga dhimbja.
  • Një lloj mekanizmi i papërfunduar i grumbullimit të "plehrave". Nuk e di se si është tani, por në atë moment, nëse keni shkruar në konfigurim që dëshironi të kufizoni ruajtjen në dhjetë gigabajt të të dhënave, atëherë nuk do të thoshte asgjë. Ruajtja u rrit, duke injoruar shumë parametra të konfigurimit. Si rezultat, ishte e nevojshme të kishim një rezervë të madhe të diskut derisa ipfs të kuptonte se si të rivendoste të panevojshmen.
  • Në kohën e përdorimit të bibliotekës (nuk e di se si është tani), klienti nuk kishte afate të zbatuara. Ju dërgoni një kërkesë për të marrë një skedar, dhe nëse nuk ekziston, atëherë thjesht varni. Sigurisht, njerëzit dolën me të gjitha llojet e zgjidhjeve që zgjidhën pjesërisht problemin, por këto ishin paterica. Këto gjëra duhet të dalin nga kutia.

Kishte ende shumë probleme të vogla dhe përshtypja ishte e qartë: kjo nuk mund të përdoret për projektin. Vazhdova të kërkoja për një objekt magazinimi, duke eksploruar opsione të ndryshme, por nuk gjeta asgjë të përshtatshme.

Në fund, vendosa që ia vlen të përpiqesha të shkruaja vetë një ruajtje të decentralizuar. Edhe nëse nuk pretendon të jetë ndërplanetar, do të zgjidhë një problem specifik.

Dhe kështu doli i përhapur, depo, metastokulë, muzeria, muzeria-globale.

i përhapur - kjo është shtresa kryesore, më e ulët që ju lejon të kombinoni nyjet në një rrjet. Ai përmban një algoritëm, të cilin deri më tani e kam zbatuar pjesërisht bazuar në rreth 10000 serverë. Versioni i plotë i algoritmit është shumë më i vështirë për t'u zbatuar dhe do të kërkonte disa muaj shtesë (ndoshta edhe më shumë).

Unë nuk do ta përshkruaj me detaje përhapjen në këtë artikull; është më mirë të shkruaj një të veçantë një ditë. Këtu do të shënoj vetëm disa veçori:

  • Punon përmes http/https.
  • Ju mund të krijoni një rrjet të veçantë për një detyrë specifike, e cila do të zvogëlojë ndjeshëm ngarkesën në çdo projekt individual sesa nëse të gjithë do të ishin në të njëjtin rrjet.
  • Fillimisht u mendua një mekanizëm me pushime 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 në mënyrë fleksibël cilësimet nga brenda aplikacionit tuaj.
  • Biblioteka është e shkruar në nodejs. Çështjet e performancës së pirgut kompensohen nga natyra e tij e decentralizuar. Ngarkesa mund të "shpërndahet" duke rritur numrin e nyjeve. Në këmbim, ka shumë përparësi: një komunitet i madh, thjeshtësi dhe lehtësi në përdorim, një klient izomorfik, pa varësi të jashtme, etj.

depo është një shtresë e trashëguar nga përhapja që ju lejon të ruani skedarët në rrjet. Çdo skedar ka hash-in e vet të përmbajtjes së tij, i cili mund të përdoret për ta marrë më vonë. Skedarët nuk ndahen në blloqe, por ruhen tërësisht.

metastokulë - një shtresë e trashëguar nga spreadable, e cila ju lejon të ruani të dhëna në rrjet, por jo skedarë. Ndërfaqja është e ngjashme me një bazë të dhënash Nosql. Për shembull, mund të shtoni një skedar në storacle, të merrni hash-in e tij dhe ta shkruani në metastocle me një lidhje për diçka.

muzeria - trashëguar nga storacle dhe metastocle. Kjo shtresë është drejtpërdrejt përgjegjëse për ruajtjen e muzikës. Ruajtja funksionon vetëm me skedarë mp3 dhe etiketa id3.

Si "çelës" i këngës, emri i saj i plotë përdoret në formë Artist (TPE1) - Titulli (TIT2). Për shembull:

  • Squfur - Barra
  • Hi-rez - Lost My Way (feat. Emilio Rojas, Dani Devinci)

Mund të zbuloni sa më shumë detaje se si formohen titujt e këngëve. këtu. Duhet të shikoni funksionin utils.beautifySongTitle().

Përqindja e ndeshjeve të përcaktuara në cilësimet e nyjeve konsiderohet të jetë një përputhje. Për shembull, një vlerë prej 0.85 do të thotë që nëse funksioni i krahasimit të çelësave (emrat e këngëve) ka gjetur një ngjashmëri prej më shumë se 85%, atëherë është e njëjta këngë.

Algoritmi për përcaktimin e ngjashmërisë është aty, në funksion utils.getSongSimilarity().

Kopertina e këngës, për marrjen e mëvonshme, mund të bashkëngjitet edhe nëpërmjet etiketave (APIC). Shërbimet kanë të gjitha metodat e nevojshme për marrjen dhe përpunimin e etiketave.

Një shembull i punës me ruajtjen përmes një klienti mund të gjendet në README.

Të gjitha shtresat e mësipërme janë të pavarura dhe mund të përdoren veçmas si shtresa më të ulëta për projekte të tjera. Për shembull, ekziston tashmë një ide për të bërë një shtresë për ruajtjen e librave.

muzeria-globale është një depo git tashmë e konfiguruar për të nisur nyjen tuaj në rrjetin global të muzikës. Klonimi npm i && npm filloni dhe kjo është në thelb ajo. Mund ta konfiguroni në më shumë detaje, ta ekzekutoni në Docker, etj. Informacioni i detajuar është në dispozicion në github.

Kur azhurnohet depoja, duhet të përditësoni nyjen tuaj. Nëse numri i versionit të madh ose të vogël ndryshon, atëherë ky veprim është i detyrueshëm, përndryshe nyjet e vjetra do të injorohen nga rrjeti.

Mund të punoni me këngë manualisht dhe me program. Çdo nyje drejton një server për detyra të ndryshme. Përfshirë, kur vizitoni pikën përfundimtare të paracaktuar, do të merrni një ndërfaqe për të punuar me muzikë. Për shembull, mund të shkoni në nyja rrënjësore (lidhja mund të mos jetë e rëndësishme më vonë, nyjet hyrëse gjithashtu mund të merren në telegram, ose kërkoni përditësime në Github).

Në këtë mënyrë ju mund të kërkoni dhe ngarkoni këngë në memorie. Ngarkimi i këngëve mund të bëhet në dy mënyra: normale dhe të moderuara. Mënyra e dytë do të thotë që puna kryhet nga një person, jo nga një program. Dhe nëse e kontrolloni këtë kuti kur shtoni, do t'ju duhet të zgjidhni captcha. Këngët mund të shtohen me përparësi -1, 0 ose 1. Prioriteti 1 mund të vendoset vetëm në modalitetin e moderuar. Prioritetet janë të nevojshme në mënyrë që hapësira ruajtëse të vendosë në mënyrë më efektive se çfarë të bëni kur përpiqeni të zëvendësoni një këngë ekzistuese me një të re. Sa më i lartë të jetë prioriteti, aq më shumë ka gjasa që të mbishkruani një skedar ekzistues. Kjo ndihmon në luftimin e spamit dhe rrit cilësinë e këngëve të shkarkuara.

Nëse filloni të shtoni këngë në memorien tuaj, përpiquni të bashkëngjitni imazhe (kopertina), megjithëse kjo fushë nuk kërkohet. Në 99% të rasteve, imazhet e para në Google bazuar në titujt e këngëve janë kopertinat e albumeve.

Si ndodh teknikisht shtimi i skedarëve, me pak fjalë:

  • Klienti merr adresën e një nyje të lirë, e cila do të bëhet një koordinator për një kohë.
  • Funksioni i shtimit të një kënge aktivizohet (nga një person ose kod) dhe bëhet një kërkesë për të shtuar një koordinator në pikën përfundimtare.
  • Koordinatori llogarit se sa dublikatë duhet të ruhen (parametër i konfigurueshëm).
  • Kërkohen nyjet më të përshtatshme për ruajtje.
  • Skedari shkon drejtpërdrejt në këto nyje.

Si janë pranuar teknikisht skedarët:

  • Klienti merr adresën e një nyje të lirë, e cila do të bëhet një koordinator për një kohë.
  • Funksioni i marrjes së një kënge (nga një person ose një kod) aktivizohet dhe bëhet një kërkesë për ta marrë atë në pikën përfundimtare të koordinatorit.
  • Koordinatori kontrollon praninë e lidhjes në cache. Nëse ka një dhe funksionon, i kthehet menjëherë klientit, përndryshe nyjet anketohen për disponueshmëri.
  • Skedari merret nga lidhja, nëse gjendet.

Alternativa për krijuesit e muzikës

Gjithmonë më ka interesuar pyetja se si mund të vlerësohet objektivisht vlera e shumë veprave krijuese? Pse, për shembull, një person e ofron albumin e tij muzikor për 10 dollarë? Ose për 20 dollarë ose 100 dollarë. Ku është algoritmi? Kur, për shembull, flasim për ndonjë produkt fizik, apo edhe për shumë lloje shërbimesh, atëherë të paktën mund të llogarisim koston dhe të vazhdojmë prej saj.

Mirë, le të themi se kemi vënë bast 10 dollarë. A është kjo shumë efektive? Le të themi se dëgjova një album diku ose një këngë nga atje dhe vendosa të shpreh mirënjohjen time. Por sipas ndjenjave dhe aftësive të mia, 3 dollarë janë tavani im. Pra, çfarë duhet të bëjmë? Me shumë mundësi, thjesht nuk do të bëj asgjë, si shumica e njerëzve.

Duke vendosur një çmim fiks për punën krijuese, ju thjesht kufizoni veten, duke penguar një numër më të madh njerëzish që t'ju dërgojnë më pak para, gjë që në total mund të jetë më mbresëlënëse se ata që do të blejnë me çmimin që ju vendosni. Më duket se kreativiteti është pikërisht fusha ku duhet të sundojnë së pari donacionet. Për ta bërë këtë ju duhet:

  • Mësojini njerëzit të falënderojnë në këtë mënyrë. Vetë krijuesit duhet të tregojnë qartë se do të donin të merrnin donacione, të shtonin lidhje me mënyra të ndryshme pagese kudo, etj.
  • Nevojiten më shumë mekanizma për të thjeshtuar dhe forcuar këto procese. Për shembull, krijoni një lloj uebsajti global ku mund të dhuroni për kreativitet duke përdorur lidhje të të drejtave të autorit.

    Le të themi se lidhja është diçka si kjo:

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

    Nëse e ngushtojmë te muzikantët, atëherë:

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

    Performuesi duhet të verifikojë pseudonimin e tij dhe t'i bashkëngjisë atij.

    Ne po shtojmë një funksion për gjenerimin e një lidhjeje të tillë për klientin museria, dhe të gjitha projektet që përdorin depo mund të vendosin butona dhurimi me këto lidhje pranë këngëve në faqet/aplikacionet e tyre të internetit. Përdoruesit kanë mundësinë të bëjnë një donacion shumë shpejt dhe lehtë. Natyrisht, kjo qasje mund të përdoret në çdo projekt dhe kategori të krijimtarisë, jo vetëm përmes ruajtjes.

Pse saktësisht keni nevojë për një strukturë për ruajtjen e muzikës dhe si mund të merrni pjesë në të?

  • Nëse jeni duke punuar në një projekt që lidhet me muzikën, ose po planifikoni të krijoni një të tillë, atëherë kjo është ajo për të cilën ishte menduar gjithçka. Ju mund të përdorni museria për të ruajtur dhe marrë këngë, duke rritur rrjedhën e këngëve në internet. Nëse, në të njëjtën kohë, keni aftësinë për të ngritur dhe mbajtur të paktën një nyje tuajën, atëherë ky do të jetë kontributi më i mirë në zhvillimin e rrjetit.
  • Ndoshta ju jeni gati të merrni përsipër ndonjë rol tjetër: të ndihmoni me kodin, ose të plotësoni dhe moderoni bazën e të dhënave, të shpërndani informacione rreth projektit te miqtë tuaj, etj.
  • Ndoshta ju ka pëlqyer ideja dhe jeni gati të ndihmoni financiarisht në mënyrë që gjithçka të jetojë dhe zhvillohet. Sa më shumë nyje, aq më shumë këngë.
  • Ose thjesht duhet të gjeni dhe shkarkoni një këngë në një moment. Ju mund ta bëni këtë shumë thjesht, për shembull, përmes telegram bot.

Projekti tani është në fazën fillestare. Një rrjet testimi është nisur, nyjet mund të rindizen shpesh, të kërkojnë përditësime, etj. Nëse nuk ka probleme kritike gjatë periudhës së vlerësimit, i njëjti rrjet shndërrohet në atë kryesor.

Ju mund të shikoni informacionin për nyjen nga jashtë: numrin e këngëve, hapësirën e lirë, etj., duke përdorur një lidhje si p.sh. http://node-address/status ose http://node-address/status?pretty

Kontaktet e mia:

Burimi: www.habr.com

Shto një koment