Museria - ein dezentrales Musikarchiv

Bild

Ich habe mich einmal versammelt, um eine Anwendung zu schreiben, um Musik für mich selbst auszuwählen und zu Hause / auf der Straße / beim Training usw. zuzuhören. Und damit das alles in einem Stream funktioniert, mit einem Minimum an meiner Teilnahme. Er entwickelte die Architektur, entwarf einen Prototyp und hatte ein „kleines Problem“.

Und es ist nicht klar, wo man die Songdateien selbst bekommt. Zu diesem Zeitpunkt hatte VKontakte die API bereits geschlossen, auf großen Musikportalen war alles taub, sogar Songs wurden in Stücken gegeben, um nicht analysiert zu werden. Es gab nur einige separate eintägige Websites mit tonnenweise Werbung und allerlei Müll, allerlei zweifelhaften Grabber-Programmen und anderen „schmutzigen“ Optionen. Im Allgemeinen keine einzige gültige gute Entscheidung. Sie können natürlich ein Abonnement für Yandex-Musik oder ähnliches kaufen. Andererseits gibt es keine offene öffentliche API und Sie haben keinen programmgesteuerten Zugriff auf Musik. Tatsächlich haben mehrere große Unternehmen den Rest ihres Zugangs zu Musik eingeschränkt. Warum ist das überhaupt passiert? Bei tieferem Graben wurde klar, dass das Hauptproblem im Urheberrecht liegt. Die derzeitige Lösung in Form von Abonnements eignet sich für viele kommerzielle Autoren von Musikwerken und dieselben Unternehmen.Gleichzeitig fallen auch Non-Profit- und Shareware-Musik in die allgemeine Liste. Sie zahlen entweder für alles oder Sie hören überhaupt nichts.

Und ich begann zu überlegen, was ich mit all dem anfangen sollte. Wie kann der kostenlose Musikvertrieb organisiert werden? Was würde ich tun, wenn ich selbst Musik machen würde und damit Geld verdienen möchte? Würde es mir gefallen, wenn meine Songs auf Raubkopien verbreitet würden? Was ist eine alternative Lösung?

Infolgedessen gab es zwei Hauptprobleme, die angegangen werden mussten:

  • Organisation der kostenlosen Verbreitung von Musik nach Methoden, die für die meisten Menschen geeignet sind, einschließlich Software.
  • Bieten Sie Musikschaffenden Alternativen für Geld an

Globales dezentrales Musik-Repository


Anfangs habe ich versucht, vorhandene Lösungen zu finden und alles darauf basierend zu erstellen. Nach einiger Zeit der Suche hat es ipfs zuerst gefallen . Ich begann mit der Umsetzung meiner Idee, fand aber nach einer Weile einige kritische Probleme in dieser Lösung:

  • Ipfs - Speicher für alles und jeden. Hier und Bilder und Musik und Video und alles andere. Im Allgemeinen ist so ein großer planetarischer "Müll". Wenn Sie Ihren Knoten starten, erhalten Sie daher sofort eine große Last. Das Auto krümmt sich nur vor Schmerzen.
  • - «». , , , , . , . , , ipfs .
  • ( ), . , , . , , , . .

Es gab noch viele kleinere Probleme, der Eindruck war damals eindeutig: Dies kann nicht für das Projekt verwendet werden. Ich suchte weiter nach dem Repository, erkundete verschiedene Optionen, fand aber immer noch nichts Passendes.

Am Ende entschied ich, dass es sich lohnt, selbst einen dezentralen Speicher zu schreiben. Lassen Sie es nicht so tun, als wäre es interplanetarisch, aber es wird eine bestimmte Aufgabe lösen.

Dies ist , wie streich , storacle , metastocle , museria , museria-global stellte sich heraus .

streichfähig- Dies ist die Hauptschicht, die unterste Schicht, mit der Sie Knoten zu einem Netzwerk kombinieren können. Es enthält einen Algorithmus, den ich bisher teilweise basierend auf 10.000 Servern implementiert habe. Die Vollversion des Algorithmus ist viel schwieriger zu implementieren und würde einige zusätzliche Monate (möglicherweise mehr) erfordern.

