MediaDB

Verwaltung von Medien in Schrank und auf Speichern

Was ist MediaDB?

Der Ursprung liegt in einer Übung in der Schule, in der es um die Entwicklung von einer PHP gestüzten Datenbankanwendung ging. Dies ist eine sehr übliche Übung, welche gern an dieser stelle genommen wird. Auch, wenn das Beispiel der Aufgabe: "Entwickeln sie eine Datenbanklösung zum Verwalten von DVDs im Regal" etwas veraltet ist. Doch mit dieser Übung in der Schule wurden die Grundlagen geschaffen.
Aber MediaDB ist mehr als die Übung aus der Schule. Es ist darauf ausgelegt, die gesammte Musik und Video Sammlung zu Verwalten. Dabei kommt es nicht darauf an, auf welche Art die Medien (d.H. ob als Datei oder CD) existieren. Für die verschiedenen Möglichkeiten der "Lagerhaltung" gibt es frei anpassbare Möglichkeiten. Zwischen der Existenz als Audio CD und der als Ordner irgenwo auf irgend einer Festplatte ist eine Unterscheidung möglich. Auch doppelte Existenzen können Unterschieden werden. Und für die Fälle wo Sammlungen auf Daten Disk zusammen gefasst wurden, gibt es dafür ebenfalls Optionen die Daten Disks in der Datenbank zu hinzuzufügen.

Es begann mit Excel Tabellen

Bevor ich mit MediaDB begann hatte ich alle CDs, welche im Schank standen, in Excel Tabellen geschrieben. Mit DVDs und CD-ROMs für den Computer machte ich es genau so. Auf die Idee alles in solche Tabellen zu schreiben, hatte mich mein Vater gebracht. Dieser machte es mit viel größeren Sammlungen in viel größeren Tabellen genau so. Doch fanden sich zwischendurch meherere Versionen der Excel Dateien an, in denen Unterschiede auffielen. Ferner gab es Versionen aus der Zeit, wo man als Kind noch Kasetten mit Hörspeieln und Musik hatte. Jedoch zwischendurch waren diese, wie auch die Einträge aus den Datein entfernt worden, welche aktiv verändert worden. Gern hätte ich nach den Zugriff auf die Tabellen direkt bei den Lagerorten gehabt. Also entweder die Tabelle drucken. Doch das ist aufwendig und lässtig, wenn man aktualisieren muss. Alternativ digital Anzeigen mittels Display der Tabelle neben dem Lagerort. Nur ist das mit einer Excel Tabelle, welche zwischendurch bearbeitet werden soll, nicht so praktisch. Und da die oben angesprochene Übung mir eine gute Vorlage bot, habe ich darüber nachgedacht, alles in eine Datenbank mit Webanzeige zu überführen. Es gab aber noch einen weiteren Grund. Die Tabellen meines Vaters. Sie waren ständig veraltet und es machte aufgrund der Menge mühe, diese zu pflegen. Er wollte diese immer ausdrucken und in die Schanktür- Innenseiten hängen. Aber dem kam er zu selten nach. Auch das sollte MediaDB, inkl. dem Druckformat ersetzen. Damit hätte man leichter die Daten Pflegen können und hätte sie ggf. nur noch Drucken müssen.

Angepasst für die Verwendung am Handy

