Museria - almacenamiento decentralizatu di musica

Museria - almacenamiento decentralizatu di musica

Un ghjornu aghju decisu di scrive una applicazione per selezziunà a musica per mè stessu è l'ascolta in casa / in strada / allenamenti, etc. È cusì chì tuttu questu travaglia in un flussu, cù una participazione minima da mè. Aghju ghjuntu cun una architettura, abbozzatu un prototipu, è eventualmente hà scontru in un "picculu prublema".

È ùn hè micca chjaru induve uttene i schedarii di canzone stessu. À questu tempu, VKontakte avia digià chjusu l'api, nantu à i grandi portali di musica, tuttu era ancu silenziatu, ancu i canzoni sò stati dati in pezzi per ùn esse parsed. Il ne restait plus qu'un certain nombre de sites individuels de vol à la nuit avec une tonne de publicité et toutes sortes de poussières, toutes sortes de programmes d'accaparement douteux et d'autres options "suffisantes". In generale, ùn hè micca una solu suluzione veramente bona. Pudete, sicuru, cumprà un abbonamentu à qualchì musica Yandex o simili. Ma dinò, ùn ci hè micca una API publica aperta in ogni locu è ùn avete micca accessu à a musica in modu programmaticu. Parechji grande cumpagnie anu essenzialmente limitatu l'accessu di l'altri à a musica. Perchè questu hè accadutu in tuttu? Scavando più profondamente, hè diventatu chjaru chì u prublema principali era u copyright. A suluzione attuale in forma di abbonamenti cunvene à parechji autori di musica cummirciali è sti stessi cumpagnie. À u listessu tempu, a musica micca cummerciale è semi-cumerciale hè ancu in a lista generale. O paghete per tuttu o ùn ascoltate nunda.

E aghju cuminciatu à pensà ciò chì fà cù tuttu questu. Cumu pudemu urganizà a distribuzione libera di musica ? Chì avissi da fà s'è aghju creatu a musica per mè stessu è vulia guadagnà soldi da questu? Mi piacerebbe se e mo canzone eranu pirate ? Chì suluzione alternativa ci hè in ogni modu?

In u risultatu, ci sò dui prublemi principali chì deve esse risoltu:

  • L'urganizazione di a distribuzione libera di musica utilizendu metudi convenienti per a maiò parte di a ghjente, cumpresu u software.
  • Offre alternative per i creatori di musica per fà soldi

Almacenamiento di musica decentralizatu globale

In principiu, aghju pruvatu à truvà suluzioni esistenti è creà tuttu basatu annantu à questu. Dopu qualchì tempu di ricerca, u primu chì mi piaceva era ipfs. Aghju cuminciatu à implementà a mo idea, ma dopu un pocu tempu aghju scupertu parechji prublemi critichi in questa suluzione:

  • Ipfs - almacenamentu per tuttu è tutti. Ci sò imagine è musica è video è tuttu ciò chì vulete. In generale, un "dustbin" planetariu cusì grande. Dunque, quandu lanciate u vostru node, riceve immediatamente una carica enormosa. A vittura hè solu cuntorta di dolore.
  • Qualchì tipu di mecanismu di cullizzioni "basura" infinitu. Ùn sò micca sapè cumu hè avà, ma in quellu mumentu, se avete scrittu in a cunfigurazione chì vulete limità l'almacenamiento à deci gigabyte di dati, allora ùn significava nunda. L'almacenamiento hè cresciutu, ignorendu parechji paràmetri di cunfigurazione. In u risultatu, era necessariu avè una riserva enormosa di discu duru finu à chì ipfs hà capitu cumu resettate l'innecessariu.
  • À u mumentu di l'usu di a biblioteca (ùn sò micca sapè cumu hè avà), u cliente ùn hà micca implementatu timeouts. Mandate una dumanda per riceve un schedariu, è s'ellu ùn esiste micca, allora basta à impiccà. Di sicuru, a ghjente hà ghjuntu cù ogni tipu di soluzioni chì in parte risolve u prublema, ma questi eranu crutches. Queste cose duveranu esce da a scatula.

Ci era ancu assai prublemi minori, è l'impressione era chjara: questu ùn pò micca esse usatu per u prugettu. Aghju cuntinuatu à circà una facilità di almacenamento, esplorendu diverse opzioni, ma ùn aghju mai trovu nunda adattatu.

À a fine, aghju decisu chì valeva a pena di pruvà à scrive un almacenamentu descentralizatu stessu. Ancu s'ellu ùn pretende micca esse interplanetari, risolverà un compitu specificu.

È cusì hè risultatu spargugliu, storacle, metastoculu, museria, museria-global.

spargugliu - questu hè u principale, u più bassu stratu chì vi permette di cunghjuntà i nodi in una reta. Contene un algoritmu, chì aghju per avà implementatu parzialmente basatu annantu à circa 10000 XNUMX servitori. A versione completa di l'algoritmu hè assai più difficiuli di implementà è avaristi bisognu di parechji mesi supplementari (forsi più).

