Museria는 확산 가능한, Storacle 및 Metastocle을 기반으로하는 분산 된 음악 저장소입니다.
설명과 함께 기사가 있습니다.
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 ) ;
}
브라우저에서 클라이언트를 사용할 수도 있습니다. 확산 가능한 라이브러리에 대한 설명을보십시오. 창에는 Window.ClientMuseria 가 Window.ClientsPreadable 이 있습니다. 준비된 파일 이름은 museria.client.js 입니다.
확산 가능한 라이브러리에 대한 설명을보십시오. 분산 가능한 단어를 Museria 로 바꾸면됩니다.
라이브러리의 메커니즘은 Storacle과 매우 유사합니다. 유일한 차이점은 파일의 키는 해시가 아니라 노래의 이름이라는 것입니다. 또한 독특한 노래는 전체 타이틀 매치가 아니라 옵션에 설정된 우연의 비율로 간주됩니다.
현재 MP3 형식 만 지원됩니다. 태그는 Node-ID3을 기반으로 ID3입니다. 노래를 저장하려면 TPE1 및 TIT2 태그가 필요합니다. Utils를 사용하여 태그를 설정할 때 Setter Fulltitle을 TPE1 -TIT2 로 사용할 수 있습니다. utils.issongtitle () 함수에 대한 유효한 조합이어야합니다. 또한 네트워크에는 자체 커버 크기 요구 사항이있을 수 있습니다. 하나의 노드에 추가 할 수있는 곡의 수도 구성 가능합니다.
Storacle 요구 사항과 전이 요건을 살펴보십시오.
노래를 추가하면 노래를 중재하는지 여부를 표시 할 수 있습니다. 제어 된 옵션은이를 담당합니다. 기본적으로 거짓 입니다. 중재 모드는 노래의 적합성과 품질을 관리한다는 것을 의미합니다. 스토리지에있는 해당 곡의 파일은 수표없이 새 곡으로 대체됩니다. 이 모드에서 노래를 추가하려면 보안 문자 확인이 필요합니다.
await client . addSong ( file , { controlled : true } ) ;
파일의 우선 순위를 -1 , 0 또는 1 으로 지정할 수도 있습니다. 기본적으로 0 입니다. 새 노래의 우선 순위가 기존 노래보다 높으면 확인없이 대체합니다. 그들이 동일하다면 스토리지 자체는 어떤 선택을 선택할 것인지 결정합니다. 적은 경우 저장소의 노래는 동일하게 유지됩니다. 이 경우 태그, 표지 및 기타 추가 정보 만 업데이트 될 수 있습니다. 우선 순위 1은 적당한 모드에서만 사용될 수 있습니다.
await client . addSong ( file , { priority : - 1 } ) ;
await client . addSong ( file , { priority : 1 , controlled : true } ) ;
예를 들어, 우리는 한 곳에서 지구상의 모든 음악을 함께 모을 수 있지만 언제든지 액세스 할 수있는 능력으로 분산 된 방식으로 수집 할 수 있습니다.
원하는대로 음악을 저장하는 데 사용할 수 있습니다.
라이브러리는 JavaScript로 작성되었으므로 브라우저에서 노래로 수신 / 보내기 / 작업을받을 수 있으며 서버 코드를 전혀 사용하지 않습니다. 경우에 따라 매우 편리 할 수 있습니다.
노드 인스턴스를 만들 때 아래 옵션을 전달할 수 있습니다. 부모 클래스의 옵션을 고려하지 않고이 라이브러리의 특정 옵션 만 설명합니다.
{Object} [Music] - 음악 설정에 응답하는 섹션.
{number} [music.similarity = 0.91] - 0에서 1까지의 숫자는 비슷한 노래 제목이 어떻게 동일하게 고려되어야하는지를 나타냅니다.
{number | string} [music.audioheadersmaxsize = "180kb"] - 최대 오디오 헤더 크기.
{번호 | String} [Music.CoverHeadersMaxSize = "5KB"] - 최대 커버 헤더 크기.
{number} [music.FindingStringMinlength = 4] - 노래를 찾는 최소 기호.
{number} [music.FindingLimit = 200] - 최대 결과 목록 크기를 찾는 노래.
{number | string} [music.relevancetime = "14D"] - 기존 노래가 새로 추가 된 것보다 얼마나 오래 걸리나요?
{boolean} [music.preparetitle = true] - 추가하기 전에 제목을 준비하십시오. 준비는 제목을 일반적인 관점으로 가져 오는 것을 의미합니다.
{boolean} [music.preparecover = true] - 추가하기 전에 커버를 준비하십시오. 준비는 크기와 이미지 품질을 올바른 값으로 가져 오는 것을 의미합니다.
{integer} [music.coverquality = 80] - 준비된 커버 품질은 0에서 100까지입니다. music.preparecover가 참일 때만 작동합니다.
{integer} [music.coverminsize = 200] - PX의 최소 표지 크기. music.preparecover가 참일 때만 작동합니다.
{integer} [music.covermaxsize = 500] - px의 최대 커버 크기. music.preparecover가 참일 때만 작동합니다.
{번호 | String} [music.coverMaxFilesize = "110KB"] - 최대 커버 파일 크기. music.preparecover가 참일 때만 작동합니다.
{number | string} [task.cleanupmusicinterval = "1m"] - 음악 정리 작업 간격.
async client.prototype.addsong () - 파일을 네트워크에 추가합니다.
async client.prototype.getSong () - 노래 메인 정보를 가져옵니다.
async client.prototype.getSongInfo () - 노래 전체 정보를 가져옵니다.
async client.prototyp.findsongs () - 경기에서 노래를 찾으십시오.
async client.prototype.findartistsongs () - 아티스트 이름으로 노래를 찾으십시오.
async client.prototype.getSongaudiolink () - 노래 오디오 파일 링크를 가져옵니다.
async client.prototype.getSongCoverLink () - 노래 커버 파일 링크를 가져옵니다.
async client.prototype.getSongaudiotoBuffer () - 노래 오디오 파일을 다운로드하고 버퍼를 반환합니다.
async client.prototype.getSongCoverToBuffer () - 노래 커버 파일을 다운로드하고 버퍼를 반환합니다.
async client.prototype.getSongaudiotoPath () - 노래 오디오 파일을 다운로드하여 지정된 경로에 쓰십시오.
async client.prototype.getSongCovertoPath () - 노래 표지 파일을 다운로드하여 지정된 경로에 쓰십시오.
async client.prototype.getSongaudiotoBlob () - 노래 오디오 파일을 다운로드하고 Blob을 반환합니다. 브라우저 클라이언트 만
async client.prototype.getSongcovertoBlob () - 노래 커버 파일을 다운로드하고 블로브를 반환합니다. 브라우저 클라이언트 만
Async client.prototype.removesong () - 노래를 제거하십시오.
client.prototype.createrequestedSongaudiolink () - сreate 요청 된 오디오 파일 링크. 현재 비동기 작업을 수행하지 않고 링크를 가져와야하는 경우 편리합니다.
client.prototype.createrequestedSongcoverlink () - 요청 된 표지 파일 링크. 현재 비동기 작업을 수행하지 않고 링크를 가져와야하는 경우 편리합니다.
필요한 경우 한 서버에서 다른 서버로 노래를 내보낼 수 있습니다. 두 가지 옵션이 있습니다.
모든 프로젝트 파일을 두 번째 서버에 복사하십시오. 노드가 모든 정보를 새 주소로 재구성 할 수 있기 때문에 편리하고 현재 순간에 작동합니다. 그러나 이것이 미래에 효과가있을 것이라는 보장은 없습니다.
노래 내보내기 기능 : run node.exportSongs()
메소드 또는 명령 줄을 통해 museria -a exportSongs -n 2.2.2.2:2079
를 사용하십시오. 여기서 첫 번째 서버를 두 번째 서버의 신뢰 목록에 추가하여 우선 순위 1을 포함한 모든 노래를 전송해야합니다.이 없이는 노드에 보안 문자 솔루션이 필요하며 파일은 추가되지 않습니다. 스프레드 가능한 라이브러리의 옵션 네트워크를 사용하십시오.
버그에 직면하거나 라이브러리를 개선하는 방법을 알고 있다면 Github에서 문제를 만듭니다. 무언가를 고치거나 새 코드를 직접 추가하려면 라이브러리를 포크하고 변경하고 마스터 브랜치에 풀 요청을 작성하십시오. 이 경우 테스트를 잊지 마십시오. 또한 Github의 프로젝트에 참여할 수 있습니다.