Big news… Ich habe jetzt unzählige Stunden am Stück dran gesessen.
Mit Build 73 ist die Datenbank-Aktualisierung inzwischen deutlich intelligenter geworden. Eigentlich ist das mittlerweile schon fast eine kleine eigene „Reality AI“ innerhalb der App. 😅
Das Problem war bisher nämlich: Eine Datenbank kann natürlich wunderbar bestehende Shows aktualisieren. Aber woher soll die App wissen, dass plötzlich irgendwo eine komplett neue Reality-Show angekündigt wurde, die sie noch gar nicht kennt?
Ein gutes Beispiel ist „Maison Tabou“ auf RTLZWEI. Wenn „Maison Tabou“ nicht in meiner Datenbank existiert, bringt es mir überhaupt nichts, die vorhandenen Shows noch so intelligent zu überwachen. Die App muss erst einmal selbst herausfinden, dass es dieses neue Format überhaupt gibt.
Genau dafür gibt es jetzt zusätzlich eine eigene Discovery-Logik.
Die App durchsucht nicht mehr nur die hinterlegten Seiten bereits bekannter Shows, sondern zusätzlich zentrale Übersichtsquellen. Dazu gehören unter anderem Reality- und Entertainment-Seiten der Sender, Streaming-Neuheiten, Programmübersichten und weitere geeignete Quellen.
Findet die App dort einen Namen, den sie noch nicht kennt, wird aber nicht einfach blind eine neue Show in die Datenbank gekloppt.
Zuerst entsteht intern nur ein sogenannter „Discovery Candidate“. Vereinfacht könnte das zum Beispiel so aussehen:
Maison Tabou → unbekannt → RTLZWEI → Reality/Dating → möglicher Start 30.09.
Danach beginnt die eigentliche Verifikation.
Die App versucht den gefundenen Titel über weitere bekannte Quellen zu bestätigen. Dabei werden die Quellen unterschiedlich gewichtet. Eine offizielle Showseite von RTLZWEI ist beispielsweise ein sehr starkes Signal. Mehrere voneinander unabhängige vernünftige Quellen können ebenfalls eine entsprechend hohe Sicherheit ergeben. Eine einzige beiläufige Erwähnung irgendwo reicht dagegen nicht.
Gleichzeitig werden die Namen normalisiert. „Show XYZ“, „Show-XYZ“ oder unterschiedliche Groß- und Kleinschreibung sollen natürlich nicht dazu führen, dass plötzlich drei verschiedene Shows angelegt werden.
Daraus ergibt sich intern eine Art Confidence-System. Erst wenn die App genügend Vertrauen in den Fund hat, wird aus dem Kandidaten tatsächlich eine neue Show in der Datenbank.
Ist die Sicherheit noch nicht hoch genug, passiert erst einmal gar nichts. Der Kandidat bleibt intern gespeichert und wird bei einem der nächsten Datenbankläufe erneut überprüft. Nur echte Grenzfälle können im DEV-Bereich zur Kontrolle auftauchen.
Ich möchte nämlich gerade nicht jedes Mal selbst bestätigen müssen, wenn die App irgendwo etwas Neues findet. Das Ganze soll so weit wie möglich automatisch laufen.
Mit dem Anlegen einer neuen Show ist die Arbeit aber noch lange nicht erledigt.
Danach beginnt die App mit der Anreicherung des Datensatzes. Sie sucht nach Startdatum, Sender bzw. Streamingdienst, Sendeterminen und natürlich auch nach Teilnehmern.
Auch bei den Reality Stars gilt dasselbe Prinzip: Bereits bekannte Personen können direkt mit der neuen Show verknüpft werden. Unbekannte Namen werden zunächst als mögliche neue Reality Stars behandelt und ebenfalls geprüft. Sonst würde irgendwann jeder Moderator, Redakteur oder Name aus einem Beschreibungstext automatisch als Reality Star in der Datenbank landen. 😅
Besonders wichtig finde ich die sogenannte Re-Discovery.
Eine neue Show wird vielleicht heute angekündigt, aber es gibt noch keinen Starttermin. Damit ist sie für die App nicht „fertig“. Sie wird bei späteren Datenbankupdates automatisch wieder aufgegriffen.
So kann sich ein Datensatz nach und nach entwickeln:
entdeckt → verifiziert → angelegt → angereichert → laufend überwacht → beendet/archiviert
Heute weiß die App vielleicht nur: „Neue RTLZWEI-Realityshow angekündigt.“
Ein paar Tage später findet sie den offiziellen Titel und einen Starttermin. Danach werden die ersten Teilnehmer bekannt. Später kommen die konkreten Sendetermine dazu. Diese Informationen werden Schritt für Schritt ergänzt, ohne dass ich die Show jedes Mal manuell bearbeiten muss.
Gleichzeitig überwacht die App nicht alles permanent mit derselben Intensität. Eine aktuell laufende Staffel oder eine Show, die in zwei Wochen startet, ist natürlich wesentlich interessanter als eine Staffel, die seit einem halben Jahr beendet ist. Alte Shows werden deshalb seltener geprüft. Tauchen Hinweise auf eine neue Staffel auf, steigt ihre Priorität automatisch wieder.
Dazu kommt jetzt noch das automatische Quellenmanagement.
Eine einzelne URL ist nicht mehr einfach „die Quelle“. Für eine Show können mehrere Quellen zur Verfügung stehen. Fällt die bevorzugte Quelle wiederholt aus, testet die App automatisch bekannte Alternativen. Funktioniert eine davon, kann sie damit weiterarbeiten. Die defekte Quelle wird nicht ständig erneut abgefragt, sondern später noch einmal getestet.
Dabei unterscheidet die App auch zwischen verschiedenen Fehlern. HTTP 404, Timeout, eine von iOS blockierte Adresse, leere Daten oder eine Webseite, die zwar HTTP 200 liefert, deren Aufbau sich aber so verändert hat, dass keine Daten mehr erkannt werden, sind unterschiedliche Zustände.
Das ist wichtig: Nur weil ein Webserver „200 OK“ sagt, heißt das noch lange nicht, dass unsere Datenbank-Aktualisierung tatsächlich funktioniert hat.
Und vor allem darf eine kaputte Quelle niemals gute vorhandene Daten zerstören. Wenn beispielsweise eine Seite plötzlich keine Teilnehmer mehr liefert, bedeutet das nicht automatisch, dass die Show keine Teilnehmer mehr hat. Bestehende bestätigte Daten bleiben erhalten, bis es belastbare Informationen für eine tatsächliche Änderung gibt.
Was das Ganze im Hintergrund gemacht hat, kann ich über mein verstecktes DEV-Menü nachvollziehen. Dort gibt es inzwischen ein verständliches Automatik-Protokoll. Also nicht nur irgendwelche Entwicklercodes, sondern beispielsweise:
„Primärquelle ausgefallen. Ersatzquelle geprüft und funktioniert. Datenversorgung automatisch umgestellt. Keine Aktion erforderlich.“
Oder:
„Neue Show entdeckt. Noch nicht ausreichend bestätigt. Wird beim nächsten Update erneut geprüft.“
Erst wenn die App ihre bekannten Möglichkeiten wirklich ausgeschöpft hat, erscheint dort „Reparatur erforderlich“. Dann weiß ich, dass tatsächlich etwas manuell geprüft werden muss.
Das ist für mich auch das eigentliche Ziel der ganzen Geschichte: Ich möchte irgendwann möglichst wenig an der Datenbank selbst herumfummeln müssen.
Die App soll neue Shows selbst entdecken, Funde verifizieren, Informationen nach und nach ergänzen, Reality Stars zuordnen, bestehende Shows überwachen, kaputte Quellen möglichst selbst umgehen und mir am Ende nur noch sagen, wenn sie wirklich nicht mehr alleine weiterkommt.
Für eine kleine Reality-TV-App ist das inzwischen schon ziemlich verrückt. Aus dem ursprünglichen „Lade ein paar Daten aus dem Internet“ ist mittlerweile tatsächlich eine kleine Reality AI geworden. 😅