Die Überlegung der Anzeige der Tabellen neben der Lagerung der Medien brachte den Gedanken der Anzeige der Webseite auf inem Display mit sich. Man könnte das Display in der Nähe der Lagerorte haben oder man greift per Handy auf die Tabellen zu. Dies ist vorallem praktischer, denn man kann gleich in den Tabellen suchen.
Ferner stand eine weitere Anforderung an. Da die Tabellen von Vater ersetzt werden sollten, musste (und sollte) Mutter damit klar kommen. Diese beschwerte sich bereits über die nicht geplfegten Wandtabellen in den Schränken. Auch wurde sich mal eine CD Doppelt angeschafft, weil man nicht mehr wusste, dass diese bereits im Schrank zu finden war.
Mit dem Handy auf die Seite zugreifen können und damit auch die Daten Verwalten können, dass war also sehr wichtig, damit zum Beispiel auch Mutter die Anwendung verwenden könnte.
Somit habe ich die Seite auf das Anzeigen auf Mobilen Geräten angepasst. Leider standen zu der Zeit meine CSS kentnisse noch am Anfang. Daher finden sich dort regelmäßige Re- Definitionen, was keinem guten Stil und einer guten Wartbarkeit entspricht. Aber mit dem HTML5 ausbau und den JS Erweiterungen wurde auch das stetig verbessert.

MediaDB-Tool

Unterstüzung vom Computer

Das MediaDB-Tool ist eine Erweiterung für den Computer. Es ist nicht primär zur Anzeige der Daten gedacht, sondern ein Werkzeug um Daten in die Datenbank für MediaDB zu importieren.
Die Erschaffung des Tools hat einen Hintergrund. Oftmals Kauft man heute Alben von Künstlern im Internet und hat diese in Form von Datein auf der Festplatte zu liegen. Jetzt kann man zu einem neu gekauften Album dein Eintrag in der Tabelle noch einfach anlegen. Jedoch möchte man wahrscheinlich auch die Titel Liste mit in die Datenbank übernehmen. Dies ist mit der Webseite natürlich möglich. Jedoch sehr aufwändig, jeden Titelnamen von Hand abzuschreiben. Die längen der Listen tun dem ihr übrieges. Da die Dateien auf der Festplatte aber bereits den Namen des Titels und ggf. auch Nummer und Interpret haben, wäre es leichter, wenn man dies Dateinamen nur benutzen müsste, um die Titelliste daraus zu beziehen.
Ein Weiterer Ansatz für das Tool war wieder die riesige Sammlung meies Vaters. Mein Vater hatte bereits mit Excel Tabellen versucht die Medien aufzulisten. Wenn nun die Tabellen von ihm ebenfalls in die Datenbank überführt werden sollen, dann wäre das sehr aufwendig. Also sollte es möglich sein das MediaDB-Tool auf seine Excel Tabellen los zu lassen, und es würde diese in die Datenbank einlesen. Danach lassen sich noch ein Paar Alben nach pflegen, bezeiehungsweise deren Titellisten.
Das Programm soll nur am PC laufen, da es auf die Dateisysteme zugreifen sollte. Doch auch wenn ich gerne für Linux bzw. Uniplattform entwickelt hätte, musste das Tool auch von meinem Vater oder meiner Mutter verwendbar sein. Jeder verfügt über einen Windows Rechner. Und daher habe ich mich entschieden die Anwendung in VB.NET mit Visual Studio zu entwickeln.

Ableiten von Track Liste aus Dateinamen

Als erste Funktion baute ich die Tietellisten Funktion. Um diese zu verwenden, muss das entsprechende Album in MediaDB bereits angelegt worden sein. Dann wählt man dieses im Tool einfach aus. Bei der Tietelliste könnten nun bereits existierende Titel angezeigt werden. Oder es bleibt leer, wenn es keine Titel gibt. Nun kann man über "Titelnamen aus Datein ableiten" die Funktion aufrufen. In der zweiten Form wählt man nur noch den Pfad aus. Die Dateien von dort werden kurz in die Übersicht geladen. Man kan sie dort wieder teil- oder ganz Anwählen. In der Zeile darunter wird eine Formatbeschreibung zum Parsen der Namen angegeben. Mittels Schlüsselblöcken wird das Programm die Namen der Datein abarbeiten und in die Werte für die Tabelle zerlegen. Die Funktoen lassen sich durch einen Klick auf eines der Label in das Feld fügen. Dabei werden Teile der Optionen gleich mit abgefragt, damit der vollständige Eintrag in das Feld eingefügt wird. Sobald man auf "Dateien Parsen" klickt, wird entsprechend der Formatzeile jeder Dateiname in eine neue Zeile in der Tabelle unten geschrieben. Hinterher kann man in der Tabelle noch ändern, was man möchte. Mit einem klick auf "Übernehmen" werden die einträger der Tabelle in die Datenbank übernommen. Schon kann man im Hauptfenster und in der MediaDB Webseite die Liste anzeigen lassen.

