Museria - panyimpenan musik desentralisasi

Museria - panyimpenan musik desentralisasi

Sawijining dina aku mutusake kanggo nulis aplikasi kanggo milih musik kanggo aku lan ngrungokake ing omah / ing dalan / latian, lsp. Lan supaya kabeh iki bisa mlaku kanthi lancar, kanthi partisipasi minimal saka aku. Aku nggawe arsitektur, nggawe sketsa prototipe, lan pungkasane nemoni "masalah cilik."

Lan iku ora cetha ngendi kanggo njaluk file song dhewe. Ing wektu iki, VKontakte wis nutup api, ing portal musik gedhe, kabeh uga bisu, malah lagu-lagu diwutahake supaya ora diurai. Kabeh sing isih ana sawetara situs fly-by-night individu kanthi ton iklan lan kabeh jinis sampah, macem-macem program grabber sing diragukan lan opsi "reged" liyane. Umumé, ora ana solusi sing apik banget. Sampeyan bisa, mesthi, tuku langganan sawetara musik Yandex utawa liya-liyane. Nanging maneh, ora ana API umum sing mbukak ing endi wae lan sampeyan ora duwe akses menyang musik kanthi program. Sawetara perusahaan gedhe wis mbatesi akses wong liya menyang musik. Yagene iki kedadeyan kabeh? Nggali luwih jero, dadi jelas yen masalah utama yaiku hak cipta. Solusi saiki ing bentuk langganan cocog karo akeh penulis musik komersial lan perusahaan sing padha. Ing wektu sing padha, musik non-komersial lan semi-komersial uga kalebu ing daftar umum. Sampeyan salah siji mbayar kanggo kabeh utawa ngrungokake apa-apa ing kabeh.

Lan aku wiwit mikir apa sing kudu dilakoni karo kabeh iki. Kepiye carane bisa ngatur distribusi musik gratis? Apa sing bakal daklakoni yen aku nggawe musik dhewe lan pengin golek dhuwit? Apa aku seneng yen lagu-laguku dibajak? Apa solusi alternatif sing ana?

Akibaté, ana rong masalah utama sing kudu ditanggulangi:

  • Organisasi distribusi musik gratis nggunakake cara sing trep kanggo umume wong, kalebu piranti lunak.
  • Nawakake alternatif kanggo pencipta musik kanggo nggawe dhuwit

Panyimpenan musik desentralisasi global

Kaping pisanan, aku nyoba nemokake solusi sing wis ana lan nggawe kabeh adhedhasar iki. Sawise sawetara wektu nggoleki, sing pisanan aku seneng yaiku ipfs. Aku miwiti ngleksanakake ide, nanging sawise sawetara wektu aku nemokake sawetara masalah kritis ing solusi iki:

  • Ipfs - panyimpenan kanggo kabeh lan kabeh wong. Ana gambar lan musik lan video lan kabeh sing dikarepake. Umumé, "tong sampah" planet kaya ngono. Mulane, nalika sampeyan miwiti simpul, sampeyan langsung nampa beban gedhe. Mobil mung nggegirisi.
  • Sawetara mekanisme pengumpulan "sampah" sing durung rampung. Aku ora ngerti carane saiki, nanging ing wayahe, yen sampeyan nulis ing config sing pengin mbatesi panyimpenan kanggo sepuluh gigabyte data, banjur iku ora ateges apa-apa. Panyimpenan saya tambah akeh, ora nggatekake akeh paramèter konfigurasi. Akibaté, kudu duwe cadangan hard disk nganti ipfs ngerti carane ngreset sing ora perlu.
  • Ing wektu nggunakake perpustakaan (Aku ora ngerti carane iku saiki), klien ora duwe wektu entek dipun ginakaken. Sampeyan ngirim panjalukan kanggo nampa file, lan yen ora ana, sampeyan mung nyumerepi. Mesthine, wong-wong teka kanthi macem-macem solusi sing bisa ngrampungake masalah kasebut, nanging iki minangka crutches. Iki kudu metu saka kothak.