Ùn descriveraghju micca in dettaglio a diffusione in questu articulu; hè megliu scrive un ghjornu separatu. Quì aghju nutatu solu alcune caratteristiche:

  • Funziona via http/https.
  • Pudete creà una reta separata per un compitu specificu, chì riducerà significativamente a carica nantu à ogni prughjettu individuale chè s'ellu eranu tutti in a stessa reta.
  • Un mecanismu cù timeouts è altri picculi cosi hè statu inizialmente pensatu. È questu travaglia per tutti i metudi in u cliente è in u node. Pudete gestisce in modu flessibile i paràmetri da a vostra applicazione.
  • A biblioteca hè scritta in nodejs. I prublemi di rendiment di a pila sò compensati da a so natura decentralizata. A carica pò esse "sparghje" aumentendu u numeru di nodi. In ritornu, ci sò assai vantaghji: una cumunità enormosa, simplicità è facilità d'utilizazione, un cliente isomorfu, senza dependenze esterne, etc.

storacle hè una strata ereditata da spreadable chì permette di almacenà i fugliali in a reta. Ogni schedariu hà u so propiu hash di u so cuntenutu, chì pò esse usatu per ricuperà dopu. I schedarii ùn sò micca divisi in blocchi, ma sò almacenati interamente.

metastoculu - una strata ereditata da spreadable, chì permette di almacenà dati in a reta, ma micca i schedari. L'interfaccia hè simile à una basa di dati Nosql. Pudete, per esempiu, aghjunghje un schedariu à storacle, uttene u so hash è scrivite à metastocle cù un ligame à qualcosa.

museria - ereditatu da storacle è metastocle. Stu stratu hè direttamente rispunsevuli di almacenà a musica. L'almacenamiento funziona solu cù i fugliali mp3 è i tag id3.

Cum'è una "chjave" di a canzone, u so nome cumpletu hè utilizatu in a forma Artista (TPE1) - Titulu (TIT2). Per esempiu:

  • Brimstone - U fardelu
  • Hi-rez - Lost My Way (feat. Emilio Rojas, Dani Devinci)

Pudete scopre in u più dettagliu pussibule cumu si formanu i tituli di canzone. ccà. Avete bisognu à vede a funzione utils.beautifySongTitle().

U percentuale di partite definite in i paràmetri di u nodu hè cunsideratu cum'è una partita. Per esempiu, un valore di 0.85 significa chì se a funzione di paragone chjave (nomi di canzone) hà truvatu una similitudine di più di 85%, allora hè a stessa canzone.

L'algoritmu per determinà a similarità hè quì, in a funzione utils.getSongSimilarity().

A copertina di a canzone, per riceve più tardi, pò ancu esse attaccata via tag (APIC). L'utilità anu tutti i metudi necessarii per riceve è processà tag.

Un esempiu di travaglià cù u almacenamentu attraversu un cliente pò esse truvatu in readme.

Tutti i strati di sopra sò autonomi è ponu esse aduprati separatamente cum'è strati più bassi per altri prughjetti. Per esempiu, ci hè digià una idea di fà una capa per almacenà libri.

museria-global hè un repository git digià cunfiguratu per lancià u vostru propiu node in a reta musicale globale. Cloning npm i && npm principià è questu hè in fondu. Pudete cunfigurà in più detail, eseguite in Docker, etc. L'infurmazione dettagliata hè dispunibule à github.

Quandu u repository hè aghjurnatu, avete bisognu di aghjurnà u vostru node. Se u numeru di versione maiò o minore cambia, allora sta azione hè ubligatoria, altrimenti i vechji nodi seranu ignorati da a reta.

Pudete travaglià cù canzoni manually è programmatically. Ogni node gestisce un servitore per diverse attività. Inclusu, quandu visitate l'endpoint predeterminatu, riceverete una interfaccia per travaglià cù a musica. Per esempiu, pudete andà à nodu radice (u ligame pò esse micca pertinenti dopu, i nodi di input ponu ancu esse ottenuti in telegramma, o cercate l'aghjurnamenti nantu à Github).

In questu modu pudete cercà è caricate canzoni in u almacenamiento. A carica di canzoni pò esse realizatu in dui modi: normale è moderatu. U sicondu modu significa chì u travagliu hè realizatu da una persona, micca un prugramma. È se verificate sta casella quandu aghjunghje, avete bisognu di risolve u captcha. I canzoni ponu esse aghjuntu cù priorità -1, 0 o 1. A priorità 1 pò esse stabilita solu in modu moderatu. E priorità sò necessarie per chì l'almacenamiento pò decide più efficacemente ciò chì fà quandu pruvate di rimpiazzà una canzone esistente cù una nova. A più alta a priorità, u più prubabile chì site di sovrascrive un schedariu esistente. Questu aiuta à cumbatte u puzzicheghju è aumenta a qualità di e canzoni scaricate.

Se cuminciate à aghjunghje canzoni à u vostru almacenamentu, pruvate à aghjunghje l'imaghjini (copertina), ancu s'ellu ùn hè micca necessariu stu campu. In u 99% di i casi, i primi imaghjini nantu à Google basati nantu à i tituli di canzone sò copertine di l'album.

