Museria adalah penyimpanan musik terdesentralisasi berdasarkan spreadable, store dan metastocle.
Ada artikel di sini dengan penjelasan.
import { Node } from 'museria' ;
try {
const node = new Node ( {
port : 4000 ,
hostname : 'localhost'
} ) ;
await node . init ( ) ;
}
catch ( err ) {
console . error ( err . stack ) ;
process . exit ( 1 ) ;
}
import { Client } from 'museria' ;
import utils from 'museria/src/utils.js' ;
try {
const client = new Client ( {
address : 'localhost:4000'
} ) ;
await client . init ( ) ;
const title = 'Artist - Title' ;
// Prepare the song tags
await utils . addSongTags ( './audio.mp3' , {
fullTitle : title ,
APIC : './cover.jpg'
} ) ;
// Add the song
await client . addSong ( './audio.mp3' ) ;
// Get the song info
const info = await client . getSong ( title ) ;
// Find songs
const songs = await client . findSongs ( 'arti' , { limit : 5 } ) ;
// Find the artist songs
const artistSongs = await client . findArtistSongs ( 'artist' ) ;
// Get the song audio link
const audioLink = await client . getSongAudioLink ( title ) ;
// Get the song cover link
const coverLink = await client . getSongCoverLink ( title ) ;
// Remove the song
await client . removeSong ( title ) ;
}
catch ( err ) {
console . error ( err . stack ) ;
process . exit ( 1 ) ;
}
Anda juga dapat menggunakan klien di browser. Lihatlah deskripsi perpustakaan yang dapat disebarkan. Di jendela Anda memiliki window.clientMuseria , bukan window.clientsable . Nama file yang disiapkan adalah Museria.client.js .
Lihatlah deskripsi perpustakaan yang dapat disebarkan. Anda hanya perlu mengubah kata -kata yang dapat disebarkan ke mana -mana ke Museria .
Mekanisme perpustakaan sangat mirip dengan Storacle. Satu -satunya perbedaan adalah bahwa kunci file adalah nama lagu, bukan hash. Juga, lagu unik dianggap tidak dengan pertandingan judul lengkap, tetapi persentase kebetulan yang ditetapkan dalam opsi.
Saat ini hanya format MP3 yang didukung. Tag adalah ID3, berdasarkan Node-ID3. Tag TPE1 dan Tit2 diperlukan untuk menyimpan lagu. Anda dapat menggunakan setter fulltitle sebagai tpe1 - tit2 saat Anda mengatur tag menggunakan utils . Itu harus berupa kombinasi yang valid untuk fungsi utils.issongtitle () . Juga, jaringan mungkin memiliki persyaratan ukuran penutup sendiri. Jumlah lagu yang dapat ditambahkan ke satu node juga dapat dikonfigurasi.
Lihatlah persyaratan Storacle dan persyaratan Metastocle.
Dengan menambahkan lagu, Anda dapat menunjukkan apakah Anda memoderasi atau tidak. Opsi yang dikendalikan bertanggung jawab untuk ini. Secara default, itu salah . Mode moderasi menyiratkan bahwa Anda mengurus kesesuaian dan kualitas lagu. File lagu yang sesuai yang terletak di penyimpanan akan diganti dengan yang baru tanpa cek. Menambahkan lagu dalam mode ini membutuhkan konfirmasi captcha.
await client . addSong ( file , { controlled : true } ) ;
Anda juga dapat menentukan prioritas file Anda sebagai -1 , 0 atau 1 . Secara default, itu adalah 0 . Jika prioritas lagu baru lebih tinggi dari yang sudah ada, maka itu akan menggantikannya tanpa cek. Jika mereka sama, maka penyimpanan itu sendiri akan memutuskan mana yang akan dipilih. Jika kurang, maka lagu di repositori akan tetap sama. Hanya tag, sampul, dan informasi tambahan lainnya yang dapat diperbarui dalam kasus ini. Prioritas 1 hanya dapat digunakan dalam mode moderasi.
await client . addSong ( file , { priority : - 1 } ) ;
await client . addSong ( file , { priority : 1 , controlled : true } ) ;
Misalnya, kita dapat mengumpulkan semua musik di planet ini bersama di satu tempat, tetapi dengan cara yang terdesentralisasi dengan kemampuan untuk mengaksesnya kapan saja.
Anda dapat menggunakannya untuk menyimpan musik sesuka Anda.
Karena perpustakaan ditulis dalam JavaScript, Anda dapat menerima / mengirim / bekerja dengan lagu di browser dan tidak menggunakan kode server sama sekali. Dalam beberapa kasus, ini bisa sangat nyaman.
Saat Anda membuat instance dari simpul, Anda dapat melewati opsi di bawah ini. Hanya opsi spesifik dari perpustakaan ini yang dijelaskan di sini, tanpa mempertimbangkan opsi kelas induk.
{Object} [Music] - Bagian yang merespons pengaturan musik.
{number} [Music.similarity = 0,91] - Angka dari 0 hingga 1 menunjukkan bagaimana judul lagu yang serupa harus, untuk mempertimbangkannya sama.
{Number | String} [Music.AudioHeadersMaxSize = "180KB"] - Ukuran header audio maksimum.
{Number | String} [Music.CoverHeadersMaxSize = "5KB"] - Ukuran header penutup maksimum.
{number} [Music.FindingsTringMinLength = 4] - Simbol minimum untuk menemukan lagu.
{Number} [Music.findingLingLimit = 200] - Lagu Menemukan Ukuran Daftar Hasil Maksimal.
{Number | String} [music.relevancetime = "14d"] - Berapa lama lagu yang ada diutamakan daripada yang baru ditambahkan.
{boolean} [music.preparetitle = true] - Siapkan judul sebelum penambahan atau tidak. Persiapan berarti membawa judul ke pandangan umum.
{boolean} [music.preparecover = true] - Siapkan sampul sebelum penambahan atau tidak. Persiapan berarti membawa kualitas dan kualitas gambar ke nilai yang tepat.
{Integer} [Music.Coverquality = 80] - Kualitas sampul yang disiapkan dari 0 hingga 100. Ini hanya berfungsi saat musik.preparecover adalah benar.
{integer} [music.covermInsize = 200] - Ukuran sampul minimum di px. Ini hanya berfungsi saat musik. Preparecover adalah benar.
{integer} [music.covermaxsize = 500] - Ukuran penutup maksimum di px. Ini hanya berfungsi saat musik. Preparecover adalah benar.
{Number | String} [Music.CoverMaxFileSize = "110KB"] - Ukuran file sampul maksimum. Ini hanya berfungsi saat musik. Preparecover adalah benar.
{Number | String} [Task.CleanUpMusicInterVal = "1M"] - Interval Tugas Pembersihan Musik.
async client.prototype.addsong () - Tambahkan file ke jaringan.
async client.prototype.getSong () - Dapatkan lagu utama info.
async client.prototype.getSongInfo () - Dapatkan info lengkap lagu.
async client.prototype.findsongs () - temukan lagu oleh pertandingan.
async client.prototype.findartistsongs () - Temukan lagu dengan nama artis.
async client.prototype.getsongaudilink () - Dapatkan tautan file audio lagu.
async client.prototype.getSongCoverLink () - Dapatkan tautan file sampul lagu.
async client.prototype.getsongaudiotoBuffer () - Unduh file audio lagu dan kembalikan buffer.
async client.prototype.getSongCovertObuffer () - Unduh file sampul lagu dan kembalikan buffer.
async client.prototype.getsongaudiotopath () - Unduh file audio lagu dan tulis ke jalur yang ditentukan.
async client.prototype.getSongCovertOpath () - Unduh file sampul lagu dan tulis ke jalur yang ditentukan.
async client.prototype.getsongaudiotoBlob () - Unduh file audio lagu dan kembalikan gumpalan. Hanya untuk klien browser.
async client.prototype.getSongCoverToBlob () - Unduh file sampul lagu dan kembalikan gumpalan. Hanya untuk klien browser.
async client.prototype.removesong () - Hapus lagunya.
Client.prototype.createRequestedSongAudiK () - с reveate tautan file audio yang diminta. Ini lebih mudah jika Anda perlu mendapatkan tautan tanpa melakukan operasi asinkron saat ini.
Client.prototype.createRequestedSongCoverlink () - с reveate tautan file sampul yang diminta. Ini lebih mudah jika Anda perlu mendapatkan tautan tanpa melakukan operasi asinkron saat ini.
Jika perlu, Anda memiliki kesempatan untuk mengekspor lagu dari satu server ke server lainnya. Ada dua opsi:
Salin semua file proyek ke server kedua. Ini nyaman dan berfungsi pada saat saat ini, karena node dapat mengkonfigurasi ulang semua informasi ke alamat baru. Tetapi tidak ada jaminan bahwa ini akan berhasil di masa depan.
Gunakan fitur Ekspor Lagu: Jalankan metode node.exportSongs()
atau melalui baris perintah sebagai museria -a exportSongs -n 2.2.2.2:2079
. Di sini, Anda harus menambahkan server pertama ke daftar kepercayaan yang kedua untuk mentransfer semua lagu, termasuk yang dengan prioritas 1. Tanpa ini, node akan memerlukan solusi captcha dan file tidak akan ditambahkan. Gunakan Opsi Network.trustlist dari perpustakaan yang dapat disebarkan.
Jika Anda menghadapi bug atau memiliki ide bagaimana meningkatkan perpustakaan, buat masalah di GitHub. Untuk memperbaiki sesuatu atau menambahkan kode baru sendiri, garpu perpustakaan, buat perubahan dan buat permintaan tarik ke cabang master. Jangan lupa tentang tes dalam kasus ini. Anda juga dapat bergabung dengan proyek di GitHub.