Files
ViewIT/docs/PLUGIN_DEVELOPMENT.md

2.2 KiB

ViewIT Plugin Entwicklung (addon/plugins/*_plugin.py)

Diese Datei beschreibt den Vertrag zwischen Router und Plugins.

Grundlagen

  • Ein Plugin ist eine Python Datei in addon/plugins/.
  • Dateien mit _ Prefix werden nicht geladen.
  • Plugin Klasse erbt von BasisPlugin.
  • Optional: Plugin = <Klasse> als klarer Einstiegspunkt.

Pflichtmethoden

Jedes Plugin implementiert:

  • async search_titles(query: str) -> list[str]
  • seasons_for(title: str) -> list[str]
  • episodes_for(title: str, season: str) -> list[str]

Wichtige optionale Methoden

  • stream_link_for(...)
  • resolve_stream_link(...)
  • metadata_for(...)
  • available_hosters_for(...)
  • series_url_for_title(...)
  • remember_series_url(...)
  • episode_url_for(...)
  • available_hosters_for_url(...)
  • stream_link_for_url(...)

Film Provider Standard

Wenn keine echten Staffeln existieren:

  • seasons_for(title) gibt ['Film']
  • episodes_for(title, 'Film') gibt ['Stream']

Capabilities

Ein Plugin kann Features melden ueber capabilities(). Bekannte Werte:

  • popular_series
  • genres
  • latest_episodes
  • new_titles
  • alpha
  • series_catalog

Suche

Aktuelle Regeln fuer Suchtreffer:

  • Match auf Titel
  • Wortbasiert
  • Keine Teilwort Treffer im selben Wort
  • Beschreibungen nicht fuer Match nutzen

Settings

Pro Plugin meist *_base_url. Beispiele:

  • serienstream_base_url
  • aniworld_base_url
  • einschalten_base_url
  • topstream_base_url
  • filmpalast_base_url
  • doku_streams_base_url

Playback Flow

  1. Episode oder Film auswaehlen.
  2. Optional Hosterliste anzeigen.
  3. stream_link_for oder stream_link_for_url aufrufen.
  4. resolve_stream_link aufrufen.
  5. Finale URL an Kodi geben.

Logging

Nutze Helper aus addon/plugin_helpers.py:

  • log_url(...)
  • dump_response_html(...)
  • notify_url(...)

Build und Checks

  • ZIP: ./scripts/build_kodi_zip.sh
  • Addon Ordner: ./scripts/build_install_addon.sh
  • Manifest: python3 scripts/generate_plugin_manifest.py
  • Snapshot Checks: python3 qa/run_plugin_snapshots.py

Kurze Checkliste

  • name gesetzt und korrekt
  • *_base_url in Settings vorhanden
  • Suche liefert nur passende Titel
  • Playback Methoden vorhanden
  • Fehler und Timeouts behandelt
  • Cache nur da, wo er Zeit spart