Portierung nach Python

Ich hatte in der Schule früher PHP gelernt und dies zur Entwicklung von MediaDB genutzt. Auch wenn die Verwendung der Datenbank mit PHP jetzt nicht sehr schlecht war, mochte ich mittlerweile die Entwicklung nicht mehr so. Das Problem war, dass für die Ausgabe der Oberflächen immer Daten aus der Datenbank geladen werden, verarbeitet und in die HTML Ausgabe eingebaut werden mussten.
Ja, man hätte auch eine HTML Roh Seite erzeugen können, die JS mit lädt, sich die Daten nachlädt und in das HTML schreibt. Aber JS konnte ich nicht. Aus heutiger sicht muss ich ferner sagen, dass ich von dieser Praxis nicht sehr begeistert bin und im konkreten Fall nicht gewesen wäre.
PHP hatte immer ein Problem. Da ich immer fast den ganzen Inhalt des HTML in PHP erzeugt habe, musste ich diese Erzeugung mit dem Zugriff auf die Daten aus der Datenbank mischen. Trat ein Fehler auf, brach PHP den ganzen Prozess ab, was schon für die Datenbank schlecht war. Der Browser bekam dann entwerder nur ein unvollständiges HTML (was zu Problemen in der darstellung führt) oder nichts zurück. Wo das Problem lag durfte ich dann immer am Server aus dessen Logfile herraus finden. Manchmal auch durch Stunden langes durchtesten meines gemischten Codes.
Mittlerweile hatte ich durch das Studium aber einen Kurs gehabt, in dem Webprogrammierung gezeigt wurde. Dabei in verschiedenen Facetten (CGI Programme in C z.B.) bis zur Entwicklung mit Webframeworks. Neben einem Überblick über verschiedene Frameworks für verschiedene Sprachen, unteranderem einen tieferen in den Framework Flask basierend auf Python.
Auch hier wurden wieder einige Übungen gemacht, wodurch ich die Arbeit mit Flask mehr kennen lernte. Ich prüfte noch weitere Frameworks, wollte aber bei Python bleiben. Denn hier hatte ich auch bereits Erfahrungen in Programmierung und mit dem Zugriff auf die Datenbank. Also blieb ich kurzerhand bei Flask.
Auch die Art und Weise wie ich entwickeln kann gefällt mir. Das Problem mit den gemischten Codes ist auch vorbei. Alles was HTML sein soll ist jetzt HTML und die Arbeit zum laden der Daten aus der Datenbank findet im Python Code statt. So habe ich nun MediaDB von PHP nach Python (d.H. Flask) portiert.

Features

Verschiedene Listen Ansichten

MediaDB verfügt über verschiedene Listen. Damit kann man z.B. nach Medien getrennt die Tabellen zeigen lassen. Ferner kann man durch einen Klick auf einen Interpretennamen sich auch alle Medien eines Interpreten anzeigen lassen. Die Listen sind möglichst sinnvoll untereinander verlinkt. Einige lassen sich jederzeit über Buttons erreichen. Natürlich lassen sich auch tiefere Details über ein Medium anzeigen. Ferner lassen sich die Medien über eine Lager Information anzeigen. Somit kann man z.B genau für einen Lagerort prüfen, welche Medien sich dort befinden.

Kontext bezogene Anzeigen

