dev: bump to 0.1.66 and harden resolveurl + serienstream

This commit is contained in:
2026-02-25 16:35:16 +01:00
parent 74d15cb25e
commit 73f07d20b4
20 changed files with 522 additions and 232 deletions

65
docs/ARCHITECTURE.md Normal file
View File

@@ -0,0 +1,65 @@
## ViewIT Architekturüberblick
Dieses Dokument fasst die wichtigsten Kernmodule des Addons und ihre Aufgaben zusammen.
Es ergänzt die Detaildokumente `DEFAULT_ROUTER.md` und `PLUGIN_SYSTEM.md`.
### Ebenen und Verantwortlichkeiten
- **Router (`addon/default.py`)**
- Einstiegspunkt aus Kodi (Parsing von `sys.argv`).
- Lädt und verwaltet alle Plugins (Discovery, Instanziierung, Fehlerisolation).
- Baut die Kodi-Menüs (Titel-, Staffel-, Episodenlisten, Spezialmenüs).
- Mapped UIAktionen (`search`, `seasons`, `episodes`, `play_*`) auf Plugin-Methoden.
- Startet Playback und hält Kodi-Playstate konsistent (Resume/Watched).
- **Plugin-Vertrag (`addon/plugin_interface.py`)**
- Definiert `BasisPlugin` als zentrale abstrakte Basisklasse.
- Kern-API:
- `search_titles(query, progress_callback?)`
- `seasons_for(title)`
- `episodes_for(title, season)`
- Optionale Fähigkeiten:
- Stream-Auflösung (`stream_link_for`, `resolve_stream_link`)
- Metadaten (`metadata_for`, `genres`, `titles_for_genre`, `popular_series`, `capabilities`).
- Dient als Referenz für alle konkreten Provider in `addon/plugins/`.
- **Plugin-Hilfen (`addon/plugin_helpers.py`)**
- Zugriff auf Addon-Settings als String/Bool/Int (robust, auch außerhalb von Kodi).
- Optionale URLBenachrichtigungen im UI (`notify_url`).
- Strukturierte Logging-Helfer (`log_url`, `log_error`, `dump_response_html`) mit Rotationslogik.
- Normalisierung von speziellen Stream-URLs (`normalize_resolved_stream_url`).
- Fokus: Wiederverwendbare Infrastruktur für alle Plugins, ohne deren Kernlogik zu vermischen.
- **HTTP Session Pool (`addon/http_session_pool.py`)**
- Verwaltet wiederverwendete `requests.Session`Instanzen pro Schlüssel.
- Ziel: TCPVerbindungen und Cookies über mehrere Requests hinweg wiederverwenden.
- Bietet `get_requests_session(key, headers?)` und `close_all_sessions()`.
- Wird von Plugins oder Hilfsmodulen genutzt, die viele HTTPAufrufe pro Sitzung machen.
- **TMDB-Integration (`addon/tmdb.py`)**
- Kapselt alle Zugriffe auf die TMDBAPI (TVShows, Staffeln, Episoden, Filme).
- Enthält Datenklassen für CastMitglieder, Shows, Staffeln und Filme.
- Nutzt ein threadlokales `requests.Session`Pooling für parallele Metadatenabfragen.
- Wird vom Router genutzt, um Plugin-Metadaten optional mit TMDBDaten anzureichern.
- **Metadaten-Helfer (`addon/metadata_utils.py`)**
- Berechnet plugin-spezifische SettingIDs für Metadatenquellen.
- Entscheidet pro Plugin und UserSetting, ob Quelle, TMDB oder Mix bevorzugt wird.
- Sammelt Metadaten aus Plugins (`collect_plugin_metadata`) und merged sie mit TMDB (`merge_metadata`).
- Liefert Signale, wann ein TMDBFallback nötig ist (`needs_tmdb`).
- **ResolveURL Backend (`addon/resolveurl_backend.py`)**
- Optionales Backend, das `script.module.resolveurl` nutzt, wenn installiert.
- Versucht HosterLinks in abspielbare MediaURLs aufzulösen.
- Speichert den letzten Fehlerzustand (`get_last_error`) für Logging oder UserFeedback.
- Ist vollständig optional und bricht das Addon nicht, wenn ResolveURL fehlt.
- **Regex-Muster (`addon/regex_patterns.py`)**
- Zentrale Sammlung wiederverwendeter Regulärer Ausdrücke (Staffel/EpisodenTags, Ziffern etc.).
- Ziel: Konsistenz und Vermeidung von fehleranfälligem Copy/Paste in Plugins.
- **Plugins (`addon/plugins/*.py`)**
- Konkrete Integrationen zu einzelnen Providern (z.B. Serien-/Filmportale).
- Implementieren `BasisPlugin` und optional zusätzliche Capabilities.
- Verwenden die oben beschriebenen Hilfs und Infrastrukturmodule.