# Using JPRM (Jellyfin Plugin Repository Manager) Wenn du mehrere Plugins hast, ist es oft einfacher, den offiziellen **JPRM** (Jellyfin Plugin Repository Manager) zu nutzen. Anstatt dass jedes Plugin sich selbst in die Manifest-Datei "pusht" (wie in deinem aktuellen Script), "pullt" das zentrale Repo automatisch die neuesten Releases deiner Plugins. ## Wie es funktioniert 1. Du hast ein zentrales Repo (z.B. `jellyfin-plugin-manifest`). 2. Dort läuft ein Script (JPRM), das eine Liste von deinen Plugin-Repos durchgeht. 3. Es prüft, ob es neue Releases gibt. 4. Es baut die `manifest.json` komplett neu. ## Schritt 1: Das zentrale Repo vorbereiten Erstelle ein neues Repo (oder nimm dein vorhandenes `jellyfin-plugin-manifest`) und erstelle eine Datei namens `config.json` (oder ähnlich), die deine Plugins auflistet. Beispiel `manifest-config.json` für JPRM: ```json [ { "Url": "https://github.com/CodeDevMLH/Media-Bar-Plugin", "Branch": "main", "Package": "Jellyfin.Plugin.MediaBarEnhanced" }, { "Url": "https://github.com/CodeDevMLH/Anderes-Plugin", "Branch": "main", "Package": "Jellyfin.Plugin.Anderes" } ] ``` ## Schritt 2: Der GitHub Workflow (im zentralen Repo) In deinem **zentralen Repo** erstellst du einen Workflow `.github/workflows/update-manifest.yaml`. Dieser läuft z.B. jede Nacht oder wenn du ihn manuell startest. ```yaml name: Generate Manifest on: workflow_dispatch: schedule: - cron: '0 0 * * *' # Täglich um Mitternacht jobs: generate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.x' - name: Install JPRM run: pip install jprm - name: Generate Manifest run: | # jprm repo init --help für mehr infos # Hier ein einfaches Beispielkommando (die genauen Flags hängen von deiner Struktur ab) jprm repo build --url https://github.com/CodeDevMLH/Media-Bar-Plugin . # Alternativ: Nutze ein fertiges Action-Script oder schreibe ein kleines Python Script, # das die config.json liest und jprm aufruft. - name: Commit & Push uses: stefanzweifel/git-auto-commit-action@v4 with: commit_message: Update repository manifest file_pattern: manifest.json ``` *Hinweis: Der offizielle JPRM ist sehr mächtig, aber manchmal etwas komplex in der Einrichtung für einfache Setups. Viele User nutzen stattdessen ein einfacheres Python-Script.* ## Alternative: Einfaches Python Script (Empfohlen für den Start) Ein simples Script, das du in deinem zentralen Repo ablegst und im Action-Workflow ausführst: ```python import json import requests import hashlib # Konfiguration PLUGINS = [ {"user": "CodeDevMLH", "repo": "Media-Bar-Plugin", "guid": "..."} ] FINAL_MANIFEST = [] for p in PLUGINS: # 1. Hole Latest Release vpm GitHub API resp = requests.get(f"https://api.github.com/repos/{p['user']}/{p['repo']}/releases/latest") data = resp.json() # 2. Lade assets herunter, berechne Hash # 3. Baue JSON Objekt # ... # Speichere final_manifest.json ``` ## Fazit - **Push-Methode (Deine aktuelle Lösung):** Gut für den Anfang. Du hast sofort Kontrolle. Jedes Plugin "kümmert sich selbst". - **Pull-Methode (JPRM):** Besser wenn du 5+ Plugins hast. Das zentrale Repo hat die Hoheit.