Um schnell, aus der Tabelle z.B. die Entahltenen Alben einer Daten Disk einsehen zu können, lässt sich diese Ansicht per Klick auf einen Button öffnen. Diese zeigt sich dann als Modal (zweite Ebne) im Browser. Man bekommt so schnell eine Übersicht, in Tabellen Form, welche Medien einander Zugeordnet sind. Ferner lässt sich hier für ein zugeordnetes Medium in die Detailansicht springen.

Matrix Suche

Als erstes Such Feature war die einfache Suche verfügbar. Gemeint ist die kleine Suchzeile im Kopf der Seite. Man kann darüber immer nach einem Album oder Daten Disk suchen. Dabei ist nicht nach Interpreten suchbar oder filterbar. Dafür gibt es dort den Button Erweiterte Suche. Die Matrix Suche ermöglicht die Suche mit Interpreten und Namen des Albums bzw. der Daten Disk. Das bedeutet man kann hier nur nach einem der Option die Medien Suchen und mehere dieser Verwenden um die Kombination der Optionen in den Medien zu suchen. Ferner kann hier noch nach Tietel gesucht werden. Dies erweitert die Optionen auf eine dreifach Kombination.

Slot Ansicht für CD Aufbewarung

Es gibt die Möglichkeit CDs im Schrank z.B. in Aufbewahrungsboxen oder Etuies einzuordnen. Das ist natürlich mit digitalen Medien nicht so möglich. Aber um eine Übersicht zu haben wo genau eine CD steht, kann man ausgehend von der "List über Lagerbezeichnung" in die Slot Ansicht wechseln. Hier kann man "virtuell" die Medien einordnen und so sehen, wie sie eingeordnet sind. Die Medien belegen darüber hinaus auch so viel Platz, wie "breit" ihre Lager Art ist (z.B. Schachtel). Die Lagerorte werden als "Media Container" bezeichnet. Dieser besitzt eine Anzahl von sogenannten Slots. Dies ist definiert als die Breite einer schmalen CD-Schachtel. Daraus ergibt sich die maximale Zahl an Slots, die der Media Container haben kann. Diese Einstellung wird am Media Container vorgenommen. Die "breite" der Lager Art wird an dieser vorgenommen. Dies bedeutet, dass sie minimal einer schmalen Schachtel, also 1, entspricht. Eine Handelsübliche CD-Schachtel belegt aber für gewöhnlich den doppelten Platz, also 2. Dies bewirkt, dass in der Slotansicht ein Medium 2 Slots, d.H. 2 Zeilen verwendet. Somit ließe sich ggf. auch sehen, ob eine CD mit einer Schachtel in einem Media Container noch Platz findet oder nicht.

Detail Anzeige

Für die Medien, die man in eingetrage hat, möchte man auch detaillierter einen Blick darauf werfen. Klickt man auf den Namen eines Mediums in den Tabellen, wird man zur Detailansicht des Mediums gebracht. Hier werden noch mehr Informationen zu einem Medium angezeigt, als in der kleinen Tabellen darstellung möglich gewesen wäre. Für CD's werden hier auch Länge und Typ angezeigt. Bei Daten Disks werden hier die Enthaltenen Alben angezeigt. Umgekehrt werden bei diesen zusätzlich die Daten Disks angezeigt, die dieses Album enthalten. Für Alben auf Festplatten lassen sich hier Informationen wie Pfad anzeigen. Alle Detail Ansichten erlauben das direkte Ändern der Medien. Außerdem kann man hierüber diese auch wieder löschen.

Titel Liste

Ein weiteres Detail auf der Detail Ansicht ist die Titel Liste. Diese ist bei allen Alben zu sehen. Es ist möglich von der Detail Ansicht oder nach dem hinzufügen des Albums Titel hier anzulegen. (Oder man spielt sie extern über MediaDB-Tool ein.) Jeder Titel kann einen eigenen Interpreten haben. Speichert man die Original Position mit ab, wird die Liste danach sortiert. Auf das Speichern der Titel Länge wurde verzichtet, da im normalfall nicht darauf geachtet wurde.