RPG Musik-Tags Datenbasis

Technik

Wie wird RPGMusicTags.org gemacht? Hier gebe ich ein paar Einblicke in die Technik dahinter.

Datenbasis

Die Daten sind in einer SQLite-Datenbasis gespeichert. SQLite wird verwendet, weil es ein einfaches und kostenloses DBMS ist, das für eine eher kleine Datenbasis wie diese völlig ausreicht.

Das Datenbasis-Schema kann man hier sehen. Für Tags und Kategorien gibt es jeweils potentiell viele Übersetzungen in andere Sprachen. Wenn einer eine Übersetzung hinzufügt, ist der Tag in der neuen Sprache auch automatisch allen Musikstücken zugeordnet, denen er bereits in der alten Sprache zugeordnet war.

Die Zuordnungen zwischen Tag und Musikstück werden pro Benutzer gespeichert, weswegen man beim Upload auch einen Benutzernamen mitgeben muss. Wenn ein Benutzer einen Tag wieder entfernt, wird das in der RemovedTags-Tabelle gespeichert. So ist eine einfache "Abstimmung" zwischen den Benutzern über ein Tag möglich, denn beim Download wird ein Tag für ein Musikstück nur zurückgegeben, wenn mehr Benutzer es gesetzt als es entfernt haben.

Musik-Identifikation

Zur Identifikation eines Musikstückes wird AcoustId verwendet. Über den dort bereitgestellten Chromaprint-Algorithmus wird ein "Fingerabdruck" des Musikstücks ermittelt, und über den Webservice bei AcoustId dann die Id geholt. Beim Upload werden auch Künstler, Album und Titel mitgegeben, damit man Stöbern kann. Beim Download kann man das Musikstück auch über diese Attribute finden, aber das ist unzuverlässig.

Webservice

Der Webservice und alle Webseiten hier werden mittels ServiceStack.net betrieben. Dies ist eine sehr einfache Art, mit .NET einen Webservice zu erstellen. .NET wurde gebraucht, weil die Tag-Datenbasis sehr viel Code mit Ares gemeinsam hat. Viel Code kann gleich für Ares und RPGMusicTags verwendet werden, denn ein Upload in die Datenbasis unterscheidet sich nur in einigen Details von einem Download in die lokale Datenbasis von Ares (und umgekehrt).
Der gesamte Code für den Webservice ist Open Source und in den Sourcen von Ares enthalten.
Die Webseite wird von SmarterASP.NET gehostet.