
Kord mĂ”tlesin ma kirjutada rakenduse, et valida muusikat enda jaoks ja kuulata kodus/vĂ€ljas/trenni ajal jne. Ja et kĂ”ik see toimiks voos, minimaalse osa minu osalusel. MĂ”tlesin vĂ€lja arhitektuuri, visandasin prototĂŒĂŒbi ja lĂ”ppkokkuvĂ”ttes sattusin silmitsi ĂŒhe "vĂ€ikese probleemiga".
Kust vĂ”iks nende laulude faile vĂ”tta, on arusaamatu. Selleks ajaks oli Vkontakte juba API sulgenud ja suuremates muusikaportaalides oli samuti vaikus, isegi lood antakse Ă€ra osade kaupa, et ei saaks eraldada. Alles jĂ€id mingid ĂŒksikud petturlikud ĂŒhepĂ€evakĂŒlastused, kus on tonn reklaami ja igasugust prĂŒgi, kahtlased grabber-ide ja muud "mustad" variandid. ĂhesĂ”naga, ĂŒhtegi tĂ”eliselt head lahendust ei olnud. Loomulikult vĂ”ib osta tellimuse mĂ”ne Yandex Muusika vĂ”i muu sarnase teenuse jaoks. Kuid jĂ€lle, seal ei ole kuskil avalikku API ja sul ei ole juurdepÀÀsu muusikale programmiliselt. MĂ”ned suured ettevĂ”tted on sisuliselt piiranud teiste ligipÀÀsu muusikale. Miks see ĂŒldse nii juhtus? SĂŒgavamale kaevates sai selgeks, et peamine probleem on autoriĂ”igustes. Praegune lahendus tellimuste nĂ€ol sobib paljudele kommertsalustele muusikateoste autoritele ja nendele ettevĂ”tetele. Samuti satub Ă€ravĂ”etava muusika hulka ka mittekommertslik ja tinglikult kommertslik muusika. Kas maksad kĂ”igi eest vĂ”i ei kuula ĂŒldse midagi.
Ja hakkasin mÔtlema, mida sellega kÔigega teha. Kuidas korraldada muusika vabalt levitamist? Mis ma teeksin, kui ma ise muusika loomisega tegeleksin ja sooviksin sellega raha teenida? Kas mulle meeldiks, kui mu laule hakaks salaja jagama? Millised alternatiivsed lahendused vÔiksid olla?
Loomulikult on kaks peamist probleemi, millega tuleb tegeleda:
- Muusika vabaks levitamiseks mugavate meetodite, sealhulgas tarkvarade kaudu korraldamine.
- Alternatiivsete vÔimaluste pakkumine muusika loojatele raha teenimiseks.
Globaalselt jaotatud muusika salvestus.
Esialgu proovisin leida olemasolevaid lahendusi ja ehitada kÔik selle pÔhjal. PÀrast mÔnda aega otsimist jÀi mulle silma . Alustasin oma idee rakendamist, kuid mÔne aja pÀrast avastasin selles lahenduses mitmeid kriitilisi probleeme:
- Ipfs on kĂ”ikehĂ”lmav salvestuslahendus. Siin on nii pildid, muusika, videod kui ka kĂ”ik muu. ĂhesĂ”naga suur planeetaarne âprĂŒgilaâ. SeetĂ”ttu, kui sa oma sĂ”lme kĂ€ivitad, saad kohe tohutu koormuse. Masin lihtsalt vÀÀnleb valu tĂ”ttu.
- MĂ”ni poolik «prĂŒgimehhanism». Ei tea, kuidas selle olukorra praegune seis on, aga siis, kui sa konfiguratsioonis mÀÀrasid, et soovid salvestust piirata kĂŒmne gigabaidiga, ei tĂ€hendanud see midagi. Salvestus laienes, ignoreerides paljusid konfiguratsiooniparameetreid. Tulemusena pidi olema tohutu kĂ”vakettaruumi varu, kuni ipfs suudab aru saada, kuidas ebavajalikku eemaldada.
- Raamatukogu kasutamise ajal (ei tea, kuidas praegu on) ei olnud kliendil aja piire. Saadad faili saamise taotluse ja kui seda ei ole, siis lihtsalt ripud. Loomulikult on inimesed vĂ€lja mĂ”elnud igasuguseid ĂŒmbersĂ”ite, mis osaliselt probleemi lahendasid, kuid need olid ikkagi ajutised lahendused. Sellised asjad peaksid olema vĂ€lja pakutud juba algselt.
Lisaks oli palju vĂ€ikeseid probleeme, ĂŒldine mulje oli selgelt negatiivne: seda ei saa projekti jaoks kasutada. JĂ€tkasin salvestuslahenduste otsimist, uurisin erinevaid variante, kuid ei leidnud sobivat.
LĂ”puks otsustasin, et vĂ”iks proovida ise detsentraliseeritud salvestust kirjutada. Olgu, et see ei pĂŒĂŒa mitte mingil juhul olla interplanetaarne, aga see lahendab konkreetselt antud ĂŒlesande.
Nii see sĂŒndis , , , , .
spreadable â see on pĂ”hikiht, mis ĂŒhendab sĂ”lmed vĂ”rguks. Sellesse on sisse ehitatud algoritm, mille olen seni osaliselt ellu viinud ligikaudu 10 000 serveri jaoks. Algoritmi tĂ€isversioon on tunduvalt keerulisem ja selle elluviimine vĂ”taks veel mitu kuud (vĂ”ib-olla rohkem).
Ma ei hakka seda spreadable siin pÔhjalikult kirjeldama, parem kirjutaksin sellest eraldi hiljem. Siin mainin ainult mÔningaid eripÀrasid:
- Töötleb http/https kaudu.
- Saate luua eraldi vĂ”rgu konkreetse ĂŒlesande jaoks, mis vĂ€hendab iga projekti koormust vĂ”rreldes sellega, kui need kĂ”ik oleksid ĂŒhes vĂ”rgus.
- Alguses on ette nÀhtud mehhanismidega ajapiirangud ja muud pisiasjad. See toimib kÔikide meetodite jaoks, nii kliendis kui ka sÔlmes. Parameetreid on vÔimalik paindlikult hallata oma rakendusest.
- Raamatukogu on kirjutatud nodejs-is. JĂ”udluse probleeme kompenseerib detsentraliseeritud iseloom. Koormust saab 'jaotada' sĂ”lmede arvu suurendamisega. Vastutasuks on palju eeliseid: suur ĂŒhiskond, töö lihtsus ja mugavus, isomorfne klient, vĂ€list sĂ”ltuvuste puudumine jne.
storacle â see, miseldav layer, mis vĂ”imaldab andmete salvestamist vĂ”rgus. Iga faili sisu pĂ”hjal on tal oma RĂM ja seda saab hiljem uuesti kĂ€tte saada. Failid ei jaotu plokkideks, vaid salvestatakse tervikuna.
metastocle â layer, mis pĂ€rineb spreadable'ist ja vĂ”imaldab andmete salvestamist vĂ”rgus, kuid mitte faile. Liides sarnaneb nosql andmebaasidele. NĂ€iteks saab faili lisada storaclesse, saada selle RĂM ja salvestada metastoclesse mĂ”nele kĂŒlge.
museria â pĂ€rineb storacle'ist ja metastocle'ist. See layer vastutab otseselt muusika salvestamise eest. Laukas töötab ainult mp3 failidega ja id3 siltidega.
Laulu âvĂ”tmenaâ kasutatakse selle tĂ€isnimi kujul Esitaja (TPE1) â Pealkiri (TIT2). NĂ€iteks:
- Brimstone â The Burden
- Hi-rez â Lost My Way (feat. Emilio Rojas, Dani Devinci)
Maksimaalne teave selle kohta, kuidas laulude nimetused kujunevad, on saadaval . Tuleb vaadata funktsiooni utils.beautifySongTitle().
VĂ”tmete (laulude nimede) sarnasuse mÀÀramine arvestab node'i seadistustes mÀÀratud protsentidega. NĂ€iteks vÀÀrtus 0.85 tĂ€hendab, et kui vĂ”rdlusfunktsioon tuvastab vĂ”tmete (laulude) sarnasuse ĂŒle 85%, siis on see sama laul.
Sarnasuse mÀÀramise algoritm on seal sama, funktsioonis utils.getSongSimilarity().
Laulude katte, mis on edasise saamise jaoks, peab ka olema seotud siltide kaudu (APIC). Utiliitides (utils) on kÔik vajalikud meetodid siltide saamiseks ja töötlemiseks.
NÀidet selle kohta, kuidas salvestusega kliendi kaudu töötada, saab vaadata .
KÔik eespool nimetatud kihid on iseseisvad ja saavad olla eraldi kasutusel kui madalamad kihid teiste projektide jaoks. NÀiteks on juba mÔte luua kihiga raamatute hoidmise jaoks.
museria-global â see on juba konfigureeritud git-repositoorium enda sĂ”lme kĂ€ivitamiseks globaalsetes muusika vĂ”rkudes. Kloonige, npm i && npm start ja pĂ”himĂ”tteliselt kĂ”ik. Saate seadistada detailsemalt, kĂ€ivitada Dockeris jne. TĂ€iendav teave on saadaval .
Kui repositoorium uuendatakse, tuleb ka oma sÔlm uuendada. Kui muudetakse peamist vÔi alamversiooni numbrit, on see toiming kohustuslik, vastasel juhul ignoreeritakse vanu sÔlmi vÔrgus.
Lauludega saab töötada kĂ€sitsi ja programmiliselt. Iga sĂ”lm kĂ€ivitab serveri erinevate ĂŒlesannete jaoks. Sealhulgas, kui kĂŒlastate vaikimisi lĂ”pp-punkti, saate liidese muusikaga töötamiseks. NĂ€iteks, vĂ”ite kĂŒlastada (link vĂ”ib hiljem kehtetuks muutuda, sisenemisallikaid saab samuti saada , vĂ”i vaadata uuendusi githubis).
Nii saate otsida ja laadida laule salvestusse. Laulude ĂŒleslaadimine vĂ”ib toimuda kahes reĆŸiimis: tavaline ja pĂ€rastmoderatsioon. Viimane tĂ€hendab, et tööd teeb inimene, mitte programm. Ja kui lisate selle mĂ€rkeruudu, peate lahendama CAPTCHA. Laule saab lisada prioriteetidega -1, 0 vĂ”i 1. Prioriteet 1 vĂ”ib olla ainult pĂ€rastmoderatsioonireĆŸiimis. Prioriteedid on vajalikud, et salvestus saaks tĂ”husamalt otsustada, mida teha, kui proovite olemasolevat laulu uuega asendada. Mida kĂ”rgem on prioriteet, seda rohkem on vĂ”imalusi, et kirjutate olemasoleva faili ĂŒle. See aitab vĂ”idelda rĂ€mpsposti vastu ja suurendab ĂŒleslaaditavate laulude kvaliteeti.
Kui hakkate laule salvestusse lisama, proovige ka pilte (kaane) lisada, kuigi see vĂ€li ei ole kohustuslik. 99% juhtudest on esimesed pildid Googleâis laulunimede jĂ€rgi albumikaaned.
Kuidas failide lisamine tehniliselt toimub, kahel sÔnal:
- Kliendile antakse vaba sÔlme aadress, mis mingiks ajaks muutub koordinaatoriks.
- Aktiveeritakse laulu lisamise funktsioon (inimese vÔi koodi poolt), toimub pÀring lisamiseks koordinaatori lÔpp-punkti.
- Koordinaator arvutab, kui palju koopiaid on vaja salvestada (konfigureeritav parameeter).
- Otsitakse kÔige sobivamaid sÔlmi salvestamiseks.
- Fail saadetakse nendele sÔlmedele.
Kuidas failide hankimine tehniliselt toimub:
- Kliendile antakse vaba sÔlme aadress, mis mingiks ajaks muutub koordinaatoriks.
- Aktiveeritakse laulu saamise funktsioon (inimese vÔi koodi poolt), toimub pÀring saamiseks koordinaatori lÔpp-punkti.
- Koordinaator kontrollib, kas link on vahemĂ€lus olemas. Kui see on olemas ja töötab, tagastatakse see kohe kliendile, vastasel juhul kĂŒsitakse sĂ”lmedelt olemasolu kohta.
- Faili hankimine toimub lingi kaudu, kui selline leiti.
Alternatiivid muusikategijatele
Mind sempre on mindestus, kuidas ĂŒldiselt saab objektiivselt hinnata paljude loominguliste teoste hinda? Miks, nĂ€iteks, inimene paneb oma muusikalbumi hinnaks 10$? VĂ”i 20$ vĂ”i 100$. Kus on algoritm? Kui me nĂ€iteks rÀÀgime mingist fĂŒĂŒsilisest tootest vĂ”i isegi paljusid teenuseid, siis saame vĂ€hemalt arvutada tootmiskulu ja sellest alustada.
Okei, oletame, et 10$ on seatud. Kas see on tÔeliselt efektiivne? Oletame, et ma kuulasin albumit kuskil vÔi seal on laul ja otsustasin tÀnada. Kuid minu tunnetuste ja isiklike vÔimaluste kohaselt on 3$ minu piir. Kuidas siis olla? TÔenÀoliselt ma ei tee midagi, nagu enamik inimesi.
MĂŒĂŒes mingi fikseeritud hinna loomingulise töö eest, piirad end lihtsalt, ei anna suuremale hulgale inimestele vĂ”imalust anda sulle vĂ€iksemaid summa, mis kokku vĂ”ib olla muljetavaldavam kui need, kes ostavad sinu seatud hinnaga. Minu arust on looming just see valdkond, kus peaksid kĂ”igepealt domineerima annetused. Selleks on vajalik:
- Ăpetage inimesi tĂ€nama just niimoodi. Loomehed peaksid selgelt nĂ€itama, et nad soovivad toetusi, lisama igale poole lingid erinevatele makseviisidele jne.
- Vajame rohkem mehhanisme nende protsesside lihtsustamiseks ja tugevdamiseks. NĂ€iteks luua globaalne veebisait, kuhu saab loomingut toetada autorite linkide kaudu.
Oletame, et link on umbes selline:
http://someartistsdonationsite.site/category/artist?external-infoKui kitsendame muusikutele, siis:
http://someartistsdonationsite.com/music/miyagi?song=blablaEsitaja peab kinnitama oma nimesildi ja sellega seotud olema.
Lisame klienti museria funktsiooni sellise lingi genereerimiseks, ja kÔik projektid, mis kasutavad salvestusruumi, saavad paigutada oma veebisaitidele/rakendustesse toetuse nuppe nende lingidega koos laulude kÔrval. Kasutajatel on vÔimalus vÀga kiiresti ja lihtsalt toetust teha. Loomulikult saab seda lÀhenemist kasutada igas projektis ja loomingukategoorias, mitte ainult salvestusruumi kaudu.
Miks on just sulle vajalik muusikaruumi, ja kuidas saad selles osaleda?
- Kui töötad muusikaga seotud projekti kallal vĂ”i plaanid sellise loomist, siis just selleks see kĂ”ik ongi mĂ”eldud. Sa saad kasutada museriat laulude salvestamiseks ja hankimiseks, suurendades laulude voogu vĂ”rgus. Kui sul on samas vĂ”imalus tĂ”sta ja hoida vĂ€hemalt ĂŒht oma sĂ”lme, siis see oleks parim panus vĂ”rgu arengusse.
- VÔib-olla oled sa valmis vÔtma endale mÔne muu rolli: aidata koodi kirjutada, tÀita ja modereerida baasi, levitada projekti teavet oma tuttavatele jne.
- VÔib-olla meeldis sulle idee ja oled valmis aitama rahaliselt, et kÔik see elaks ja areneks. Mida rohkem sÔlmi, seda rohkem laule.
- VÔi vajad sa lihtsalt mingil hetkel laulu leidmiseks ja allalaadimiseks. Sa saad seda teha vÀga lihtsalt, nÀiteks lÀbi .
Projekt on hetkel kÔige algusjÀrgus. On kÀivitatud testvÔrk, sÔlmed vÔivad tihti taaskÀivituda, vajada vÀrskendusi jne. Kui hindamisperioodil ei esine kriitilisi probleeme, muudetakse see sama vÔrk pÔhivÔrguks.
VĂ€lise node info vaatamiseks: laulude arv, vaba koht jne, saad kĂŒlastada linki, mis nĂ€eb vĂ€lja nagu http://node-address/status vĂ”i http://node-address/status?pretty
Minu kontaktid:
Allikas: habr.com