Im Detail werde ich das Verbreitbare in diesem Artikel nicht beschreiben, ich schreibe besser irgendwie ein separates. Hier stelle ich nur einige Funktionen fest:

  • Es funktioniert über http / https.
  • Sie können ein separates Netzwerk für eine bestimmte Aufgabe erstellen, wodurch die Belastung jedes einzelnen Projekts erheblich verringert wird, als wenn sich alle im selben Netzwerk befinden würden.
  • Zunächst wurde ein Mechanismus mit Timeouts und anderen kleinen Dingen durchdacht. Dies funktioniert für alle Methoden sowohl im Client als auch im Knoten. Sie können Einstellungen in Ihrer Anwendung flexibel verwalten.
  • nodejs. . «», . : , , , ...

storacle ist eine von verteilbar geerbte Ebene, mit der Sie Dateien im Netzwerk speichern können. Jede Datei hat je nach Inhalt einen eigenen Hash, über den sie später abgerufen werden kann. Dateien werden nicht in Blöcke unterteilt, sondern vollständig gespeichert.

Metastocle - Eine von Spreadable geerbte Schicht, mit der Sie Daten im Netzwerk speichern können, jedoch keine Dateien. Die Schnittstelle ähnelt der nosql-Datenbank. Sie können beispielsweise eine Datei zum Storacle hinzufügen, ihren Hash abrufen und sie mit Bezug auf etwas in das Metastocle schreiben.

museria - von storacle und metastocle geerbt. Diese Ebene ist direkt für die Speicherung von Musik verantwortlich. Das Repository funktioniert nur mit MP3-Dateien und ID3-Tags.

Als "Schlüssel" zum Song wird sein vollständiger Name in der Form Artist (TPE1) - Title (TIT2) verwendet . Zum Beispiel:

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

Hier können Sie so viel wie möglich herausfinden, wie Songnamen gebildet werden . Es ist notwendig, die Funktion utils.beautifySongTitle () zu betrachten .

Eine Schlüsselübereinstimmung ist ein Prozentsatz, der in den Knoteneinstellungen definiert ist. Ein Wert von 0,85 bedeutet beispielsweise, dass wenn die Tastenvergleichsfunktion (Songnamen) eine Ähnlichkeit von mehr als 85% gefunden hat, dies derselbe Song ist.

Ein Algorithmus zum Bestimmen der Ähnlichkeit befindet sich an derselben Stelle in der Funktion utils.getSongSimilarity () .

Cover zum Song zum späteren Abrufen, ebenfalls über Tags ( APIC ) angehängt . Die Utils verfügen über alle erforderlichen Methoden zum Empfangen und Verarbeiten von Tags.

Ein Beispiel für die Arbeit mit dem Repository über den Client finden Sie in der Readme-Datei .
. , .

museria-global ist ein bereits konfiguriertes Git-Repository zum Starten eines eigenen Knotens im globalen Musiknetzwerk. Klone npm i && npm start und das wars . Sie können detaillierter konfigurieren, im Docker ausführen usw. Details finden Sie auf dem Github .

Wenn das Repository aktualisiert wird, müssen Sie Ihre Site aktualisieren. Wenn sich die Haupt- oder Nebenversionsnummer ändert, ist diese Aktion erforderlich, andernfalls werden die alten Knoten vom Netzwerk ignoriert.

Sie können manuell und programmgesteuert mit Songs arbeiten. Jeder Knoten startet den Server für verschiedene Aufgaben. Wenn Sie den Standardendpunkt besuchen, erhalten Sie eine Benutzeroberfläche für die Arbeit mit Musik. Sie können beispielsweise zum Stammknoten wechseln(Die Verknüpfung ist möglicherweise später nicht mehr relevant. Die Eingabeknoten können auch per Telegramm abgerufen werden oder Aktualisierungen auf dem Github anzeigen.)

