Ich habe am Wochenende mal meine kompletten XBMC Datenbanken neu eingelesen. Ausschlaggebend war, dass mein Thumbnails Ordner von XBMC über 20 GB groß war und der Database Ordner über 300 MB. Was beides viel zu hohe Werte sind ..
Da ich in mühsamer ewig langer Arbeit meine komplette MP3 Sammlung mit entsprechendem TAG, Cover usw. ausgestattet habe, war das wieder Einlesen und Erstellen der XBMC Musik Datenbank kein Problem. Kann daher jedem nur empfehlen seine MP3 Sammlung auch komplett zu Tagen mit Cover usw.Es ist zwar einmalig viel Arbeit aber es lohnt sich auf dauer.
Für die Video Datenbank wollte ich diesmal die Version mit Videodatenbank export -> Separat ausprobieren. Beim letzten mal hatte ich Videodatenbank export -> Einzeln genommen. Dabei wird eine riesige XML Datei erstellt mit allen Infos aus der Video Datenbank. Nur leider funktionierte das Einlesen im nachhinein nicht mehr so ganz. Am Ende war ich mehrere Tage damit beschäftigt den Rest wieder per Hand nachzuziehen *würg*.
Bei einem Videodatenbank export -> Separat werden zu den jeweiligen Filmen, diese müssen nicht in einzelnen Ordnern liegen, die drei Dateien FILMTITEL-fanart.jpg, FILMTITEL.nfo und FILMTITEL.tbn geschrieben. Die Datei FILMTITEL-fanart.jpg enthält das aktuelle Fanart des Films. Die Datei FILMTITEL.nfo enthält alle Filminfos wie Handlung, Länge usw.
Bei den Serien werden neben diesen Dateien noch einige weiter geschrieben allerdings will ich auf die Serien hier nicht weiter im Detail eingehen.
Nach dem ersten Export habe ich die mit die exportierten Dateien genauer angesehen und dabei einige FILMTITEL-fanart.jpg vermisst. Bei drei Filmen waren die exportierten Dateien auch eindeutig defekt. Bei dem Film Speed hießen die Dateien Spee.nfo und Spee.tbn. Nach dem löschen der fehlerhaften Dateien und einem erneutem Export war alles soweit ok.
Ich löschte also die beiden Ordner Thumbnails und Database, welche ich vorher gesichert hatte. Im nächsten Schritt begann ich die Videodatenbank wieder zu importieren. Das startete ich kurz bevor ich ins Bett ging kann daher nicht genau sagen wann es fertig war. Aber am nächsten Morgen war es durchgelaufen und zu meiner positiven Überraschung alle Filme ohne Probleme in der Datenbank
Aber einige Serien waren noch nicht in der DB. Nach ein wenig Recherche war klar, dass die Serien, welche einen zu sehr abweichenden SerienOrdnernamen zur eigentlichen Serienbezeichnung hatten wohl nicht gefunden werden konnten und daher alle noch fehlen. z.B. Zählte dazu Dr. House der SerienOrdner heißt bei mir einfach nur House. Order auch 24 dort heißt der SerienOrdner Twenty.Four. Diese Serien musste ich dann nochmal manuell nach Scrapen.
Bevor ich mittags das Haus verließ startete ich noch das einlesen der Musik DB. Was auch bis zu meinem Heimkommen in der Nacht ohne Probleme erledigt war.
Alles in allem hatte nun mein Thumbnails Ordner nur noch ca. 4,5 GB und der Database Ordner war auf ca. 80 MB geschrumpft. Da muss wohl vorher so einiges an Mist drin rumgelegen haben. Der aktuelle Stand beträgt 6,5 GB beim Thumbnails Ordner und weiterhin ca. 80 MB bei meinem Database Ordner. Schon krass wie schnell der Thumbnails Ordner schon wieder gewachsen ist. Muss ich mal genauer im Auge behalten ...
Ob XBMC insgesamt dadurch aber nun auch wirklich schnell, besser oder sonst wie beeinflusst wird weiß ich nicht. Zumindest ist mir da noch nicht wirklich aufgefallen. Allerdings hat mich auch vorher nicht wirklich etwas gestört
Soweit schon mal viel weniger Aufwand als beim letzten mal. Die meiste Arbeit hat XBMC selbstständig ohne Aufsicht erledigt Nur leider hatte ich nun die ganzen extra Dateien bei den Filmen rumliegen. Da ich viele Filme in einem Ordner habe finde ich es sehr sehr unübersichtlich und störend wenn da noch so viele unnötige Dateien rumliegen. (Wen das nicht stört kann hier eigentlich mit lesen aufhören)
Klar der erste Gedanke war einfach löschen den Mist. Aber was mache ich dann wenn ich doch mal durch einen dummen Zufall die XBMC Datenbank verliere. Alles nochmal neu mühsam online scrapen Neeeeeeee muss nicht sein.
Also aufheben wollte ich die Dateien für den Notfall schon nur eben nicht unbedingt direkt bei den Filmen im selben Ordner.
Da die Filme bei mir in mehreren verschiedenen Ordnern liegen, ca 30 Stück. War ich einfach zu Faul das manuell zu verschieben und dachte mir das muss doch auch per Script gehen. Viel Erfahrung hatte ich bisher nicht mit Batchscripten, aber naja ohne so ein Projekt lernt man es nie ...
Die benötigten Befehle hatte ich recht schnell online zusammen gesucht und nach einigen Stunden konnte ich alle Dateien in einen Backupordner auf einer anderen Festplatte verschieben. *SUPER* War stolz wie Oscar das das so schnell ging.
Aber dann fiel mir ein MIST und wie bekomme ich jetzt die ganzen Dateien wieder zurück wenn ich sie mal für einen Videodatenbank import brauche ?
Also noch ein Script musste her zum Import der Dateien. Nur woher sollte das Script jetzt wissen, welche Datei aus welchem der 30 Ordner kam So einfach wie das erste Script würde es wohl nicht werden. Gefühlte 100.000 Gehirnwindungen und drei Tassen Kaffee später kam ich auf die Idee mir beim ersten Script zu merken was ich woher geholt habe. Gedacht getan also eine Logdatei mit dem ExportScript erstellt wo genau diese Info drin steht.
Zwischenzeitlich ist mir mal eingefallen, dass Windows eine Dateibeschränkung von 10.000 Dateien pro Ordner hat und da ich mir nicht sicher bin wie stark meine Videosammlung noch ansteigt habe ich für jede Dateiart einen eigenen Backupordner angelegt. Also vier Stück nfo, tbn, fanart und [definition='1','0']log[/definition] in welche die jeweiligen Dateien geschrieben werden.
Das ImportScript holt sich nun also die Infos welche Datei es wohin kopieren soll aus der Logdatei. Aber welche Logdatei ist die richtige ? Denn um nichts zu vergessen, aber auch die Übersicht und Einfachheit zu behalten wird pro gelungenem Export über das Script eine Logdatei angelegt. Da ich davon ausgehe, dass man immer den letzten Export Importieren will, sucht sich das ImportScript immer die aktuellste ExportLogDatei und verarbeitet diese. Damit man hinterher auch sieht, was das ImportScript genau getrieben hat schreibt auch dieses eine Logdatei. Wusste ja jetzt schon wie es geht und im Quellcode recyceln war ich schon immer gut
Falls es jemand mal bei sich testen will VORSICHT es läuft nur unter WINDOWS. Aber noch viel WICHTIGER niemals aber auch wirklich niemals die Variable datadir ungesetzt lassen. Ansonsten werden alle *.nfo und *.tbn Dateien von dem Rechner auf dem ihr das ExportScript ausführt in die Backupfolder verschoben. Ich weiß wovon ich da rede mir ist es passiert
Ansonsten müsst ihr noch einige Variablen innerhalb der Dateien setzen:
WICHTIG: Die Batchscripte erwarten bei das alle angegebenen Ordner als Netzwerkfreigabe angegeben werden. Eine Version die nur lokale Festplatten akzeptiert habe ich hier auch noch rumliegen. An einer Version die beides kann und entsprechend das richtige macht arbeite ich derzeit noch. Da bei mir aber eh alles im Netzwerk liegt habe ich daran am Anfang nicht gedacht.
ExportScript:
backupdirfanart Ordner für die *-fanart.jpg Dateien
backupdirtbn Ordner für die *.tbn Dateien
backupdirnfo Ordner für die *.nfo Dateien
logdir Ordner für die Logs
datadir Quellordner indem die Filme liegen. Hier werden alle Unterordner mit durchsucht. Also reicht es den einen Wurzelordner anzugeben.
ImportScript:
backupdirfanart Ordner für die *-fanart.jpg Dateien
backupdirtbn Ordner für die *.tbn Dateien
backupdirnfo Ordner für die *.nfo Dateien
logdir Ordner für die Logs
Ohne das Anpassen dieser Variablen an eure Ordnerstruktur wird das Batchscript bei euch nicht wie vorgesehen lauffähig sein. Alle Ordner müssen Bereits existieren das Batchscript legt fehlende Ordner nicht an. Sondern läuft in einen Fehler wenn einer der Ordner fehlt.
Ich weiß der Quellcode ist auf keinen Fall optimiert. Aber für den ersten Wurf mit so komplexen Batchscripten bin ich schon froh das es soweit läuft Vor allem das ImportScript ist noch naja sagen wir mal suboptimal vom Programmierstil her. Aber es ist eben kein Java, C C++ oder ABAP wo ich mich auskenne und es auch, zumindest so wie ich das sehe, ganz andere Möglichkeiten bestehen.
PS: Bin ja mal gespannt wer sagt "wieso schreibst du sowas selbst das kann doch das Programm XYZ auch". Zum einen kenne ich Programm XYZ nicht und zum anderen hat es mir auch Spaß gemacht mich mal etwas in Batchscripte einzuarbeiten.