3.4 KiB
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
- Du hast ein zentrales Repo (z.B.
jellyfin-plugin-manifest). - Dort läuft ein Script (JPRM), das eine Liste von deinen Plugin-Repos durchgeht.
- Es prüft, ob es neue Releases gibt.
- Es baut die
manifest.jsonkomplett 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:
[
{
"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.
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:
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.