Anmerkungen, die sich aus der Code-Analyse ergeben:
"Logo und Vorschaubilder löschen" ist irreführend. Es löscht nur skalierte Logos und Vorschaubilder in der Logos.db3, die produziert und dort abgelegt werden, wenn Clients sie mit einem Width oder Height-Parameter anfordern (siehe auch hier). Die Originale in Konfigurationsordner\Images\Thumbs\Recordings\ und Installationsordner\Images\Logos bleiben erhalten. Besser: "Logo- und Vorschaubilder-Cache löschen".
Die Statistiken tauchen bei UPnP bzw. auf der Medienseite des Webinterface im UI auf, z.B. Aufnahmen -> Wiedergabelisten -> Häufig gespielt. Aktualisiert wurden sie bislang nur beim Abruf von Dateien über den Media Streamserver, nicht dagegen im Webserver -> gerade geändert. Von einem Neuaufbau der Datenbank bleiben die Statistiken unberührt.
"Alle Datenbanken aktualisieren" bezieht die Aufnahmedatenbank nicht mit ein und ist deshalb etwas irreführend. "Video, Audio und Bilder-Datenbank aktualisieren" wäre zutreffender. Hier gibt es ähnlich wie bei der Aufnahmedatenbank die Flags "enabled" und "found" in der Tabelle "objects". Bei nicht existierenden Dateien setzt die Aktualisierung enabled = 0 und found=0, mit der Folge, dass die Einträge in den Webinterfaces und bei UPnP nicht mehr erscheinen.
"Video/Audio/Bildersammlung neu aufbauen" unterscheidet sich von "Alle Datenbanken aktualisieren" nur dadurch, dass der DMS im ersteren Fall die betreffende Datenbank vorher löscht. Ansonsten sind die Aufrufe identisch, d.h. es werden immer alle drei Datenbanken aktualisiert, soweit ich im Moment sehen kann. Verfiziert: Nach Aufgaben -> Audiosammlung neu aufbauen gab es unter Medien -> Videos im Vergleich zu vorher ein paar zusätzliche Einträge, die in letzter Zeit hinzugekommen sind.
"Videosammlung aufräumen" entfernt alle nicht mehr auf der Festplatte existierenden Verzeichnis- (Type=2) und Dateieinträge (Type=3) aus den Tabellen objects, object_details und paths. Außerdem werden bei Dateien die dazugehörigen Vorschaubilder von der Festplatte gelöscht (nicht jedoch aus der Logos.db3).
In der Videodatenbank gibt es eine unbenutzte (und deshalb leere) Tabelle „genres“.
Interne Datenbank-Vorgänge:
DropCreateTable entfernt die in der Datenbank enthaltenen Tabellen außer Statistics und legt sie neu an. Wird bei „Datenbank neu aufbauen“ verwendet.
ClearTable leert die in der Datenbank enthaltenen Tabellen außer Statistics, d.h. danach enthalten sie 0 Einträge. Die Tabellen selbst bleiben jedoch erhalten. Wird nur bei der Logo-Datenbank mit skalieren Bildern verwendet (→ Logo- und Vorschaubild-Cache löschen).
CleanUp löscht alle auf Laufwerken nicht mehr vorhandene Pfade und Dateien.
ClearStats leert die in der Datenbank enthaltene Tabelle Statistics, d.h. sie enthält danach 0 Einträge.
Zu den Mechanismen der Aufnahmedatenbank:
Die Aufnahme-Historie befindet sich nicht in einer separaten Datenbank, sondern in einer Tabelle "recordedlist" der Aufnahme-Datenbank (SvcDatabase.db3). Sie wird im Code nur an einer Stelle gelesen: Bei der Erstellung von Auto-Timern ("Auto-Timer deaktivieren bei gleichem Aufnahme-Titel/Info").
Bei "Historie wieder aufbauen" werden Einträge, die in der Tabelle "recordedlist" fehlen, aus der Tabelle "recordings" ergänzt. Es handelt sich also um einen datenbankinternen Vorgang. Wenn man Aufnahmen von einem anderen PC kopiert hat, muss man erst die Aufnahme-Datenbank aktualisieren, bevor man die Historie aktualisieren kann. Deshalb liegt es nahe, das zusammenzufassen.
"Aufnahmen
-> Datenbank aktualisieren"
liest in sämtlichen Aufnahmeverzeichnissen von Aufnahmen, die
noch nicht in der Tabelle "recordings" vorhanden sind (!),
erst die NTFS Datei-Infos, und falls nicht vorhanden, die EPG-Infos
in den *.txt-Dateien. Danach werden die dazugehörigen Einträge
in "recordings" und "recordedlist" (also der
Historie) ergänzt und Vorschaubilder in
Konfigurationsordner\Images\Thumbs\Recordings\ erzeugt.
Ein Löschen von Einträgen nicht mehr vorhandener Aufnahmen
findet offenbar nicht statt. Insofern trifft "aktualisieren"
nicht ganz zu.
Korrektur: Diese Aussage ist nicht ganz richtig. Beim Aktualisieren
verbleiben im Gegensatz zum Aufräumen (s.U.) nicht mehr
vorhandene Aufnahmen in der DB bzw. in der Tabelle recordings, aber
es werden zwei Flags "Enabled" und "Found" auf 0
gesetzt, wonach die Aufnahmen weder im Webinterface noch bei UPnP
oder im API erscheinen.
"Aufnahmen -> Datenbank aufräumen" überprüft, ob Aufnahmen höchstpersönlich (nicht die Info-Dateien) auf der Festplatte vorhanden sind und (!) ob sie sich in einem Aufnahmeordner befinden. Falls nicht, werden sie aus der Tabelle "recordings" entfernt. Außerdem werden die dazugehörigen Vorschaubilder von der Festplatte gelöscht (nicht jedoch aus der Logos.db3) und die Tabelle "Video" mit Videodaten bereinigt.
Bereits beim Aufnahmestart legt der DMS einen Eintrag in der Aufnahmedatenbank an (so dass er in den Webinterfaces sofort unter Aufnahmen erscheinen kann). Er wird beim Aufnahmeende aktualisiert, falls erst zu diesem Zeitpunkt EPG-Daten verfügbar sind,
Es gibt keinen Neuaufbau (= Löschen + Aktualisieren) der Aufnahmedatenbank. Die Funktion, die die Tabelle recordings löscht, wird im DMS nicht benutzt. Man kann es durch Löschen der SvcDatabase.db3 erzwingen.
Eine Bereinigung entfernt alle Einträge, bei denen die Datei nicht existiert oder sich nicht (mehr) in einem Aufnahmeverzeichnis befindet.
Eine Aktualisierung erfasst neue oder geänderte Aufnahmen (sofern es ein NTFS Datei-Info oder eine EPG Info-Datei gibt). Geändert heißt hier: Der Erzeugungszeitpunkt (Zeitstempel) der Aufnahme oder .txt-Datei hat sich geändert. Die Einträge für nicht mehr auffindbare Aufnahmen werden nicht gelöscht, sondern nur mit enabled=0 und found=0 markiert, wodurch sie aus den Webinterfaces verschwinden. Nach dem Entfernen einer Aufnahme, DB-Aktualisierung, Wiederherstellen und erneuter DB-Aktualisierung ist sie im UI wieder vorhanden.
Wenn man eine Video-Datei ohne NTFS Datei-Info und EPG Info-Datei in einen Aufnahmeordner kopiert, wird sie bei einer Aktualisierung nicht erfasst. Allerdings wird ein Vorschaubild im Konfigurationsordner\Images\Thumbs\Recordings erzeugt, was nicht unbedingt Sinn macht (?).
Bei einer Aktualisierung werden keine Videodaten und sonstige Datei-Interna erfasst, d.h. wenn dabei neue Einträge in der Datenbank entstehen, weiß der DMS nicht, was in der Datei drin ist, ob es sich um eine TV/Radio-Aufnahme handelt, kennt die Spieldauer nicht (nur die nominelle laut EPG) usw. Die informationen werden erst später bei Wiedergabe via Webserver oder durch UPnP-Mechanismen erfasst und in der DB gespeichert.
Angenommen, eine Aufnahme wird mit den von Tjod gestalteten Presets transkodiert. Es gibt dann z.B. MeineAufnahme.ts und MeineAufnahme.mp4 mit gemeinsamer (!) .txt-Datei. Beide werden im Webinterface aufgezählt. Nun löscht man dort MeineAufnahme.ts, weil man ja die .mp4 hat. Der DMS löscht auch die .txt-Datei. Was passiert nun bei einer Aktualisierung? So gut wie nichts. Der DMS setzt nur den in der DB notierten Zeitstempel der .txt-Datei auf 0.
Fazit: Was einmal in der Aufnahmedatenbank drin ist, bleibt unabhängig von NTFS Datei Info und der EPG Info-Datei drin, es sei denn, man löscht die Aufnahme höchstpersönlich oder entzieht dem Ordner den Status "Aufnahmeverzeichnis" und führt dann eine Bereinigung durch (s.o.).
Angesichts der obigen Analyse und der Tatsache, dass bei einer Aktualisierung gelöschte Aufnahmen ohnehin deaktiviert in der Aufnahmedatenbank verbleiben, fragt man sich, was die Aufnahme-Historie eigentlich soll.
IMO kann man sie ersatzlos streichen, wenn man zukünftig die deaktivierten Einträge in der Tabelle recordings bei der Erstellung von Auto-Timern (eventuell optional) mit einbezieht. Das Handling wäre viel übersichtlicher: Es gäbe dann bei der Aufnahmedatenbank neben "Statistik löschen" nur noch "Aktualisieren" und "Bereinigen", wobei letzteres sämtliche Einträge für nicht mehr vorhandene Aufnahmen löscht. Wenn das Webinterface sie auf der Aufnahmeseite als spezielle Kategorie anzeigt und wie bei vorhandenen Aufnahmen ermöglicht, sie manuell selektiv oder alle auf einmal zu löschen, könnte sogar "Bereinigen" entfallen.