Isih akeh masalah cilik, lan kesan kasebut jelas: iki ora bisa digunakake kanggo proyek kasebut. Aku terus nggoleki fasilitas panyimpenan, njelajah macem-macem opsi, nanging ora nemu sing cocok.

Pungkasane, aku mutusake manawa kudu nyoba nulis panyimpenan desentralisasi dhewe. Sanajan ora nyamar dadi antarplanet, bakal ngrampungake masalah tartamtu.

Lan ternyata nyebar, panyimpenan, metastokel, museria, museria-global.

nyebar - iki utama, lapisan paling sing ngijini sampeyan kanggo gabungke simpul menyang jaringan. Isine algoritma, sing saiki wis ditindakake sebagian adhedhasar udakara 10000 server. Versi lengkap algoritma luwih angel dileksanakake lan mbutuhake sawetara wulan tambahan (bisa uga luwih akeh).

Aku ora bakal njlèntrèhaké sing bisa disebarake kanthi rinci ing artikel iki; luwih becik nulis sing kapisah ing sawijining dina. Ing kene aku mung bakal nyathet sawetara fitur:

  • Dianggo liwat http/https.
  • Sampeyan bisa nggawe jaringan sing kapisah kanggo tugas tartamtu, sing bakal nyuda beban saben proyek tinimbang yen kabeh ana ing jaringan sing padha.
  • Mekanisme karo wektu entek lan prekara cilik liyane wiwitane dipikirake. Lan iki bisa digunakake kanggo kabeh cara ing klien lan ing simpul. Sampeyan bisa ngatur setelan kanthi fleksibel saka aplikasi sampeyan.
  • Pustaka ditulis ing nodejs. Masalah kinerja tumpukan diimbangi kanthi sifat desentralisasi. Beban bisa "nyebar" kanthi nambah jumlah simpul. Ing bali, ana akeh kaluwihan: komunitas ageng, gamblang lan ease saka nggunakake, klien isomorphic, ora gumantung external, etc.

panyimpenan minangka lapisan sing diwarisake saka spreadable sing ngidini sampeyan nyimpen file ing jaringan. Saben file nduweni hash dhewe-dhewe saka isine, sing bisa digunakake kanggo njupuk maneh mengko. File ora dipérang dadi blok, nanging disimpen kabeh.

metastokel - lapisan sing diwarisake saka nyebar, sing ngidini sampeyan nyimpen data ing jaringan, nanging ora file. Antarmuka padha karo database Nosql. Sampeyan bisa, contone, nambah file menyang storacle, njaluk hash lan nulis menyang metastocle karo link kanggo soko.

museria - diwarisake saka storacle lan metastocle. Lapisan iki tanggung jawab langsung kanggo nyimpen musik. Panyimpenan mung bisa digunakake karo file mp3 lan tag id3.

Minangka "kunci" kanggo lagu, jeneng lengkap digunakake ing wangun Artis (TPE1) - Judul (TIT2). Contone:

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

Sampeyan bisa ngerteni kanthi rinci babagan carane nggawe judhul lagu. kene. Sampeyan kudu katon ing fungsi utils.beautifySongTitle().

Persentase pertandhingan sing ditetepake ing setelan simpul dianggep minangka pertandhingan. Contone, nilai 0.85 tegese yen fungsi bandhing kunci (jeneng lagu) nemokake podho luwih saka 85%, mula lagu kasebut padha.

Algoritma kanggo nemtokake podho ana, ing fungsi kasebut utils.getSongSimilarity().

Cover lagu, kanggo kuitansi mengko, uga bisa dilampirake liwat tag (APIC). Utilitas duwe kabeh cara sing dibutuhake kanggo nampa lan ngolah tag.

Conto nggarap panyimpenan liwat klien bisa ditemokake ing README.

