# 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.