76 lines
2.6 KiB
Markdown
76 lines
2.6 KiB
Markdown
# ViewIT – Entwicklerdoku Plugins (`addon/plugins/*_plugin.py`)
|
||
|
||
Diese Doku beschreibt, wie Plugins im ViewIT‑Addon aufgebaut sind und wie neue Provider‑Integrationen entwickelt werden.
|
||
|
||
## Grundlagen
|
||
- Jedes Plugin ist eine einzelne Datei unter `addon/plugins/`.
|
||
- Dateinamen **ohne** `_`‑Prefix werden automatisch geladen.
|
||
- Jede Datei enthält eine Klasse, die von `BasisPlugin` erbt.
|
||
|
||
## Pflicht‑Methoden (BasisPlugin)
|
||
Jedes Plugin muss diese Methoden implementieren:
|
||
- `async search_titles(query: str) -> list[str]`
|
||
- `seasons_for(title: str) -> list[str]`
|
||
- `episodes_for(title: str, season: str) -> list[str]`
|
||
|
||
## Optionale Features (Capabilities)
|
||
Über `capabilities()` kann das Plugin zusätzliche Funktionen anbieten:
|
||
- `popular_series` → `popular_series()`
|
||
- `genres` → `genres()` + `titles_for_genre(genre)`
|
||
- `latest_episodes` → `latest_episodes(page=1)`
|
||
|
||
## Empfohlene Struktur
|
||
- Konstanten für URLs/Endpoints (BASE_URL, Pfade, Templates)
|
||
- `requests` + `bs4` optional (fehlt beides, Plugin sollte sauber deaktivieren)
|
||
- Helper‑Funktionen für Parsing und Normalisierung
|
||
- Caches für Such‑, Staffel‑ und Episoden‑Daten
|
||
|
||
## Suche (aktuelle Policy)
|
||
- **Nur Titel‑Matches**
|
||
- **Substring‑Match** nach Normalisierung (Lowercase + Nicht‑Alnum → Leerzeichen)
|
||
- Keine Beschreibung/Plot/Meta für Matches
|
||
|
||
## Namensgebung
|
||
- Plugin‑Klassenname: `XxxPlugin`
|
||
- Anzeigename (Property `name`): **mit Großbuchstaben beginnen** (z. B. `Serienstream`, `Einschalten`)
|
||
|
||
## Settings pro Plugin
|
||
Standard: `*_base_url` (Domain / BASE_URL)
|
||
- Beispiele:
|
||
- `serienstream_base_url`
|
||
- `aniworld_base_url`
|
||
- `einschalten_base_url`
|
||
- `topstream_base_url`
|
||
|
||
## Playback
|
||
- Wenn möglich `stream_link_for(...)` implementieren.
|
||
- Optional `available_hosters_for(...)`/`resolve_stream_link(...)` für Hoster‑Auflösung.
|
||
|
||
## Debugging
|
||
Global gesteuert über Settings:
|
||
- `debug_log_urls`
|
||
- `debug_dump_html`
|
||
- `debug_show_url_info`
|
||
|
||
Plugins sollten die Helper aus `addon/plugin_helpers.py` nutzen:
|
||
- `log_url(...)`
|
||
- `dump_response_html(...)`
|
||
- `notify_url(...)`
|
||
|
||
## Template
|
||
`addon/plugins/_template_plugin.py` dient als Startpunkt für neue Provider.
|
||
|
||
## Build & Test
|
||
- ZIP bauen: `./scripts/build_kodi_zip.sh`
|
||
- Addon‑Ordner: `./scripts/build_install_addon.sh`
|
||
|
||
## Beispiel‑Checkliste
|
||
- [ ] `name` korrekt gesetzt
|
||
- [ ] `*_base_url` in Settings vorhanden
|
||
- [ ] Suche matcht nur Titel
|
||
- [ ] Fehlerbehandlung und Timeouts vorhanden
|
||
- [ ] Optional: Caches für Performance
|
||
|
||
## Hinweis zur Erstellung
|
||
Teile dieser Dokumentation wurden KI‑gestützt erstellt und bei Bedarf manuell angepasst.
|