Kabeh lapisan ing ndhuwur wis mandhiri lan bisa digunakake kanthi kapisah minangka lapisan ngisor kanggo proyek liyane. Contone, wis ana gagasan kanggo nggawe lapisan kanggo nyimpen buku.

museria-global minangka repositori git sing wis dikonfigurasi kanggo ngluncurake simpul sampeyan dhewe ing jaringan musik global. Kloning npm aku && npm miwiti lan sing Sejatine iku. Sampeyan bisa ngatur kanthi luwih rinci, mbukak ing Docker, lsp. Informasi rinci kasedhiya ing github.

Nalika repositori dianyari, sampeyan kudu nganyari simpul. Yen nomer versi utama utawa cilik diganti, tumindak iki wajib, yen ora, simpul lawas bakal diabaikan dening jaringan.

Sampeyan bisa nggarap lagu kanthi manual lan kanthi program. Saben simpul mbukak server kanggo tugas sing beda-beda. Kalebu, nalika sampeyan ngunjungi titik pungkasan standar, sampeyan bakal nampa antarmuka kanggo nggarap musik. Contone, sampeyan bisa pindhah menyang simpul akar (link bisa uga ora relevan mengko, simpul input uga bisa dipikolehi ing telegram, utawa goleki nganyari ing Github).

Kanthi cara iki sampeyan bisa nelusuri lan ngunggah lagu menyang panyimpenan. Ngunggah lagu bisa ditindakake ing rong mode: normal lan moderat. Mode kapindho tegese karya ditindakake dening wong, dudu program. Lan yen sampeyan mriksa kothak iki nalika nambah, sampeyan kudu ngatasi captcha. Lagu bisa ditambahake kanthi prioritas -1, 0 utawa 1. Prioritas 1 mung bisa disetel ing mode moderat. Prioritas dibutuhake supaya panyimpenan bisa luwih efektif mutusake apa sing kudu ditindakake nalika sampeyan nyoba ngganti lagu sing ana karo sing anyar. Sing luwih dhuwur prioritas, luwih akeh sampeyan bakal nimpa file sing wis ana. Iki mbantu nglawan spam lan nambah kualitas lagu sing diundhuh.

Yen sampeyan miwiti nambah lagu menyang panyimpenan, coba masang gambar (cover), sanajan kolom iki ora dibutuhake. Ing 99% kasus, gambar pisanan ing Google adhedhasar judhul lagu yaiku sampul album.

Cara teknis nambah file, kanthi ringkes:

  • Klien nampa alamat simpul gratis, sing bakal dadi koordinator kanggo sawetara wektu.
  • Fungsi nambah lagu dipicu (dening wong utawa kode), lan panjalukan digawe kanggo nambah koordinator menyang endpoint.
  • Koordinator ngitung jumlah duplikat sing kudu disimpen (parameter sing bisa dikonfigurasi).
  • Node sing paling cocok kanggo nyimpen ditelusuri.
  • File kasebut langsung menyang simpul kasebut.

Carane teknis file ditampa:

  • Klien nampa alamat simpul gratis, sing bakal dadi koordinator kanggo sawetara wektu.
  • Fungsi nampa lagu (dening wong utawa kode) micu, lan request digawe kanggo nampa ing titik pungkasan koordinator.
  • Koordinator mriksa anané link ing cache. Yen ana siji lan bisa digunakake, langsung bali menyang klien, yen ora, simpul dijajaki kanggo kasedhiyan.
  • Berkas kasebut ditampa saka tautan, yen ditemokake.

Alternatif kanggo Music Creators

Aku tansah kasengsem ing pitakonan saka carane bisa obyektif ngira-ngira nilai saka akeh karya kreatif? Apa sebabe, contone, wong nawakake album musik kanthi rega $10? Salah siji kanggo $20 utawa $100. Ing endi algoritma? Nalika, umpamane, kita ngomong babagan sawetara produk fisik, utawa malah akeh jinis layanan, mula paling ora bisa ngetung biaya lan nerusake saka iku.

