Watched-Flags aus mehreren Datenbanken zusammenführen

  • Hallo Shuddery,

    man könnte alles (Filme, Serien und Dateien) auf einmal machen, aber wenn DVDs-/Blu-rays mit Ordnerstruktur vorhanden sind, funktioniert es nicht.
    Wer nur eindeutige Dateinamen (files.strFilename) hat, kann alles in einem Rutsch machen.

    Das Überschreiben von playCount, lastPlayed und dateAdded habe ich schon mit Marky geklärt. Das wichtigste ist der playcount > 0.
    Falls z.B. playCount=3 mit playCount=1 überschrieben wird -> kein Problem

    Den Hinweis, dass man zur Sicherheit nur auf einer Kopie der Datenbank arbeiten soll, habe ich von der alten Anleitung nochmal in die neue kopiert.
    Man kann das gar nicht oft genug sagen/schreiben.

    MfG

    Testumgebung - OS: Ubuntu 20.04 LTS | Kodi 19.1 | skin: Rapier 12.2.26 + Transparency! (views Slide und Fanart) | für Datenbank-/ Skin Tests
    Live Umgebung - OS: Ubuntu 16.04.3 LTS | Kodi 17.6 | skin: Transparency! 10.3.0 | TV

  • Hallo alle zusammen!

    Nach anfänglichen Schwierigkeiten hat es nun am Ende funktioniert. Die Serien habe ich nicht ausprobiert, da gibt es doch recht viele doppelte Dateinamen (bei mir 64), die sich auch nicht leicht vermeiden lassen, manche Serien haben eben nur "Episode 1" oder "Teil 1" als Episodentitel.

    Vielleicht noch ein paar Erfahrungen für alle, die es gerne ausprobieren möchten:

    Wenn die "UPDATE" Methode benutzt wird, ist es wichtig, dass man im Dateimodus alle Pfade aufgeruft hat, so dass diese in die Datenbank aufgenommen werden. Das ist leider etwas mühsam, mein "Dokus" Ordner z.B hatte 154 Unterordner, die ich dann einzeln aufrufen musste. Aber es ist logisch, man kann den Playcount nur für Einträge setzen, die schon in der Datenbank sind.

    Zudem sollte man die erstellten .SQL-Dateien, die man dann auf die Datenbank anwenden möchte, auf ihre Größe prüfen. Der Vorgang dauert (jedenfalls bei mir) sehr sehr lang, wir sprechen da gut und gerne von 10-15 Minuten. Zunächst hatte meine Movies.SQL ca. 340 KB und wenn ich das am Stück auf die Datenbank angewendet habe, dann gab es einen Timeout-Error von phpMyAdmin, weil der Server so lange nicht erreichbar war. Daher habe ich die Datei dann in drei Teile aufgeteilt, bis 150 KB war es dann jedenfalls bei mir kein Problem mehr.

    Jetzt muss ich irgendwie noch herausfinden, wie ich die super-duper Datenbank, die ich jetzt habe, irgendwie sichern kann. Die Kopie, die ich von meiner ersten Datenbank gemacht habe, war unbrauchbar und ich habe keine Ahnung warum.

    Zugleich noch eine neue Frage: mit dieser Methode müsste es doch auch möglich sein, die in meiner ursprünglichen Datenbank gespeicherten "DateAdded" Einträge für Filme auszulesen und sie dann auch entsprechend umzuwandeln? Das wäre wirklich genial, wenn ich das auch noch hinbekäme, denn meine alte Datenbank beginnt im Jahr 2002 und ich fände es einfach schade, das zu verlieren. Vielleicht kannst Du mir da auf die Sprünge helfen!

    Grüße und nochmals tausend Dank!

  • Hallo Marky,

    doppelte Episodentitel stellen kein Problem dar, wenn First Aired unterschiedlich ist. Im Prinzip sollte das eigentlich so sein.
    Ein Update wird nur durchgeführt, wenn 'Episodentitel' und 'First Aired' übereinstimmen.

    Wie schon geschrieben:
    Wichtig: 'Episodentitel' und 'First Aired' MUSS immer vorhanden sein!

    Mit dem folgenden SQL statement kann man sich für Serien alle doppelten Episoden + First Aired anzeigen lassen:

    SQL
    SELECT 
     t.c00 AS Serie,
     e.c00 AS Episodentitel,
     e.c05 AS First_Aired
     FROM episode e, tvshow t
     WHERE e.idShow = t.idShow
     AND (e.c00, e.c05) IN (SELECT e.c00, e.c05 FROM episode e GROUP BY e.c00, e.c05 HAVING COUNT(e.c00) > 1)
     ORDER BY t.c00, e.c12, e.c13;


    Deine Frage zu "dateAdded" verstehe ich noch nicht ganz.
    Wie man im UPDATE script für Filme und Serien sehen kann, wird "dateAdded" auch für die neue Datenbank aktualisiert.

    MfG

    Testumgebung - OS: Ubuntu 20.04 LTS | Kodi 19.1 | skin: Rapier 12.2.26 + Transparency! (views Slide und Fanart) | für Datenbank-/ Skin Tests
    Live Umgebung - OS: Ubuntu 16.04.3 LTS | Kodi 17.6 | skin: Transparency! 10.3.0 | TV

  • Hallo JakeB,

    Danke noch für die Ergänzung, falls es mir die Datenbank mal zerschießt oder ich sie aus sonst einem Grund neue aufbauen müsste, werde ich es mal ausprobieren, derzeit ist meine Datenbank bei den Serien ja jetzt von Hand gepflegt und damit unter Garantie zu 100% richtig - der einzig große Vorteil von Handarbeit :)

    Zur Frage von Date-Added: In meiner neuen Datenbank (nach der Umstellung auf die zentrale Datenbank) hat bei DateAdded jetzt eben bei allen Filmen den 7.11.2020 stehen! Das stimmt aber natürlich nicht. Meine alte Datenbank vom Wohnzimmer hat für alle Filme den Zeitpunkt, zu dem sie tatsächlich zur Datenbank hinzugefügt wurden - und wenn ich das transferieren könnte, wäre das natürlich der Gipfel des Glücks. So wie ich es gesehen habe (und wie Du ja auch schreibst), wird das ja für die Filme, die das Watched-Flag haben, sowieso schon gemacht, es wäre aber natürlich super, wenn man es für einfach alle Filme haben könnte, das Verfahren dürfte sich kaum unterscheiden, jetzt wo wir den UPDATE-Trick von Shuddery kennen. Vermutlich ist die Abfrage sogar einfacher.

    Grüße und Dank!

  • Hallo Marky,

    dateAdded für playCount IS NULL ... kein Problem.


    dateAdded aus einer alten Kodi-Datenbank auf die neue Kodi-Datenbank übertragen (für playCount IS NULL)

    1.0 Suche nach Filmen mit playCount IS NULL in der Bibliothek (Datenbank: MyVideos<number>old1.db):

    SQL
    SELECT
     m.c00, -- Filmtitel
     m.premiered, -- Jahr 
     f.dateAdded
     FROM movie m, files f
     WHERE m.idFile = f.idFile
     AND f.playCount IS NULL
     ORDER BY m.c00, m.premiered;


    Find what:
    .* VALUES \('(.*)', '(.*)', '(.*)'\);

    Replace with:

    SQL
    UPDATE files SET dateAdded = '\3' WHERE idFile IN \(SELECT idFile FROM movie WHERE c00 = "\1" AND premiered = '\2'\);

    2.0 Suche nach Serienepisoden mit playCount IS NULL in der Bibliothek (Datenbank: MyVideos<number>old1.db):
    Wichtig: 'Episodentitel' und 'First Aired' MUSS immer vorhanden sein!

    SQL
    SELECT 
     e.c00, -- Episodentitel
     e.c05, -- First Aired 
     f.dateAdded
     FROM episode e, files f
     WHERE e.idFile = f.idFile  
     AND f.playCount IS NULL
     ORDER BY e.c00, e.c05


    Find what: das selbe wie in 1.0

    Replace with:

    SQL
    UPDATE files SET dateAdded = '\3'  WHERE idFile IN \(SELECT idFile FROM episode WHERE c00 = "\1" AND c05 = '\2'\);


    Hinweis:
    Das Feld playCount MUSS bei der Suche 'NULL' sein. DB Browser > Tabelle files > der hellgraue Wert 'NULL' muss vorhanden sein
    Hatte früher mal das Problem, dass ein Update denn playCount auf leer setzte. Habe mich dann gewundert warum mein UPDATE script nicht mehr funktioniert.
    Das Problem war der fehlende Wert 'NULL'. Lässt sich aber wieder korrigieren.

    MfG

    Testumgebung - OS: Ubuntu 20.04 LTS | Kodi 19.1 | skin: Rapier 12.2.26 + Transparency! (views Slide und Fanart) | für Datenbank-/ Skin Tests
    Live Umgebung - OS: Ubuntu 16.04.3 LTS | Kodi 17.6 | skin: Transparency! 10.3.0 | TV

  • Hallo liebe Mitleser!

    Es hat funktioniert. Super Sache. Mal sehen, ob es noch Sachen gibt, die man sinnvollerweise aus der alten Datenbank übernehmen kann. Langsam verstehe ich auch das Prinzip besser und vielleicht bekomme ich ja selbst mal was hin! Danke nochmals für den Support!

    Grüße

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!