So können Sie Songs suchen und in das Repository hochladen. Das Herunterladen von Songs kann in zwei Modi erfolgen: normal und moderiert. Der zweite Modus bedeutet, dass die Arbeit von einer Person ausgeführt wird, nicht von einem Programm. Wenn Sie dieses Kontrollkästchen beim Hinzufügen aktivieren, müssen Sie das Captcha lösen. Songs können mit den Prioritäten -1, 0 oder 1 hinzugefügt werden. Priorität 1 kann nur im moderierten Modus eingestellt werden. Es sind Prioritäten erforderlich, damit das Repository effektiver entscheiden kann, was zu tun ist, wenn Sie versuchen, ein vorhandenes Lied durch ein neues zu ersetzen. Je höher die Priorität, desto wahrscheinlicher ist es, dass Sie die vorhandene Datei überschreiben. Dies hilft bei der Bekämpfung von Spam und erhöht die Qualität der heruntergeladenen Songs.

Wenn Sie dem Repository Songs hinzufügen, versuchen Sie, Bilder (Cover) anzuhängen, obwohl dieses Feld optional ist. In 99% der Fälle sind die allerersten Bilder in Google nach Songnamen Albumcover.

Wie technisch Dateien auf den Punkt gebracht werden:

  • Der Client erhält die Adresse eines freien Knotens, der für einige Zeit zum Koordinator wird.
  • Die Funktion zum Hinzufügen eines Songs wird ausgelöst (von einer Person oder einem Code). Es wird eine Anforderung zum Hinzufügen eines Koordinators zum Endpunkt gestellt.
  • Der Koordinator berechnet, wie viele Duplikate gespeichert werden müssen (konfigurierbarer Parameter).
  • Die am besten geeigneten zu speichernden Knoten werden gesucht.
  • Die Datei geht direkt zu diesen Knoten.

Wie technisch werden die Dateien empfangen:
  • Der Client erhält die Adresse eines freien Knotens, der für einige Zeit zum Koordinator wird.
  • Die Funktion zum Empfangen des Songs wird ausgelöst (von einer Person oder einem Code), eine Anfrage wird empfangen, um einen Koordinator zum Endpunkt zu bringen.
  • . , , .
  • , .


Die Frage, wie man den Wert vieler kreativer Werke objektiv bewerten kann, hat mich schon immer interessiert. Warum zum Beispiel stellt eine Person ihr Musikalbum für 10 US-Dollar aus? Oder für 20 Dollar oder für 100 Dollar. Wo ist der Algorithmus? Wenn wir zum Beispiel über eine Art physisches Produkt oder sogar über viele Arten von Dienstleistungen sprechen, können wir zumindest den Selbstkostenpreis berechnen und davon ausgehen.

Ok, lassen Sie uns 10 Dollar setzen. Ist es wirklich effektiv? Angenommen, ich habe irgendwo ein Album oder ein Lied von dort gehört und mich entschlossen, mich zu bedanken. Aber nach meinen Gefühlen und meinen eigenen Fähigkeiten sind 3 Dollar meine Obergrenze. Und wie kann man hier sein? Höchstwahrscheinlich werde ich einfach nichts tun, wie die meisten Leute.

Indem Sie einen festen Preis für kreative Arbeit festlegen, beschränken Sie sich einfach und lassen sich nicht von einer großen Anzahl von Personen weniger Geld schicken, was insgesamt beeindruckender sein kann als diejenigen, die zu dem von Ihnen festgelegten Preis kaufen. Es scheint mir, dass Kreativität genau der Bereich ist, in den Spenden zuerst gelenkt werden sollten. Dazu benötigen Sie:

  • Menschen lehren, auf diese Weise zu danken. Die Urheber selbst müssen klar nachweisen, dass sie Spenden erhalten, überall Links zu verschiedenen Zahlungsmethoden hinzufügen usw. möchten.
  • . , , .

    , :

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

    , :

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

    .

    museria , , / . . , , .

, , ,


  • , , , . museria , . , , , .
  • - : , , ...
  • , . , .
  • - . , , .

Das Projekt steckt noch in den Kinderschuhen. Ein Testnetzwerk wird ausgeführt, Knoten können häufig neu gestartet werden, erfordern Updates usw. Wenn während des Evaluierungszeitraums keine kritischen Probleme auftreten, wird dasselbe Netzwerk in das Hauptnetzwerk umgewandelt.

Informationen zur Site von außen anzeigen: Anzahl der Songs, freier Speicherplatz usw. Sie können auf den Link-Typ http://node-address/statusoder Meine Kontakte klicken :http://node-address/status?pretty




All Articles