Museria - dezentraliséiert Musek Stockage

Museria - dezentraliséiert Musek Stockage

Enges Daags hunn ech décidéiert eng Applikatioun ze schreiwen fir Musek fir mech selwer ze wielen an doheem ze lauschteren / op der Strooss / Workouts, etc. A fir datt dat alles an engem Flux funktionnéiert, mat minimaler Participatioun vu mir. Ech sinn mat enger Architektur komm, hunn e Prototyp skizzéiert a schlussendlech op ee "klenge Problem" gerannt.

An et ass net kloer wou d'Lidddateien selwer kréien. Zu dëser Zäit huet VKontakte den API scho zougemaach, op grousse Museksportale war och alles gedämpft, souguer Lidder goufen a Stécker erausginn fir net ze parséieren. Alles wat bliwwen ass, waren e puer individuell Fly-by-Night Sites mat enger Tonn Reklammen an all Zorte vu Gerempels, all Zorte vun zweifelhafte Grabber Programmer an aner "dreckeg" Optiounen. Am Allgemengen, net eng eenzeg wierklech gutt Léisung. Dir kënnt natierlech en Abonnement op e puer Yandex Musek oder dergläiche kafen. Awer nach eng Kéier, et gëtt keng oppen ëffentlech API iwwerall an Dir hutt keen Zougang zu Musek programmatesch. Verschidde grouss Firmen hunn am Wesentlechen aneren den Zougang zu Musek beschränkt. Firwat ass dat iwwerhaapt geschitt? Méi déif gegruewen, gouf kloer datt den Haaptproblem d'Urheberrechter war. Déi aktuell Léisung a Form vun Abonnementer passt vill kommerziell Museksautoren an déiselwecht Firmen. Zur selwechter Zäit fällt och net-kommerziell an semi-kommerziell Musek an d'allgemeng Lëscht. Dir bezuelt entweder fir alles oder lauschtert guer näischt.

An ech hunn ugefaang ze denken wat ech mat all deem maachen. Wéi kënne mir déi gratis Verdeelung vun der Musek organiséieren? Wat géif ech maachen, wann ech selwer Musek géif kreéieren a Sue doraus maache wëll? Géif ech et gär wann meng Lidder piratéiert wieren? Wéi eng alternativ Léisung gëtt et iwwerhaapt?

Als Resultat sinn et zwee Haaptprobleemer déi geléist musse ginn:

  • Organisatioun vun gratis Verdeelung vun Musek benotzt Methoden praktesch fir déi meescht Leit, dorënner Software.
  • Bitt Alternativen fir Musekscreateuren fir Suen ze maachen

Global dezentraliséierter Musekspäicherung

Am Ufank hunn ech probéiert bestehend Léisungen ze fannen an alles baséiert op dëser ze kreéieren. No enger Zäit vun der Sich, war déi éischt déi ech gär hunn ipfs. Ech hunn ugefaang meng Iddi ëmzesetzen, awer no enger Zäit hunn ech e puer kritesch Probleemer an dëser Léisung entdeckt:

  • Ipfs - Späichere fir alles a jiddereen. Et gi Biller a Musek a Videoen an alles wat Dir wëllt. Am Allgemengen, esou eng grouss planetaresch "Dreckskëscht". Dofir, wann Dir Ären Node lancéiert, kritt Dir direkt eng grouss Laascht. Den Auto dréit just vu Péng.
  • Eng Aart vun ongeschlossene "Müll" Sammelmechanismus. Ech weess net wéi et elo ass, awer deemools, wann Dir an der Configuratioun geschriwwen hutt datt Dir d'Späichere op zéng Gigabyte vun Daten limitéiere wëllt, dann huet et näischt heeschen. D'Lagerung ass gewuess, ignoréiert vill Konfiguratiounsparameter. Als Resultat war et néideg eng rieseg Reserve vun der Festplack ze hunn bis ipfs erausfonnt hunn wéi d'onnéideg zréckgesat gëtt.
  • Zu der Zäit vun der Benotzung vun der Bibliothéik (ech weess net wéi et elo ass), huet de Client keng Timeouts implementéiert. Dir schéckt eng Ufro fir e Fichier ze kréien, a wann et net existéiert, da hänkt Dir just. Natierlech sinn d'Leit mat all méigleche Léisunge komm, déi de Problem deelweis geléist hunn, awer dëst waren Krutchen. Dës Saache sollen aus der Këscht kommen.

