Musteria ist ein dezentraler Musikaufbewahrung, der auf streikbarem Storacle und Metastocle basiert.
Hier gibt es einen Artikel mit einer Erklärung.
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 ) ;
}
Sie können den Client auch in einem Browser verwenden. Schauen Sie sich die Beschreibung der ausstrahlbaren Bibliothek an. In einem Fenster haben Sie Fenster.ClientmuSeria anstelle von window.clientSpreadable . Der vorbereitete Dateiname ist museria.client.js .
Schauen Sie sich die Beschreibung der ausstrahlbaren Bibliothek an. Sie müssen sich nur überall überall in Musteria ändern.
Der Mechanismus der Bibliothek ist Storacle sehr ähnlich. Der einzige Unterschied besteht darin, dass der Schlüssel zur Datei der Name des Songs ist, nicht der Hash. Außerdem wird ein einzigartiger Song nicht mit dem vollständigen Titelmatch berücksichtigt, sondern mit dem Prozentsatz des Zufalls in den Optionen.
Derzeit wird nur MP3 -Format unterstützt. Die Tags sind ID3 basierend auf Node-ID3. TPE1- und TIT2 -Tags müssen das Lied speichern. Sie können Setter FullTitle als TPE1 - Tit2 verwenden, wenn Sie die Tags mit Utils festlegen. Es muss eine gültige Kombination für Utils.ISSONTITEL () -Funktion sein. Außerdem hat das Netzwerk möglicherweise seine eigenen Abdeckungsgrößenanforderungen. Die Anzahl der Songs, die zu einem Knoten hinzugefügt werden können, ist ebenfalls konfigurierbar.
Schauen Sie sich die Speicheranforderungen und die Metastocle -Anforderungen an.
Durch das Hinzufügen eines Songs können Sie angeben, ob Sie es moderieren oder nicht. Die kontrollierte Option ist dafür verantwortlich. Standardmäßig ist es falsch . Der Moderationsmodus impliziert, dass Sie sich um die Konformität und Qualität des Songs kümmern. Die Datei des entsprechenden Songs im Speicher wird durch eine neue ohne Schecks ersetzt. Das Hinzufügen von Songs in diesem Modus erfordert eine Captcha -Bestätigung.
await client . addSong ( file , { controlled : true } ) ;
Sie können auch die Priorität Ihrer Datei als -1 , 0 oder 1 angeben. Standardmäßig ist es 0 . Wenn die Priorität des neuen Songs höher ist als der vorhandene, wird dies ohne Schecks ersetzt. Wenn sie gleich sind, entscheidet der Speicher selbst, welches zu wählen ist. Wenn weniger, bleibt das Lied im Repository gleich. In diesem Fall können nur die Tags, Cover und andere zusätzliche Informationen aktualisiert werden. Priorität 1 darf nur im Moderationsmodus verwendet werden.
await client . addSong ( file , { priority : - 1 } ) ;
await client . addSong ( file , { priority : 1 , controlled : true } ) ;
Zum Beispiel können wir die gesamte Musik auf dem Planeten an einem Ort zusammenfassen, aber auf eine dezentrale Weise mit der Fähigkeit, jederzeit darauf zuzugreifen.
Sie können es verwenden, um Musik zu speichern, wie Sie möchten.
Da die Bibliothek in JavaScript geschrieben ist, können Sie Songs im Browser empfangen / senden / arbeiten und überhaupt keinen Servercode verwenden. In einigen Fällen kann es sehr bequem sein.
Wenn Sie eine Instanz des Knotens erstellen, können Sie unten die Optionen übergeben. Hier werden nur spezifische Optionen dieser Bibliothek beschrieben, ohne die Optionen der übergeordneten Klassen zu berücksichtigen.
{Objekt} [Musik] - Abschnitt, der auf Musikeinstellungen antwortet.
{number} [music.similarity = 0,91] - Nummer von 0 bis 1 angibt, wie ähnliche Song -Titel sein müssen, um sie gleich zu betrachten.
{number | string} [music.audioHeadersMaxsize = "180KB"] - Maximale Audio -Header -Größe.
{number | string} [music.coverHeadersMaxsize = "5KB"] - Maximale Cover -Header -Größe.
{number} [music.FindingStringMinLength = 4] - Mindestsymbole, um Songs zu finden.
{number} [music.findinglimit = 200] - Songs finden maximale Ergebnislistengröße.
{number | string} [music.relevancetime = "14d"] - Wie lange hat ein vorhandener Lied Vorrang vor neu hinzugefügten.
{boolean} [music.preparetitle = true] - Bereiten Sie den Titel vor Addition vor oder nicht. Vorbereitung bedeutet, den Titel in eine allgemeine Ansicht zu bringen.
{boolean} [music.preperareCover = true] - Bereiten Sie das Cover vor Addition vor oder nicht. Vorbereitung bedeutet, die Größe und Bildqualität auf die richtigen Werte zu bringen.
{Integer} [music.coverQuality = 80] - Vorbereitete Coverqualität von 0 bis 100. Es funktioniert nur, wenn Music.PreperareCover wahr ist.
{Integer} [music.coverminSize = 200] - Mindestabdeckungsgröße in PX. Es funktioniert nur, wenn Music.PreperareCover wahr ist.
{Integer} [music.covermaxSize = 500] - Maximale Abdeckgröße in PX. Es funktioniert nur, wenn Music.PreperareCover wahr ist.
{number | string} [music.covermaxFileSize = "110KB"] - Maximale Cover -Dateigröße. Es funktioniert nur, wenn Music.PreperareCover wahr ist.
{number | string} [task.cleanUpmusicinterval = "1m"] - Musikbereinigungsaufgabeintervall.
Async Client.Prototype.addsg () - Fügen Sie die Datei dem Netzwerk hinzu.
Async Client.Prototype.getSong () - Holen Sie sich die Song -Hauptinformationen.
async client.prototype.getsonginfo () - Holen Sie sich das Lied komplette Info.
Async Client.Prototyp.Findsongs () - Finden Sie Songs nach der Match.
Async Client.Prototype.Findartistongs () - Finden Sie Songs vom Künstlernamen.
async client.prototype.getSongaudiolink () - Holen Sie sich den Link zur Song -Audio -Datei.
async client.prototype.getSongCoverlink () - Holen Sie sich den Link "Song Cover -Datei".
Async Client.Prototype.getSongaudiotobuffer () - Laden Sie die Song -Audio -Datei herunter und geben Sie den Puffer zurück.
async client.prototype.getSongCoverToBoBuffer () - Laden Sie die Song -Cover -Datei herunter und geben Sie den Puffer zurück.
Async Client.Prototype.getSongaudiotopath () - Laden Sie die Song -Audio -Datei herunter und schreiben Sie sie auf den angegebenen Pfad.
Async Client.Prototype.getSongCoverTopath () - Laden Sie die Song -Cover -Datei herunter und schreiben Sie sie auf den angegebenen Pfad.
Async Client.Prototype.getSongaudiotoblob () - Laden Sie die Song -Audio -Datei herunter und geben Sie den Blob zurück. Nur für Browser -Client.
Async Client.Prototype.getSongCovertoBlob () - Laden Sie die Song -Cover -Datei herunter und geben Sie den Blob zurück. Nur für Browser -Client.
Async Client.Prototype.Removesong () - Entfernen Sie das Lied.
Client.Prototype.CreateRequestedSongaugiOlink () - Erzählen Sie einen angeforderten Audio -Datei -Link. Dies ist praktisch, wenn Sie den Link erhalten müssen, ohne asynchrone Operationen auszuführen.
Client.Prototype.CreferequestedSongCoverlink () - с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с einen angeforderten Cover -Dateilink erregen. Dies ist praktisch, wenn Sie den Link erhalten müssen, ohne asynchrone Operationen auszuführen.
Bei Bedarf haben Sie die Möglichkeit, Songs von einem Server auf einen anderen zu exportieren. Es gibt zwei Optionen:
Kopieren Sie alle Projektdateien auf den zweiten Server. Es ist bequem und funktioniert im aktuellen Moment, da der Knoten in der Lage ist, alle Informationen in eine neue Adresse neu zu konfigurieren. Es gibt jedoch keine Garantie dafür, dass dies in Zukunft funktionieren wird.
Verwenden Sie die Song -Exportfunktion: Run node.exportSongs()
Methode oder über die Befehlszeile als museria -a exportSongs -n 2.2.2.2:2079
. Hier sollten Sie den ersten Server zur Vertrauensliste der zweiten hinzufügen, um alle Songs zu übertragen, einschließlich derjenigen mit Priorität. Ohne dies benötigt der Knoten eine Captcha -Lösung und die Datei wird nicht hinzugefügt. Verwenden Sie das Option Network .
Wenn Sie sich einem Fehler gegenübersehen oder eine Idee haben, wie Sie die Bibliothek verbessern, erstellen Sie ein Problem auf GitHub. Um etwas zu beheben oder selbst einen neuen Code hinzuzufügen, geben Sie die Bibliothek an, nehmen Sie Änderungen vor und erstellen Sie eine Pull -Anfrage an den Master -Zweig. Vergessen Sie in diesem Fall keine Tests. Sie können sich auch dem Projekt auf GitHub anschließen.