# 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 = <Klasse>`, 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.