Et waren nach vill kleng Problemer, an den Androck war kloer: Dëst kann net fir de Projet genotzt ginn. Ech hunn weider no enger Späichere gesicht, verschidden Optiounen entdecken, awer ni eppes passend fonnt.

Um Enn hunn ech decidéiert datt et derwäert wier ze probéieren eng dezentraliséierter Späichere selwer ze schreiwen. Och wann et sech net als interplanetaresch mécht, wäert et e spezifesche Problem léisen.

An esou huet et sech erausgestallt verbreedbar, Stockage, Metastakel, museria, museria-global.

verbreedbar - dëst ass d'Haapt, déi ënnescht Schicht déi Iech erlaabt Wirbelen an e Netzwierk ze kombinéieren. Et enthält en Algorithmus, deen ech bis elo deelweis baséiert op ongeféier 10000 Serveren implementéiert hunn. Déi voll Versioun vum Algorithmus ass vill méi schwéier ze implementéieren a géif e puer zousätzlech Méint erfuerderen (vläicht méi).

Ech wäert net verbreet am Detail an dësem Artikel beschreiwen; et ass besser enges Daags eng separat ze schreiwen. Hei wäert ech just e puer Features notéieren:

  • Wierker iwwer http/https.
  • Dir kënnt e separat Netzwierk fir eng spezifesch Aufgab erstellen, wat d'Laascht op all eenzelne Projet wesentlech reduzéiert wéi wa se all am selwechte Netz wieren.
  • E Mechanismus mat Timeouts an aner kleng Saachen war am Ufank geduecht. An dëst funktionnéiert fir all Methoden souwuel am Client wéi och am Node. Dir kënnt flexibel Astellunge vun Ärer Applikatioun verwalten.
  • D'Bibliothéik ass an nodejs geschriwwen. D'Leeschtungsprobleemer vum Stack ginn duerch seng dezentraliséierter Natur kompenséiert. D'Laascht kann "verbreet" ginn andeems d'Zuel vun de Wirbelen eropgeet. Am Retour ginn et vill Virdeeler: eng rieseg Gemeinschaft, Einfachheet an einfach ze benotzen, en isomorphesche Client, keng extern Ofhängegkeeten, etc.

Stockage ass eng Layer ierflecher aus spreadable déi Iech erlaabt Dateien am Netz ze späicheren. All Datei huet säin eegene Hash vu sengem Inhalt, dee benotzt ka ginn fir se spéider zréckzekommen. Dateien ginn net a Blocken opgedeelt, awer ganz gespäichert.

Metastakel - eng Layer ierflecher aus spreadable, déi erlaabt Iech Daten am Netz ze späicheren, awer net Dateien. D'Interface ass ähnlech wéi eng Nosql Datebank. Dir kënnt zum Beispill eng Datei op Storacle addéieren, säin Hash kréien an et op Metastocle schreiwen mat engem Link op eppes.

museria - ierflecher aus Storacle a Metastocle. Dës Schicht ass direkt verantwortlech fir d'Musek ze späicheren. D'Späichere funktionnéiert nëmme mat mp3 Dateien an ID3 Tags.

Als "Schlëssel" zum Lidd gëtt säi ganzen Numm an der Form benotzt Kënschtler (TPE1) - Titel (TIT2). Zum Beispill:

  • Brimstone - D'Belaaschtung
  • Hi-rez - Lost My Way (feat. Emilio Rojas, Dani Devinci)

Dir kënnt esou vill wéi méiglech am Detail erausfannen, wéi d'Liddtitele geformt sinn. hei. Dir musst d'Funktioun kucken utils.beautifySongTitle().

De Prozentsaz vun de Matcher definéiert an den Node Astellunge gëtt als Match ugesinn. Zum Beispill heescht e Wäert vun 0.85 datt wann d'Schlësselvergleichsfunktioun (Liddnimm) eng Ähnlechkeet vu méi wéi 85% fonnt huet, dann ass et datselwecht Lidd.

Den Algorithmus fir Ähnlechkeet ze bestëmmen ass do, an der Funktioun utils.getSongSimilarity().

Cover zum Lidd, fir spéider Empfang, kann och iwwer Tags befestegt ginn (APIC). Utilities hunn all déi néideg Methoden fir Tags z'empfänken an ze veraarbechten.

