add doc
This commit is contained in:
104
jprm.md
Normal file
104
jprm.md
Normal 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.
|
||||
Reference in New Issue
Block a user