Add Filmpalast plugin search flow and bump to 0.1.50
This commit is contained in:
@@ -13,6 +13,23 @@ Jedes Plugin muss diese Methoden implementieren:
|
||||
- `seasons_for(title: str) -> list[str]`
|
||||
- `episodes_for(title: str, season: str) -> list[str]`
|
||||
|
||||
## Vertrag Plugin ↔ Hauptlogik (`default.py`)
|
||||
Die Hauptlogik ruft Plugin-Methoden auf und verarbeitet ausschließlich deren Rückgaben.
|
||||
|
||||
Wesentliche Rückgaben an die Hauptlogik:
|
||||
- `search_titles(...)` → Liste von Titel-Strings für die Trefferliste
|
||||
- `seasons_for(...)` → Liste von Staffel-Labels
|
||||
- `episodes_for(...)` → Liste von Episoden-Labels
|
||||
- `stream_link_for(...)` → Hoster-/Player-Link (nicht zwingend finale Media-URL)
|
||||
- `resolve_stream_link(...)` → finale/spielbare URL nach Redirect/Resolver
|
||||
- Optional `available_hosters_for(...)` → auswählbare Hoster-Namen im Dialog
|
||||
- Optional `series_url_for_title(...)` → stabile Detail-URL pro Titel für Folgeaufrufe
|
||||
- Optional `remember_series_url(...)` → Übernahme einer bereits bekannten Detail-URL
|
||||
|
||||
Standard für Film-Provider (ohne echte Staffeln):
|
||||
- `seasons_for(title)` gibt `["Film"]` zurück
|
||||
- `episodes_for(title, "Film")` gibt `["Stream"]` zurück
|
||||
|
||||
## Optionale Features (Capabilities)
|
||||
Über `capabilities()` kann das Plugin zusätzliche Funktionen anbieten:
|
||||
- `popular_series` → `popular_series()`
|
||||
@@ -27,7 +44,8 @@ Jedes Plugin muss diese Methoden implementieren:
|
||||
|
||||
## Suche (aktuelle Policy)
|
||||
- **Nur Titel‑Matches**
|
||||
- **Substring‑Match** nach Normalisierung (Lowercase + Nicht‑Alnum → Leerzeichen)
|
||||
- **Wortbasierter Match** nach Normalisierung (Lowercase + Nicht‑Alnum → Leerzeichen)
|
||||
- Keine Teilwort-Treffer innerhalb eines Wortes (Beispiel: `hund` matcht nicht `thunder`)
|
||||
- Keine Beschreibung/Plot/Meta für Matches
|
||||
|
||||
## Namensgebung
|
||||
@@ -41,10 +59,23 @@ Standard: `*_base_url` (Domain / BASE_URL)
|
||||
- `aniworld_base_url`
|
||||
- `einschalten_base_url`
|
||||
- `topstream_base_url`
|
||||
- `filmpalast_base_url`
|
||||
|
||||
## Playback
|
||||
- Wenn möglich `stream_link_for(...)` implementieren.
|
||||
- Optional `available_hosters_for(...)`/`resolve_stream_link(...)` für Hoster‑Auflösung.
|
||||
- `stream_link_for(...)` implementieren (liefert bevorzugten Hoster-Link).
|
||||
- `available_hosters_for(...)` bereitstellen, wenn die Seite mehrere Hoster anbietet.
|
||||
- `resolve_stream_link(...)` nach einheitlichem Flow umsetzen:
|
||||
1. Redirects auflösen (falls vorhanden)
|
||||
2. ResolveURL (`resolveurl_backend.resolve`) versuchen
|
||||
3. Bei Fehlschlag auf den besten verfügbaren Link zurückfallen
|
||||
- Optional `set_preferred_hosters(...)` unterstützen, damit die Hoster-Auswahl aus der Hauptlogik direkt greift.
|
||||
|
||||
## Standard‑Flow (empfohlen)
|
||||
1. **Suche**: nur Titel liefern und Titel→Detail-URL mappen.
|
||||
2. **Navigation**: `series_url_for_title`/`remember_series_url` unterstützen, damit URLs zwischen Aufrufen stabil bleiben.
|
||||
3. **Auswahl Hoster**: Hoster-Namen aus der Detailseite extrahieren und anbieten.
|
||||
4. **Playback**: Hoster-Link liefern, danach konsistent über `resolve_stream_link` finalisieren.
|
||||
5. **Fallbacks**: bei Layout-Unterschieden defensiv parsen und Logging aktivierbar halten.
|
||||
|
||||
## Debugging
|
||||
Global gesteuert über Settings:
|
||||
@@ -67,7 +98,10 @@ Plugins sollten die Helper aus `addon/plugin_helpers.py` nutzen:
|
||||
## Beispiel‑Checkliste
|
||||
- [ ] `name` korrekt gesetzt
|
||||
- [ ] `*_base_url` in Settings vorhanden
|
||||
- [ ] Suche matcht nur Titel
|
||||
- [ ] Suche matcht nur Titel und wortbasiert
|
||||
- [ ] `stream_link_for` + `resolve_stream_link` folgen dem Standard-Flow
|
||||
- [ ] Optional: `available_hosters_for` + `set_preferred_hosters` vorhanden
|
||||
- [ ] Optional: `series_url_for_title` + `remember_series_url` vorhanden
|
||||
- [ ] Fehlerbehandlung und Timeouts vorhanden
|
||||
- [ ] Optional: Caches für Performance
|
||||
|
||||
|
||||
Reference in New Issue
Block a user