Cumu tecnicamente l'aghjunzione di i fugliali accade, in poche parole:

  • U cliente riceve l'indirizzu di un node liberu, chì diventerà un coordinatore per un tempu.
  • A funzione di aghjunghje una canzone hè attivata (da una persona o codice), è una dumanda hè fatta per aghjunghje un coordinatore à l'endpoint.
  • U coordinatore calcula quanti duplicati deve esse guardatu (parametru cunfigurabile).
  • I nodi più adattati per salvà sò cercati.
  • U schedariu và direttamente à sti nodi.

Cumu tecnicamente i schedari sò ricevuti:

  • U cliente riceve l'indirizzu di un node liberu, chì diventerà un coordinatore per un tempu.
  • A funzione di riceve una canzone (da una persona o un codice) hè attivata, è una dumanda hè fatta per ricevelu à u puntu finale di u coordinatore.
  • U coordinatore verifica a presenza di u ligame in a cache. Se ci hè unu è travaglia, hè immediatamente tornatu à u cliente, altrimente i nodi sò polled per dispunibilità.
  • U schedariu hè ricevutu da u ligame, se unu hè truvatu.

Alternative per i creatori di musica

Aghju sempre statu interessatu in a quistione di cumu si pò evaluà oggettivamente u valore di parechje opere creative? Perchè, per esempiu, una persona offre u so album di musica per $ 10? Sia per $ 20 o $ 100. Induve hè l'algoritmu? Quandu, per esempiu, parlemu di qualchì pruduttu fisicu, o ancu parechji tippi di servizii, allora pudemu almenu calculà u costu è procederà da questu.

Va bè, dicemu chì avemu scumessa $ 10. Hè questu assai efficace? Diciamu chì aghju intesu un album in qualchì locu o una canzone da quì è decisu di mustrà a mo gratitudine. Ma sicondu i mo sentimenti è e mo capacità, $ 3 hè u mo tettu. Allora chì duvemu fà ? Hè assai prubabile di ùn fà nunda, cum'è a maiò parte di a ghjente.

Fixendu un prezzu fissu per u travagliu creativu, vi limità solu, impediscendu à un grande numaru di persone di mandà menu soldi, chì in tuttu pò esse più impressiunanti di quelli chì cumprà à u prezzu chì avete stabilitu. Mi pare chì a creatività hè esattamente l'area induve e donazioni duveranu guvernà prima. Per fà questu avete bisognu:

  • Insegne à e persone à ringrazià in questu modu. I creatori stessi devenu dimustrà chjaramente ch'elli vulianu riceve donazioni, aghjunghje ligami à diversi metudi di pagamentu in ogni locu, etc.
  • Hè bisognu di più miccanismi per simplificà è rinfurzà sti prucessi. Per esempiu, crea un tipu di situ web globale induve pudete donà per a creatività utilizendu ligami di copyright.

    Diciamu chì u ligame hè qualcosa cum'è questu:

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

    Se ci ristrette à i musicisti, allora:

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

    L'interprete hà bisognu di verificà u so nickname è aghjunghje à questu.

    Aghjunghjemu una funzione per generà un tali ligame à u cliente di a museria, è tutti i prughjetti chì utilizanu u repository ponu mette i buttoni di donazione cù sti ligami accantu à e canzoni nantu à i so siti web/applicazioni. L'utilizatori anu l'uppurtunità di fà una donazione assai rapidamente è facilmente. Naturalmente, stu approcciu pò esse usatu in ogni prughjettu è categuria di creatività, micca solu per u almacenamentu.

Perchè esattamente avete bisognu di una facilità di almacenamiento di musica, è cumu pudete participà in questu?

  • Sè vo site u travagliu nantu à un prughjettu ligatu à a musica, o di pianificà à creà unu, allura chistu è ciò chì tuttu era destinatu. Pudete aduprà a museria per almacenà è ritruvà canzoni, aumentendu u flussu di canzoni in linea. Se, à u stessu tempu, avete a capacità di elevà è mantene almenu un node di u vostru propiu, allora questu serà u megliu cuntribuzione à u sviluppu di a reta.
  • Forsi vi sò prontu à piglià un altru rolu: aiutu cù u codice, o compie è moderate a basa di dati, distribuisce infurmazioni nantu à u prugettu à i vostri amichi, etc.
  • Forsi ti piace l'idea è sò pronti à aiutà finanziariamente per chì tuttu vive è si sviluppa. Più nodi, più canzoni.
  • O avete solu bisognu di truvà è scaricà una canzone in un certu puntu. Pudete fà questu assai simplice, per esempiu, attraversu telegram bot.

U prugettu hè avà à u principiu di u stadiu. Una rete di prova hè stata lanciata, i nodi ponu riavviare spessu, necessitanu aghjurnamenti, etc. Se ùn ci sò micca prublemi critichi durante u periodu di valutazione, sta stessa rete hè trasfurmata in u principale.

Pudete vede infurmazione nantu à u node da l'esternu: u numeru di canzoni, spaziu liberu, etc., usendu un ligame cum'è http://node-address/status o http://node-address/status?pretty

I mo cuntatti:

Source: www.habr.com

Add a comment