Hallo @marky0736,
Sorry hat etwas länger gedauert, da ich bis jetzt nur Updates für Filme durchgeführt habe. Serien musste ich mir erstmal anschauen.
Der "wichtige" Punkt ist relativ. Wenn lastPlayed unwichtig ist und der Film-xyz ein playCount >= 1 auf irgendeiner alten Datenbank hat, dann ist alles Bestens.
Zu erwähnen wäre noch:
1.
Filme die in verschiedenen Auflösungen vorliegen, werden gleichbehandelt.
Also der Film-xyz wurde schon in PAL-Auflösung gesehen, aber der Film-xyz in HD-Auflösung noch nicht. Nach dem Update hat Film-xyz in HD-Auflösung aber auch den selben playCount.
Kann man verhindern, aber ich hab das erstmal weggelassen. Hoffe der Punkt ist nicht wichtig.
2.
Die resume oder bookmark position in der Tabelle bookmark falls vorhanden, geht verloren.
Kann man auch übernehmen, aber ich hab das erstmal weggelassen. Hoffe der Punkt ist nicht wichtig.
3.
Für Serienepisoden sollten unbedingt 'Episode Title' und 'First Aired' vorhanden sein.
Was macht das UPDATE script:
- wenn Filmtitel + Jahr übereinstimmen erfolgt ein Update
- wenn Episodentitel + First Aired übereinstimmen erfolgt ein Update
- drei Einträge werden in der Tabelle files aktualisiert:
-- gesehen (playCount) (z.B "2" = bisher zweimal gesehen)
-- wann zuletzt abgespielt (lastPlayed)
-- wann hinzugefügt (dateAdded)
Vorbedingungen:
Um die Kodi-Datenbank zu bearbeiten benötigen wir einen DB-Editor (z.B. 'DB Browser for SQLite'): DB Browser for SQLite
Pfad zur Kodi Film/Serien Datenbank (Master User):
...\Kodi\userdata\Database\MyVideos<number>.db
Wichtig: Mit dem DB-Editor arbeiten wir zur Sichheit NUR auf Kopien.
zum Beispiel:
alte Datenbank | neue Datenbank | Name der Kopie
----------------------------------------------------
MyVideos116.db | - | MyVideos116old1.db
MyVideos116.db | - | MyVideos116old2.db
MyVideos116.db | - | MyVideos116old3.db
- | MyVideos116.db | MyVideos116new.db
Folgende Anleitung wurde getestet mit Kodi v18.8.
1.0 DB-Editor starten und via tab 'Datenbank öffnen' > 'MyVideos116old1.db' auswählen.
Mit diesem Befehl (unter tab 'SQL ausführen' eintragen und ausführen ">") kann man alle Filme/Serien anzeigen, die schon mal gesehen wurden:
SELECT
m.c00 AS Filmtitel,
m.premiered AS Jahr,
t.c00 AS Serie,
e.c00 AS Episodentitel,
e.c05 AS First_Aired,
f.playCount,
f.lastPlayed,
f.dateAdded
FROM files f
LEFT JOIN movie m ON f.idFile = m.idFile
LEFT JOIN episode e ON f.idFile = e.idFile
LEFT JOIN tvshow t ON e.idShow = t.idShow
WHERE f.playCount IS NOT NULL
ORDER BY m.c00, t.c00, e.c12, e.c13;
Alles anzeigen
1.1 Movie View erstellen:
CREATE VIEW playCount_m_v AS
SELECT
m.c00,
m.premiered,
f.playCount,
f.lastPlayed,
f.dateAdded
FROM files f, movie m
WHERE f.idFile = m.idFile
AND f.playCount IS NOT NULL
ORDER BY m.c00;
Alles anzeigen
1.2 Episode View erstellen:
CREATE VIEW playCount_e_v AS
SELECT
e.c00,
e.c05,
f.playCount,
f.lastPlayed,
f.dateAdded
FROM files f, episode e
WHERE f.idFile = e.idFile
AND f.playCount IS NOT NULL
ORDER BY e.c12, e.c13;
Alles anzeigen
1.3 Speichern der Änderung via Menüpunkt 'Änderungen schreiben'. Danach Datenbank schließen ('Datei' > 'Datenbank schließen').
2.0 Tab 'Datenbank öffnen' > 'MyVideos116new.db' öffnen.
2.1 Menüpunkt 'Datei' > 'Datenbank anhängen' > die alte Datenbank 'MyVideos116old1.db' anhängen mit Datenbankname = 'MyVideos116old1'
2.2 Movie TABLE erstellen:
CREATE TABLE playCount_m AS
SELECT * FROM MyVideos116old1.playCount_m_v;
2.3 Episode TABLE erstellen:
CREATE TABLE playCount_e AS
SELECT * FROM MyVideos116old1.playCount_e_v;
2.4 Movie VIEW erstellen:
CREATE VIEW playCount_m_new_v AS
SELECT
m.idFile,
m.c00,
m.premiered,
pm.playCount,
pm.lastPlayed,
pm.dateAdded
FROM movie m, playCount_m pm
WHERE pm.c00 = m.c00
AND pm.premiered = m.premiered;
Alles anzeigen
2.5 Episode VIEW erstellen:
CREATE VIEW playCount_e_new_v AS
SELECT
e.idFile,
e.c00,
e.c05,
pe.playCount,
pe.lastPlayed,
pe.dateAdded
FROM episode e, playCount_e pe
WHERE pe.c00 = e.c00
AND pe.c05 = e.c05;
Alles anzeigen
2.6 Movie UPDATE durchführen:
UPDATE files
SET playCount = (SELECT playCount_m_new_v.playCount FROM playCount_m_new_v
WHERE playCount_m_new_v.idFile = files.idFile),
lastPlayed = (SELECT playCount_m_new_v.lastPlayed FROM playCount_m_new_v
WHERE playCount_m_new_v.idFile = files.idFile),
dateAdded = (SELECT playCount_m_new_v.dateAdded FROM playCount_m_new_v
WHERE playCount_m_new_v.idFile = files.idFile)
WHERE EXISTS (SELECT * FROM playCount_m_new_v
WHERE playCount_m_new_v.idFile = files.idFile);
2.7 Episode UPDATE durchführen:
UPDATE files
SET playCount = (SELECT playCount_e_new_v.playCount FROM playCount_e_new_v
WHERE playCount_e_new_v.idFile = files.idFile),
lastPlayed = (SELECT playCount_e_new_v.lastPlayed FROM playCount_e_new_v
WHERE playCount_e_new_v.idFile = files.idFile),
dateAdded = (SELECT playCount_e_new_v.dateAdded FROM playCount_e_new_v
WHERE playCount_e_new_v.idFile = files.idFile)
WHERE EXISTS (SELECT * FROM playCount_e_new_v
WHERE playCount_e_new_v.idFile = files.idFile);
Mit dem script vom Anfang kann man dann überprüfen ob alles korrekt ist.
Wenn man möchte, kann man unter tab 'Datenbankstruktur' die erstellten Views und Tabellen wieder löschen (zuerst die View(s) löschen dann die Tabelle(n)).
2.8 Speichern der Änderung via Menüpunkt 'Änderungen schreiben'.
Die Punkte 1.0 bis 2.8 muss man jetzt noch für die alten Datenbanken MyVideos116old2.db und MyVideos116old3.db abarbeiten.
Achtung, beim Erstellen der Tabellen ('playCount_m' und 'playCount_e') die Nummern entsprechend anpassen:
"... SELECT * FROM MyVideos116old<number>.playCount_ ..."
Hoffe, mir ist kein Fehler unterlaufen und die Anleitung ist halbwegs verständlich. Falls Fragen auftreten einfach melden.
MfG