105 lines
3.4 KiB
Markdown
105 lines
3.4 KiB
Markdown
# 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.
|