E Beispill fir mat der Lagerung duerch e Client ze schaffen ka fonnt ginn an readme.

All déi uewe genannte Schichten si selbstänneg a kënnen separat als ënnescht Schichten fir aner Projeten benotzt ginn. Zum Beispill gëtt et schonn eng Iddi fir eng Schicht ze maachen fir Bicher ze späicheren.

museria-global ass e scho konfiguréierte Git Repository fir Ären eegene Node am weltwäite Museksnetz ze lancéieren. Klonen npm ech && npm ufänken an dat ass am Fong. Dir kënnt et méi detailléiert konfiguréieren, et am Docker lafen, etc. Detailléiert Informatioun ass verfügbar op github.

Wann de Repository aktualiséiert gëtt, musst Dir Ären Node aktualiséieren. Wann déi grouss oder kleng Versiounsnummer ännert, ass dës Aktioun obligatoresch, soss ginn déi al Wirbelen vum Netz ignoréiert.

Dir kënnt mat Lidder manuell a programmatesch schaffen. All Node leeft e Server fir verschidden Aufgaben. Inklusiv, wann Dir de Standard Endpunkt besicht, kritt Dir en Interface fir mat Musek ze schaffen. Zum Beispill, kënnt Dir op root Node (de Link kann spéider net relevant sinn, Inputnoden kënnen och kritt ginn telegram, oder kuckt no Updates op Github).

Op dës Manéier kënnt Dir Lidder op d'Späichere sichen an eroplueden. Lidder eropluede kënnen an zwee Modi stattfannen: normal a moderéiert. Déi zweet Modus heescht datt d'Aarbecht vun enger Persoun duerchgefouert gëtt, net e Programm. A wann Dir dës Këscht kontrolléiert wann Dir bäidréit, musst Dir de Captcha léisen. Lidder kënne mat Prioritéite bäigefüügt ginn -1, 0 oder 1. Prioritéit 1 kann nëmmen am moderéierte Modus gesat ginn. Prioritéite sinn néideg fir datt d'Späichere méi effektiv entscheeden wat ze maachen wann Dir probéiert e bestehend Lidd mat engem neien ze ersetzen. Wat méi héich d'Prioritéit ass, dest méi wahrscheinlech sidd Dir eng existent Datei ze iwwerschreiwen. Dëst hëlleft géint Spam a erhéicht d'Qualitéit vun erofgeluede Lidder.

Wann Dir ufänkt Lidder op Är Späichere ze addéieren, probéiert d'Biller (Cover) ze befestigen, obwuel dëst Feld net erfuerderlech ass. An 99% vun de Fäll sinn déi éischt Biller op Google op Basis vu Songtitelen Albumcovers.

Wéi technesch Dateie bäigefüügt geschitt, an enger Nossschuel:

  • De Client kritt d'Adress vun engem gratis Node, deen e Koordinator fir eng Zäit gëtt.
  • D'Funktioun fir e Song ze addéieren gëtt ausgeléist (vun enger Persoun oder Code), an eng Ufro gëtt gemaach fir e Koordinator un den Endpunkt ze addéieren.
  • De Koordinator berechent wéivill Duplikate solle gespäichert ginn (konfiguréierbar Parameter).
  • Déi gëeegent Node fir ze spueren ginn gesicht.
  • De Fichier geet direkt op dës Wirbelen.

Wéi technesch d'Dateien opgeholl ginn:

  • De Client kritt d'Adress vun engem gratis Node, deen e Koordinator fir eng Zäit gëtt.
  • D'Funktioun fir e Lidd ze kréien (vun enger Persoun oder e Code) gëtt ausgeléist, an eng Demande gëtt gemaach fir et um Ennpunkt vum Koordinator ze kréien.
  • De Koordinator kontrolléiert d'Präsenz vum Link am Cache. Wann et een ass an et funktionnéiert, gëtt se direkt un de Client zréckginn, soss ginn d'Node fir Disponibilitéit gepréift.
  • De Fichier gëtt vum Link kritt, wann een fonnt gëtt.

Alternativen fir Musek Creatoren

