diff --git a/Kapitel 13/Tutorial.md b/Kapitel 13/Tutorial.md index e3a6f6c..60acb0d 100644 --- a/Kapitel 13/Tutorial.md +++ b/Kapitel 13/Tutorial.md @@ -775,33 +775,52 @@ In diesem Schritt erstellen wir den eigentlichen Workflow in **n8n**. Er sorgt d source "$CONF" VOD_ID="${1:?need VOD id}" - FILE_BASENAME="${2:-${VOD_ID}.mp4}" + + # ---- Eingaben & Pfade + DROP_BASE="${DROP_BASE:?DROP_BASE fehlt in Config}" + NC_DATA="${NC_DATA:?NC_DATA fehlt in Config}" + NC_USER="${NC_USER:?NC_USER fehlt in Config}" + NC_TARGET_SUBPATH="${NC_TARGET_SUBPATH:?NC_TARGET_SUBPATH fehlt in Config}" + PHP="${PHP:-/usr/bin/php}" + OCC="${OCC:-/var/www/nextcloud/occ}" SRC_DIR="${DROP_BASE}/${VOD_ID}" - SRC_FILE="${SRC_DIR}/${FILE_BASENAME}" - DST_DIR="${NC_DATA}/${NC_USER}/files/${NC_TARGET_SUBPATH}/${VOD_ID}" + DST_BASE="${NC_DATA}/${NC_USER}/files" + DST_DIR="${DST_BASE}/${NC_TARGET_SUBPATH}/${VOD_ID}" SCAN_PATH="${NC_USER}/files/${NC_TARGET_SUBPATH}/${VOD_ID}" + # ---- Vorbedingungen prüfen (wir legen KEINE Benutzerstruktur an!) + [[ -d "$NC_DATA" ]] || { echo "NC_DATA nicht gefunden: $NC_DATA" >&2; exit 2; } + [[ -d "$DST_BASE" ]] || { echo "Benutzerdateien fehlen: $DST_BASE (stimmt NC_USER/NC_DATA?)" >&2; exit 3; } + [[ -d "$SRC_DIR" ]] || { echo "Drop-Ordner fehlt: $SRC_DIR" >&2; exit 4; } + + # ---- Ziel-Unterordner anlegen (falls nicht vorhanden) mkdir -p "$DST_DIR" - if [[ -d "$SRC_DIR" ]]; then - # kompletter VOD-Ordner vorhanden → verschiebe Inhalt (oder Ordner, falls leer) + # ---- Dateien/Ordner verschieben shopt -s nullglob dotglob - if compgen -G "${SRC_DIR}/*" > /dev/null; then - mv -f "${SRC_DIR}/"* "$DST_DIR"/ - fi + had_files=false + for f in "${SRC_DIR}/"*; do + had_files=true + mv -f "$f" "$DST_DIR/" + done + # leeren Drop-Ordner entfernen (optional) rmdir "$SRC_DIR" 2>/dev/null || true - elif [[ -f "$SRC_FILE" ]]; then - mv -f "$SRC_FILE" "$DST_DIR"/ - else - echo "Quelle nicht gefunden: $SRC_DIR oder $SRC_FILE" >&2 - exit 2 + shopt -u nullglob dotglob + + if [[ "$had_files" = false ]]; then + echo "Keine Dateien in Drop-Ordner: ${SRC_DIR}" >&2 + exit 5 fi + # ---- Rechte setzen wie von Nextcloud erwartet chown -R www-data:www-data "$DST_DIR" + + # ---- Index nur für diesen Pfad aktualisieren "$PHP" "$OCC" files:scan --path="$SCAN_PATH" --quiet - echo "OK: ${DST_DIR}" + echo "OK: $(printf '%s\n' "$DST_DIR")" + ``` Wie zuvor auch, müssen wir die Rechte korrekt setzen, damit alles reibungslos funktioniert. Gebe dazu in der Konsole