72 lines
1.6 KiB
Markdown
72 lines
1.6 KiB
Markdown
# 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`
|