Museria é um armazenamento de música descentralizado baseado em spreadable, storacle e metatóculo.
Há um artigo aqui com uma explicação.
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 ) ;
}
Você também pode usar o cliente em um navegador. Veja a descrição da biblioteca espalhada. Na janela, você tem janela.clientMuseria em vez de window.clientsPreadable . O nome do arquivo preparado é museria.client.js .
Veja a descrição da biblioteca espalhada. Você só precisa mudar em todos os lugares espalhados para Museria .
O mecanismo da biblioteca é muito semelhante ao Storacle. A única diferença é que a chave do arquivo é o nome da música, não o hash. Além disso, uma música única é considerada não com o título completo, mas a porcentagem de coincidência definida nas opções.
Atualmente, apenas o formato MP3 é suportado. As tags são ID3, com base no nó-ID3. As tags TPE1 e Tit2 são necessárias para armazenar a música. Você pode usar o Setter Fulltitle como TPE1 - TIT2 quando você define as tags usando utils . Deve ser uma combinação válida para a função utils.ISSongTitle () . Além disso, a rede pode ter seus próprios requisitos de tamanho de capa. O número de músicas que podem ser adicionadas a um nó também é configurável.
Observe os requisitos do Storacle e os requisitos do metatóculo.
Ao adicionar uma música, você pode indicar se a moderar ou não. A opção controlada é responsável por isso. Por padrão, é falso . O modo de moderação implica que você cuida da conformidade e qualidade da música. O arquivo da música correspondente localizado no armazenamento será substituído por um novo sem cheques. Adicionar músicas neste modo requer confirmação do Captcha.
await client . addSong ( file , { controlled : true } ) ;
Você também pode especificar a prioridade do seu arquivo como -1 , 0 ou 1 . Por padrão, é 0 . Se a prioridade da nova música for maior que a existente, ela substituirá isso sem verificações. Se forem iguais, o próprio armazenamento decidirá qual escolher. Se menos, a música no repositório permanecerá a mesma. Somente as tags, a capa e outras informações adicionais podem ser atualizadas neste caso. A prioridade 1 só pode ser usada no modo de moderação.
await client . addSong ( file , { priority : - 1 } ) ;
await client . addSong ( file , { priority : 1 , controlled : true } ) ;
Por exemplo, podemos coletar toda a música no planeta juntos em um só lugar, mas de maneira descentralizada com a capacidade de acessá -la a qualquer momento.
Você pode usá -lo para armazenar música como quiser.
Como a biblioteca está escrita em JavaScript, você pode receber / enviar / trabalhar com músicas no navegador e não usar o código do servidor. Em alguns casos, pode ser muito conveniente.
Ao criar uma instância do nó, você pode passar as opções abaixo. Somente opções específicas desta biblioteca são descritas aqui, sem considerar as opções das classes pais.
{Object} [Music] - Seção que responde para configurações musicais.
{número} [music.similaridade = 0,91] - Número de 0 a 1 indicando como os títulos de músicas semelhantes devem ser, para considerá -los iguais.
{número | string} [music.audioheadersmaxsize = "180kb"] - tamanho máximo dos cabeçalhos de áudio.
{número | string} [music.coverheadersmaxsize = "5kb"] - tamanho máximo da capa.
{número} [music.findingsTringMinLength = 4] - Símbolos mínimos para encontrar músicas.
{número} [music.findinglimit = 200] - músicas encontrando o tamanho máximo da lista de resultados.
{número | string} [music.relevanceTime = "14d"] - Quanto tempo uma música existente tem precedência sobre recém -adicionada.
{boolean} [music.preparetitle = true] - Prepare o título antes de adição ou não. A preparação significa levar o título a uma visão geral.
{boolean} [music.PreparEcover = true] - Prepare a capa antes de adição ou não. A preparação significa trazer o tamanho e a qualidade da imagem para os valores certos.
{Integer} [music.coverquity = 80] - A qualidade da capa preparada de 0 a 100. Funciona apenas quando a música.PreparEcover é verdadeira.
{Integer} [music.coverminsize = 200] - Tamanho mínimo da capa em px. Funciona apenas quando a música.PreparEcover é verdadeira.
{Integer} [music.covermaxSize = 500] - Tamanho máximo da capa em px. Funciona apenas quando a música.PreparEcover é verdadeira.
{número | string} [music.covermaxfilesize = "110kb"] - Tamanho máximo do arquivo de capa. Funciona apenas quando a música.PreparEcover é verdadeira.
{Number | String} [Task.CleanUpMusicInterval = "1M"] - Intervalo de tarefa de limpeza de música.
async client.prototype.addsong () - Adicione o arquivo à rede.
async client.prototype.getSong () - Obtenha a música principal.
async client.prototype.getsonginfo () - Obtenha a música Informações completas.
async client.prototype.findsongs () - Encontre músicas pela partida.
async client.prototype.findtartistsongs () - Encontre músicas pelo nome do artista.
async client.prototype.getSonGaudiolink () - Obtenha o link do arquivo de áudio da música.
async client.prototype.getSongCoverLink () - Obtenha o link do arquivo de capa da música.
async client.prototype.getSonGaudioTobuffer () - Baixe o arquivo de áudio da música e retorne o buffer.
async client.prototype.getSongCoverTobuffer () - Baixe o arquivo de capa da música e retorne o buffer.
async client.prototype.getSonGaudioTopath () - Faça o download do arquivo de áudio da música e escreva no caminho especificado.
async client.prototype.getsongcovertopath () - faça o download do arquivo de capa da música e escreva -o no caminho especificado.
async client.prototype.getSonGaudioToblob () - Baixe o arquivo de áudio da música e retorne o blob. Somente para o cliente do navegador.
async client.prototype.getSongCoverToBlob () - Faça o download do arquivo de capa da música e retorne o blob. Somente para o cliente do navegador.
async client.prototype.removeSpong () - Remova a música.
Client.prototype.createrEquestonGonGaudiolink () - Retrate um link de arquivo de áudio solicitado. Isso é conveniente se você precisar obter o link sem fazer operações assíncronas no momento.
Client.prototype.createrequestongongoverlink () - Retrate um link de arquivo de capa solicitado. Isso é conveniente se você precisar obter o link sem fazer operações assíncronas no momento.
Se necessário, você tem a oportunidade de exportar músicas de um servidor para outro. Existem duas opções:
Copie todos os arquivos de projeto para o segundo servidor. É conveniente e funciona no momento atual, porque o nó é capaz de reconfigurar todas as informações para um novo endereço. Mas não há garantia de que isso funcione no futuro.
Use o recurso de exportação da música: Run node.exportSongs()
Método ou através da linha de comando como museria -a exportSongs -n 2.2.2.2:2079
. Aqui, você deve adicionar o primeiro servidor à lista de confiança do segundo para transferir todas as músicas, incluindo aquelas com prioridade 1. Sem isso, o nó exigirá uma solução Captcha e o arquivo não será adicionado. Use a Option Network.Trustlist da biblioteca espalhada.
Se você enfrentar um bug ou tiver uma idéia de como melhorar a biblioteca, crie um problema no GitHub. Para corrigir algo ou adicionar novo código, bifurcar a biblioteca, faça alterações e crie uma solicitação de tração para a filial mestre. Não se esqueça dos testes neste caso. Além disso, você pode ingressar no projeto no Github.