Nightly: reproducible zips and plugin manifest
This commit is contained in:
@@ -101,6 +101,7 @@ Plugins sollten die Helper aus `addon/plugin_helpers.py` nutzen:
|
||||
## Build & Test
|
||||
- ZIP bauen: `./scripts/build_kodi_zip.sh`
|
||||
- Addon‑Ordner: `./scripts/build_install_addon.sh`
|
||||
- Plugin‑Manifest aktualisieren: `python3 scripts/generate_plugin_manifest.py`
|
||||
|
||||
## Beispiel‑Checkliste
|
||||
- [ ] `name` korrekt gesetzt
|
||||
|
||||
104
docs/PLUGIN_MANIFEST.json
Normal file
104
docs/PLUGIN_MANIFEST.json
Normal file
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"plugins": [
|
||||
{
|
||||
"file": "addon/plugins/aniworld_plugin.py",
|
||||
"module": "aniworld_plugin",
|
||||
"name": "Aniworld",
|
||||
"class": "AniworldPlugin",
|
||||
"version": "1.0.0",
|
||||
"capabilities": [
|
||||
"genres",
|
||||
"latest_episodes",
|
||||
"popular_series"
|
||||
],
|
||||
"prefer_source_metadata": false,
|
||||
"base_url_setting": "aniworld_base_url",
|
||||
"available": true,
|
||||
"unavailable_reason": null,
|
||||
"error": null
|
||||
},
|
||||
{
|
||||
"file": "addon/plugins/dokustreams_plugin.py",
|
||||
"module": "dokustreams_plugin",
|
||||
"name": "Doku-Streams",
|
||||
"class": "DokuStreamsPlugin",
|
||||
"version": "1.0.0",
|
||||
"capabilities": [
|
||||
"genres",
|
||||
"popular_series"
|
||||
],
|
||||
"prefer_source_metadata": true,
|
||||
"base_url_setting": "doku_streams_base_url",
|
||||
"available": true,
|
||||
"unavailable_reason": null,
|
||||
"error": null
|
||||
},
|
||||
{
|
||||
"file": "addon/plugins/einschalten_plugin.py",
|
||||
"module": "einschalten_plugin",
|
||||
"name": "Einschalten",
|
||||
"class": "EinschaltenPlugin",
|
||||
"version": "1.0.0",
|
||||
"capabilities": [
|
||||
"genres",
|
||||
"new_titles"
|
||||
],
|
||||
"prefer_source_metadata": false,
|
||||
"base_url_setting": "einschalten_base_url",
|
||||
"available": true,
|
||||
"unavailable_reason": null,
|
||||
"error": null
|
||||
},
|
||||
{
|
||||
"file": "addon/plugins/filmpalast_plugin.py",
|
||||
"module": "filmpalast_plugin",
|
||||
"name": "Filmpalast",
|
||||
"class": "FilmpalastPlugin",
|
||||
"version": "1.0.0",
|
||||
"capabilities": [
|
||||
"alpha",
|
||||
"genres",
|
||||
"series_catalog"
|
||||
],
|
||||
"prefer_source_metadata": false,
|
||||
"base_url_setting": "filmpalast_base_url",
|
||||
"available": true,
|
||||
"unavailable_reason": null,
|
||||
"error": null
|
||||
},
|
||||
{
|
||||
"file": "addon/plugins/serienstream_plugin.py",
|
||||
"module": "serienstream_plugin",
|
||||
"name": "Serienstream",
|
||||
"class": "SerienstreamPlugin",
|
||||
"version": "1.0.0",
|
||||
"capabilities": [
|
||||
"genres",
|
||||
"latest_episodes",
|
||||
"popular_series"
|
||||
],
|
||||
"prefer_source_metadata": false,
|
||||
"base_url_setting": "serienstream_base_url",
|
||||
"available": true,
|
||||
"unavailable_reason": null,
|
||||
"error": null
|
||||
},
|
||||
{
|
||||
"file": "addon/plugins/topstreamfilm_plugin.py",
|
||||
"module": "topstreamfilm_plugin",
|
||||
"name": "Topstreamfilm",
|
||||
"class": "TopstreamfilmPlugin",
|
||||
"version": "1.0.0",
|
||||
"capabilities": [
|
||||
"genres",
|
||||
"popular_series"
|
||||
],
|
||||
"prefer_source_metadata": false,
|
||||
"base_url_setting": "topstream_base_url",
|
||||
"available": true,
|
||||
"unavailable_reason": null,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -9,6 +9,7 @@ ViewIt lädt Provider-Integrationen dynamisch aus `addon/plugins/*.py`. Jede Dat
|
||||
Weitere Details:
|
||||
- `docs/DEFAULT_ROUTER.md` (Hauptlogik in `addon/default.py`)
|
||||
- `docs/PLUGIN_DEVELOPMENT.md` (Entwicklerdoku für Plugins)
|
||||
- `docs/PLUGIN_MANIFEST.json` (zentraler Überblick über Plugins, Versionen, Capabilities)
|
||||
|
||||
### Aktuelle Plugins
|
||||
|
||||
@@ -33,6 +34,10 @@ Der Loader in `addon/default.py`:
|
||||
|
||||
Damit bleiben fehlerhafte Plugins isoliert und blockieren nicht das gesamte Add-on.
|
||||
|
||||
### Plugin-Manifest (Audit & Repro)
|
||||
`docs/PLUGIN_MANIFEST.json` listet alle Plugins mit Version, Capabilities und Basis-Settings.
|
||||
Erzeugung: `python3 scripts/generate_plugin_manifest.py`
|
||||
|
||||
### BasisPlugin – verpflichtende Methoden
|
||||
|
||||
Definiert in `addon/plugin_interface.py`:
|
||||
|
||||
Reference in New Issue
Block a user