Oke, ayo ngomong kita nang $10. Apa iki efektif banget? Ayo dadi ngomong aku ngrungokake album nang endi wae utawa lagu saka kono lan mutusaké kanggo nuduhake matur nuwun. Nanging miturut raos lan kabisanku dhewe, $3 minangka langit-langitku. Dadi apa sing kudu kita lakoni? Paling kamungkinan, aku ora bakal nindakake apa-apa, kaya umume wong.

Kanthi nyetel sawetara rega tetep kanggo karya kreatif, sampeyan mung mbatesi dhewe, nyegah luwih akeh wong ngirim dhuwit kurang, sing total bisa luwih nyengsemake tinimbang sing bakal tuku kanthi rega sing sampeyan aturake. Iku misale jek kula sing kreatifitas persis wilayah ngendi sumbangan kudu aturan pisanan. Kanggo nindakake iki sampeyan kudu:

  • Ajar wong ngucap syukur kanthi cara iki. Pencipta dhewe kudu nuduhake kanthi jelas manawa dheweke pengin nampa sumbangan, nambah tautan menyang macem-macem cara pembayaran ing endi wae, lsp.
  • Mekanisme liyane dibutuhake kanggo nyederhanakake lan nguatake proses kasebut. Contone, nggawe sawetara jinis situs web global ing ngendi sampeyan bisa nyumbang kanggo kreatifitas nggunakake pranala hak cipta.

    Ayo kita ngomong link kaya iki:

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

    Yen kita mbatesi dadi musisi, banjur:

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

    Pemain kudu verifikasi jeneng julukan lan dilampirake.

    Kita nambahake fungsi kanggo ngasilake link kasebut menyang klien museria, lan kabeh proyek sing nggunakake gudang bisa nyelehake tombol sumbangan kanthi tautan kasebut ing jejere lagu ing situs web / aplikasi. Pangguna duwe kesempatan kanggo nggawe sumbangan kanthi cepet lan gampang. Alamiah, pendekatan iki bisa digunakake ing sembarang proyek lan kategori kreatifitas, ora mung liwat panyimpenan.

Yagene sampeyan butuh fasilitas panyimpenan musik, lan kepiye sampeyan bisa melu?

  • Yen sampeyan nggarap proyek sing gegandhengan karo musik, utawa ngrancang nggawe, mula iki tujuane kabeh. Sampeyan bisa nggunakake museria kanggo nyimpen lan njupuk lagu, nambah aliran lagu online. Yen, ing wektu sing padha, sampeyan duwe kemampuan kanggo ngunggahake lan nyekel paling ora siji simpul dhewe, banjur iki bakal dadi kontribusi paling apik kanggo pangembangan jaringan.
  • Mbok menawa sampeyan wis siyap njupuk sawetara peran liyane: bantuan karo kode, utawa isi metu lan moderat database, disebaraké informasi bab project kanggo kanca-kanca, etc.
  • Mungkin sampeyan seneng karo ide kasebut lan siap mbantu finansial supaya kabeh bisa urip lan berkembang. Luwih akeh simpul, luwih akeh lagu.
  • Utawa sampeyan mung kudu golek lan ngundhuh lagu ing sawetara titik. Sampeyan bisa nindakake iki banget prasaja, contone, liwat bot telegram.

Proyek kasebut saiki ing tahap wiwitan. Jaringan tes wis diluncurake, simpul bisa urip maneh, mbutuhake nganyari, lsp. Yen ora ana masalah kritis sajrone periode evaluasi, jaringan sing padha iki diowahi dadi jaringan utama.

Sampeyan bisa ndeleng informasi babagan simpul saka njaba: jumlah lagu, ruang kosong, lsp, nggunakake link kaya http://node-address/status utawa http://node-address/status?pretty

Kontakku:

Source: www.habr.com

Add a comment