# ViewIT Plugin System

Dieses Dokument beschreibt Laden, Vertrag und Betrieb der Plugins.

## Ueberblick
Der Router laedt Provider Integrationen aus `addon/plugins/*.py`.
Aktive Plugins werden instanziiert und im UI genutzt.

Relevante Dateien:
- `addon/default.py`
- `addon/plugin_interface.py`
- `docs/DEFAULT_ROUTER.md`
- `docs/PLUGIN_DEVELOPMENT.md`

## Aktuelle Plugins
- `serienstream_plugin.py`
- `topstreamfilm_plugin.py`
- `einschalten_plugin.py`
- `aniworld_plugin.py`
- `filmpalast_plugin.py`
- `dokustreams_plugin.py`
- `_template_plugin.py` (Vorlage)

## Discovery Ablauf
In `addon/default.py`:
1. Finde `*.py` in `addon/plugins/`
2. Ueberspringe Dateien mit `_` Prefix
3. Importiere Modul
4. Nutze `Plugin = <Klasse>`, falls vorhanden
5. Sonst instanziiere `BasisPlugin` Subklassen deterministisch
6. Ueberspringe Plugins mit `is_available = False`

## Basis Interface
`BasisPlugin` definiert den Kern:
- `search_titles`
- `seasons_for`
- `episodes_for`

Weitere Methoden sind optional und werden nur genutzt, wenn vorhanden.

## Capabilities
Plugins koennen Features aktiv melden.
Typische Werte:
- `popular_series`
- `genres`
- `latest_episodes`
- `new_titles`
- `alpha`
- `series_catalog`

Das UI zeigt nur Menues fuer aktiv gemeldete Features.

## Metadaten Quelle
`prefer_source_metadata = True` bedeutet:
- Quelle zuerst
- TMDB nur Fallback

## Stabilitaet
- Keine Netz Calls im Import Block.
- Fehler im Plugin muessen lokal behandelt werden.
- Ein defektes Plugin darf andere Plugins nicht blockieren.

## Build
Kodi ZIP bauen:

```bash
./scripts/build_kodi_zip.sh
```

Ergebnis:
`dist/plugin.video.viewit-<version>.zip`