Ech war ëmmer interesséiert fir d'Fro, wéi kann een de Wäert vu ville kreative Wierker objektiv bewäerten? Firwat, zum Beispill, bitt eng Persoun säi Museksalbum fir $10 un? Entweder fir $20 oder $100. Wou ass den Algorithmus? Wa mir zum Beispill iwwer e kierperlecht Produkt schwätzen, oder souguer vill Zorte vu Servicer, da kënne mir op d'mannst d'Käschte berechnen an dovun ausgoen.

Okay, loosst eis soen datt mir $ 10 wetten. Ass dëst ganz effektiv? Loosst eis soen, ech hunn iergendwou en Album oder e Lidd vun do gelauschtert an hunn decidéiert meng Dankbarkeet ze weisen. Awer no menge Gefiller a meng eegen Fäegkeeten, $ 3 ass meng Plafong. Also wat solle mir maachen? Wahrscheinlech wäert ech just näischt maachen, wéi déi meescht Leit.

Andeems Dir eng Aart vu fixe Präis fir kreativ Aarbecht setzt, limitéiert Dir Iech einfach, a verhënnert datt eng méi grouss Zuel vu Leit Iech manner Sue schécken, wat am Ganzen méi beandrockend ka sinn wéi déi, déi zum Präis kafen, deen Dir festgeluecht hutt. Et schéngt mir, datt d'Kreativitéit genee de Beräich ass, wou d'Spende fir d'éischt regéieren. Fir dëst ze maachen braucht Dir:

  • Léiert d'Leit op dës Manéier Merci ze soen. D'Creatoren selwer musse kloer weisen datt se Spende gäre kréien, iwwerall Links op verschidde Bezuelmethoden addéieren, asw.
  • Méi Mechanismen si gebraucht fir dës Prozesser ze vereinfachen an ze stäerken. Zum Beispill, erstellt eng Aart vu globaler Websäit wou Dir fir Kreativitéit spende kënnt andeems Dir Copyright Linken benotzt.

    Loosst eis soen datt de Link sou eppes ass:

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

    Wa mir et op Museker schmuel, dann:

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

    De Kënschtler muss säi Spëtznumm verifizéieren an et uschléissen.

    Mir addéieren eng Funktioun fir sou e Link op de museria Client ze generéieren, an all Projeten, déi de Repository benotzen, kënne Spendeknäppercher mat dëse Linken nieft de Lidder op hire Websäiten / Applikatiounen setzen. D'Benotzer hunn d'Méiglechkeet en Don ganz séier an einfach ze maachen. Natierlech kann dës Approche an all Projet a Kategorie vu Kreativitéit benotzt ginn, net nëmmen duerch Lagerung.

Firwat genee braucht Dir eng Musek Stockage Ariichtung, a wéi kënnt Dir matmaachen?

  • Wann Dir un engem Projet am Zesummenhang mat Musek schafft, oder plangt een ze kreéieren, dann ass dat fir wat alles geduecht war. Dir kënnt Museria benotze fir Lidder ze späicheren an z'erhalen, wat de Flux vu Lidder online erhéicht. Wann Dir gläichzäiteg d'Fäegkeet hutt op d'mannst ee Node vun Iech selwer z'erhéijen an ze halen, da wäert dëst de beschte Bäitrag zu der Entwécklung vum Netz sinn.
  • Vläicht sidd Dir prett eng aner Roll ze iwwerhuelen: Hëllef mam Code, oder fëllt d'Datebank aus a moderéiert, verdeelt Informatiounen iwwer de Projet un Är Frënn, asw.
  • Vläicht hutt Dir d'Iddi gär a sidd prett fir finanziell ze hëllefen, sou datt alles lieft an entwéckelt. Wat méi Noden, wat méi Lidder.
  • Oder Dir musst just iergendwann e Lidd fannen an eroflueden. Dir kënnt dat ganz einfach maachen, zum Beispill, duerch telegram bot.

De Projet ass elo ganz am Ufank. En Testnetz gouf gestart, Node kënnen dacks nei starten, Updates erfuerderen, asw. Wann et keng kritesch Probleemer während der Evaluatiounsperiod gëtt, gëtt datselwecht Netzwierk an den Haapt transforméiert.

Dir kënnt Informatioun iwwer den Node vu baussen gesinn: d'Zuel vun de Lidder, fräi Plaz, etc., mat engem Link wéi http://node-address/status oder http://node-address/status?pretty

Meng Kontakter:

Source: will.com

Setzt e Commentaire