Converter API¶
Endpunkte für den Datei-Converter: Datei-Explorer, Upload, Job-Verwaltung.
Basis-Pfad: /api/converter
Scan & Explorer¶
GET /api/converter/tree¶
Vollständiger Verzeichnisbaum des converter_raw_dir (FS-basiert, keine DB).
Response:
{
"tree": [
{
"name": "filme",
"relPath": "filme",
"isDir": true,
"children": [
{
"name": "film.mkv",
"relPath": "filme/film.mkv",
"isDir": false,
"size": 10485760
}
]
}
]
}
GET /api/converter/browse?parent=relPath¶
DB-basierter Datei-Explorer. Gibt Einträge für einen Unterordner zurück.
Query-Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
parent | string | Relativer Pfad zum Unterordner (leer = Root) |
Response:
{
"entries": [
{
"id": 1,
"rel_path": "filme/film.mkv",
"is_dir": false,
"size": 10485760,
"job_id": null
}
],
"rawDir": "/data/output/converter-raw"
}
POST /api/converter/scan¶
Manuellen Scan des converter_raw_dir auslösen. Aktualisiert converter_scan_entries in der DB.
Response:
Jobs erstellen¶
POST /api/converter/jobs/from-selection¶
Jobs aus im Datei-Explorer ausgewählten Dateien erstellen.
Body:
| Feld | Typ | Beschreibung |
|---|---|---|
relPaths | string[] | Relative Pfade der ausgewählten Dateien |
audioMode | string | individual (ein Job pro Datei) oder shared (ein gemeinsamer Job) |
Response:
POST /api/converter/create-jobs¶
Jobs aus DB-Scan-Einträgen erstellen.
Body:
POST /api/converter/upload¶
Dateien hochladen (Multipart, max. 50 Dateien).
Form-Felder:
| Feld | Typ | Beschreibung |
|---|---|---|
files | File[] | Hochzuladende Dateien |
folderName | string | (Optional) Ziel-Unterordner |
Response:
Job-Verwaltung¶
GET /api/converter/jobs¶
Alle Converter-Jobs zurückgeben.
Response:
GET /api/converter/jobs/:jobId¶
Einzelnen Converter-Job abrufen.
POST /api/converter/jobs/:jobId/config¶
Konfigurationsentwurf für einen Job speichern (persistiert in encode_plan_json).
Body: Partielles Konfig-Objekt (Ausgabeformat, Presets, Metadaten, Track-Auswahl).
POST /api/converter/jobs/:jobId/assign-files¶
Dateien einem bestehenden (noch nicht gestarteten) Job hinzufügen.
Body:
POST /api/converter/jobs/:jobId/remove-file¶
Datei aus einem Job entfernen (per relativer Pfad).
Body:
POST /api/converter/jobs/:jobId/remove-input¶
Datei aus einem Job entfernen (per absolutem Eingabepfad).
Body:
POST /api/converter/jobs/:jobId/start¶
Job mit finaler Konfiguration starten.
Body:
{
"converterMediaType": "video",
"outputFormat": "mkv",
"userPreset": "H.264 MKV 1080p30",
"trackSelection": {},
"handBrakeTitleId": 1,
"audioFormatOptions": {}
}
POST /api/converter/jobs/:jobId/cancel¶
Laufenden Job abbrechen.
DELETE /api/converter/jobs/:jobId¶
Job aus der DB löschen.
Datei-Operationen¶
Alle Datei-Operationen arbeiten direkt auf dem Dateisystem (ohne DB-Aktualisierung). Ein anschließender Scan-Aufruf synchronisiert die DB.
DELETE /api/converter/files¶
Datei oder Ordner löschen.
Body:
POST /api/converter/files/rename¶
Datei oder Ordner umbenennen.
Body:
POST /api/converter/files/move¶
Datei oder Ordner verschieben.
Body:
targetParentRelPath = "" verschiebt in das Root-Verzeichnis.
POST /api/converter/files/folder¶
Neuen Ordner anlegen.
Body: