This commit is contained in:
CodeDevMLH
2026-01-06 02:20:20 +01:00
parent 9c66169c52
commit eec8f23968
4 changed files with 358 additions and 0 deletions

104
jprm.md Normal file
View File

@@ -0,0 +1,104 @@
# 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.