Lokale API
Die lokale API stellt JPGBoost als HTTP/JSON-Dienst auf deinem Rechner bereit. Sie ermöglicht dir, Import, Einstellungen und Export von jeder Sprache aus zu steuern, die eine HTTP-Anfrage senden kann.
Diese Funktion ist sowohl in JPGBoost Free als auch in Pro verfügbar. In Free zählt jedes verarbeitete Bild auf das Tageskontingent: 50 Bilder pro Tag und 5 MB pro Datei. JPGBoost Pro hebt beide Limits auf.
Die API aktivieren
Die API ist standardmäßig deaktiviert. Sie wird in Sekunden aktiviert:
- Öffne Einstellungen (⌘,), dann den Reiter Lokale API.
- Aktiviere das Kontrollkästchen. Der Server startet sofort.
- Passe bei Bedarf den Port an. Der Standardwert ist
51823. - Kopiere den direkt darunter angezeigten Authentifizierungstoken. Eine Schaltfläche erlaubt es, ihn jederzeit neu zu erzeugen.
Der Port ist nur auf der Loopback-Schnittstelle geöffnet. Kein anderes Gerät im Netzwerk kann auf die API zugreifen, selbst wenn es deine IP-Adresse und deinen Token kennt.
Authentifizierung
Jede Anfrage muss den Header Authorization mit deinem Token enthalten. Ohne ihn, oder mit einem ungültigen Token, antwortet die API mit 401.
TOKEN="<in Einstellungen angezeigter Token>"
BASE="http://127.0.0.1:51823/v1"
curl -s -H "Authorization: Bearer $TOKEN" "$BASE/status"
Routenreferenz
Alle Routen haben das Präfix /v1 und liefern strukturiertes JSON zurück: Größe vorher und nachher, Komprimierungsverhältnis und den möglichen Fehler jeder Datei.
| Methode | Route | Funktion |
|---|---|---|
| GET | /v1/status | Anzahl der Bilder, globale Qualität und Format |
| POST | /v1/import | Dateien anhand ihrer Pfade importieren |
| POST | /v1/settings | Qualität, Format ändern oder ein Profil anwenden |
| GET | /v1/images | Bilder der aktuellen Gruppe auflisten |
| POST | /v1/export | Die gesamte Gruppe in einen Ordner exportieren |
| POST | /v1/clear | Die Liste leeren |
| POST | /v1/images/{id}/quality | Die Qualität eines Bildes festlegen (null, um zur globalen Einstellung zurückzukehren) |
| POST | /v1/images/{id}/export | Ein einzelnes Bild in einen bestimmten Pfad exportieren |
| DELETE | /v1/images/{id} | Ein Bild aus der Gruppe entfernen |
| GET | /v1/profiles | Exportprofile auflisten |
| POST | /v1/profiles | Ein Profil erstellen oder ersetzen |
| DELETE | /v1/profiles/{name} | Ein Profil löschen (für die URL kodierter Name) |
Schritt-für-Schritt-Beispiele
Den aktuellen Status abfragen
curl -s -H "Authorization: Bearer $TOKEN" "$BASE/status"
Dateien importieren
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"paths": ["/pfad/zu/bild1.png", "/pfad/zu/bild2.jpg"]}' \
"$BASE/import"
Qualität und Format ändern
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"quality": 80, "format": "webp"}' \
"$BASE/settings"
Aktuelle Bilder auflisten
Die Antwort gibt für jedes Bild seine Kennung, seinen Status, seine Größe vorher und nachher, sein Verhältnis und den möglichen Fehler an.
curl -s -H "Authorization: Bearer $TOKEN" "$BASE/images"
Die Gruppe exportieren
Der Export wartet, bis eine laufende Komprimierung beendet ist, bevor die Dateien geschrieben werden. Diese Wartezeit ist mit waitTimeoutSeconds konfigurierbar, standardmäßig auf 30 Sekunden festgelegt.
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"folder": "/pfad/zur/ausgabe", "waitTimeoutSeconds": 30}' \
"$BASE/export"
Die Liste leeren
curl -s -X POST -H "Authorization: Bearer $TOKEN" "$BASE/clear"
Auf ein bestimmtes Bild einwirken
Jedes Bild hat eine von /v1/images zurückgegebene Kennung. Sie ermöglicht es, es einzeln zu behandeln.
# Spezifische Qualität eines Bildes
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"quality": 92}' \
"$BASE/images/<id>/quality"
# Zur globalen Einstellung für dieses Bild zurückkehren
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"quality": null}' \
"$BASE/images/<id>/quality"
# Ein einzelnes Bild in einen bestimmten Pfad exportieren
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"path": "/pfad/zur/ausgabe/foto.webp"}' \
"$BASE/images/<id>/export"
# Ein Bild aus der Gruppe entfernen
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "$BASE/images/<id>"
Exportprofile über die API
Die API stellt dieselbe Profilliste wie die Oberfläche bereit. Siehe die Anleitung Exportprofile, um die Prioritätsregel kennenzulernen. In JPGBoost Free gilt das Limit von einem Profil auch hier: POST /v1/profiles lehnt das Anlegen eines zweiten Profils ab, akzeptiert aber weiterhin das Überschreiben des vorhandenen Profils unter demselben Namen.
# Ein Profil erstellen oder ersetzen (gleicher Name = Ersetzung)
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Web JPEG", "format": "jpeg", "quality": 70, "destinationFolder": "/pfad/zur/ausgabe"}' \
"$BASE/profiles"
# Profile auflisten
curl -s -H "Authorization: Bearer $TOKEN" "$BASE/profiles"
# Ein Profil löschen (das Leerzeichen wird zu %20 in der URL)
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "$BASE/profiles/Web%20JPEG"
# Ein Profil auf die globalen Einstellungen anwenden
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"profile": "Web JPEG"}' "$BASE/settings"
# In den Ordner des Profils exportieren, ohne "folder" erneut anzugeben
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"profile": "Web JPEG"}' "$BASE/export"
Die Löschroute platziert den Profilnamen in der URL, er muss also kodiert werden. Ein Leerzeichen wird zu %20, wie in /v1/profiles/Web%20JPEG.
Siehe das Standardprofil in der Anleitung Exportprofile. Diese Einstellung wird ausschließlich in Einstellungen → Profile vorgenommen, niemals über POST /v1/profiles. Eine Aktualisierung eines bestehenden Profils über diese Route bewahrt dessen Standardstatus unverändert, ohne ihn jemals zurückzusetzen.
Überprüfen, dass alles funktioniert
Zwei Skripte sind innerhalb der Anwendung enthalten, unter Contents/Resources. Führe sie aus, während JPGBoost geöffnet und die API aktiviert ist. Sie fragen den Token über die Tastatur ab, es sei denn, die Umgebungsvariable TOKEN ist bereits gesetzt, was es ermöglicht, sie in einer kontinuierlichen Integration zu verketten.
Prüfsuite
Überprüft Authentifizierung, Routing und Parametervalidierung, mit einer ✓/✗-Ausgabe. Standardmäßig nur lesend; wird ihr ein Bild übergeben, führt sie auch einen echten Import-Export-Zyklus durch.
SCRIPTS=/Applications/JPGBoost.app/Contents/Resources
"$SCRIPTS/test_local_api.sh"
"$SCRIPTS/test_local_api.sh" /pfad/zu/bild.png
Geführter Durchlauf
Durchläuft Schritt für Schritt die oben beschriebene vollständige Abfolge in lesbarer Form, von der Ablehnung ohne Token bis zum finalen Export, über Status, Import, Einstellungen und Liste.
"$SCRIPTS/local_api_demo.sh" /pfad/zu/bild.png
Der geführte Durchlauf exportiert in einen temporären Ordner, dessen Pfad am Ende der Ausführung angezeigt wird. In der Anwendung selbst wird nichts geschrieben.
Sicherheit und Datenschutz
- Der Server hört nur auf der Loopback-Schnittstelle (
127.0.0.1), was bedeutet, dass er nur von deinem Mac aus erreichbar ist. Niemals dem Internet ausgesetzt. - Kein Bild reist über das Internet. Die API steuert nur die lokale Komprimierungs-Engine.
- Der Token wird auf deinem Rechner erzeugt. Erzeuge ihn neu, wenn du denkst, dass er bekannt geworden sein könnte, zum Beispiel nachdem du ihn in ein geteiltes Skript eingefügt hast.
- Deaktiviere die API, wenn du sie nicht verwendest: Das ist ihr Standardzustand.