# ViewIT – Hauptlogik (`addon/default.py`) Dieses Dokument beschreibt den Einstiegspunkt des Addons und die zentrale Steuerlogik. ## Aufgabe der Datei `addon/default.py` ist der Router des Addons. Er: - lädt die Plugin‑Module dynamisch, - stellt die Kodi‑Navigation bereit, - übersetzt UI‑Aktionen in Plugin‑Aufrufe, - startet die Wiedergabe und verwaltet Playstate/Resume. ## Ablauf (high level) 1. **Plugin‑Discovery**: Lädt alle `addon/plugins/*.py` (ohne `_`‑Prefix). Bevorzugt `Plugin = `, sonst werden `BasisPlugin`‑Subklassen deterministisch instanziiert. 2. **Navigation**: Baut Kodi‑Listen (Serien/Staffeln/Episoden) auf Basis der Plugin‑Antworten. 3. **Playback**: Holt Stream‑Links aus dem Plugin und startet die Wiedergabe. 4. **Playstate**: Speichert Resume‑Daten lokal (`playstate.json`) und setzt `playcount`/Resume‑Infos. ## Routing & Aktionen Die Datei arbeitet mit URL‑Parametern (Kodi‑Plugin‑Standard). Typische Aktionen: - `search` → Suche über ein Plugin - `seasons` → Staffeln für einen Titel - `episodes` → Episoden für eine Staffel - `play` → Stream‑Link auflösen und abspielen Die genaue Aktion wird aus den Query‑Parametern gelesen und an das entsprechende Plugin delegiert. ## Playstate (Resume/Watched) - **Speicherort**: `playstate.json` im Addon‑Profilordner. - **Key**: Kombination aus Plugin‑Name, Titel, Staffel, Episode. - **Verwendung**: - `playcount` wird gesetzt, wenn „gesehen“ markiert ist. - `resume_position`/`resume_total` werden gesetzt, wenn vorhanden. ## Wichtige Hilfsfunktionen - **Plugin‑Loader**: findet & instanziiert Plugins. - **UI‑Helper**: setzt Content‑Type, baut Verzeichnisseinträge. - **Playstate‑Helper**: `_load_playstate`, `_save_playstate`, `_apply_playstate_to_info`. - **Metadata‑Merge**: Plugin‑Metadaten können TMDB übersteuern, TMDB dient als Fallback. ## Fehlerbehandlung - Plugin‑Importfehler werden isoliert behandelt, damit das Addon nicht komplett ausfällt. - Netzwerk‑Fehler werden in Plugins abgefangen, `default.py` sollte nur saubere Fehlermeldungen weitergeben. ## Debugging - Globale Debug‑Settings werden über `addon/resources/settings.xml` gesteuert. - Plugins loggen URLs/HTML optional (siehe jeweilige Plugin‑Doku). ## Änderungen & Erweiterungen Für neue Aktionen: 1. Neue Aktion im Router registrieren. 2. UI‑Einträge passend anlegen. 3. Entsprechende Plugin‑Methode definieren oder erweitern. ## Hinweis zur Erstellung Teile dieser Dokumentation wurden KI‑gestützt erstellt und bei Bedarf manuell angepasst.