#!/bin/bash

# Farben für eine saubere Terminal-Ausgabe
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color

echo -e "${GREEN}=== Konfiguration für die Videoerstellung ===${NC}"

# 1. Ausgabe-Dateiname
OUTPUT="${1:-}"
if [ -z "$OUTPUT" ]; then
    read -p "Gewünschter Ausgabe-Dateiname [Standard: installation.webm]:       > " OUTPUT
    OUTPUT="${OUTPUT:-installation.webm}"
fi

# 2. Startbild-Name
FIRST_IMG="${2:-}"
if [ -z "$FIRST_IMG" ]; then
    read -p "Dateiname des Startbildes [Standard: firststep.png]:               > " FIRST_IMG
    FIRST_IMG="${FIRST_IMG:-firststep.png}"
fi

# 3. Endbild-Name
LAST_IMG="${3:-}"
if [ -z "$LAST_IMG" ]; then
    read -p "Dateiname des Endbildes [Standard: laststep.png]:                  > " LAST_IMG
    LAST_IMG="${LAST_IMG:-laststep.png}"
fi

# 4. Anzeigedauer Startbild
DELAY_FIRST="${4:-}"
if [ -z "$DELAY_FIRST" ]; then
    read -p "Anzeigedauer Startbild in Sekunden [Standard: 3.0]:                > " DELAY_FIRST
    DELAY_FIRST="${DELAY_FIRST:-3.0}"
fi

# 5. Anzeigedauer Einzelschritte
DELAY_STEP="${5:-}"
if [ -z "$DELAY_STEP" ]; then
    read -p "Anzeigedauer für die Zwischenschritte in Sekunden [Standard: 0.5]: > " DELAY_STEP
    DELAY_STEP="${DELAY_STEP:-0.5}"
fi

# 6. Anzeigedauer Endbild
DELAY_LAST="${6:-}"
if [ -z "$DELAY_LAST" ]; then
    read -p "Anzeigedauer Endbild in Sekunden [Standard: 10.0]:                 > " DELAY_LAST
    DELAY_LAST="${DELAY_LAST:-10.0}"
fi

# 7. Völlig flexibles Suchmuster für die Zwischenschritte
STEPS_PATTERN="${7:-}"
if [ -z "$STEPS_PATTERN" ]; then
    read -p "Suchmuster für die Zwischenschritte [Standard: steps*.png]:        > " STEPS_PATTERN
    STEPS_PATTERN="${STEPS_PATTERN:-steps*.png}"
    if [ -z "$STEPS_PATTERN" ]; then
        echo -e "${YELLOW}Fehler: Es muss ein gültiges Suchmuster angegeben werden!${NC}" >&2
        exit 1
    fi
fi

# Transparente Zusammenfassung & die exakte Befehlszeile für die Zukunft ausgeben
echo -e "\n${YELLOW}Übernommene Einstellungen:${NC}"
echo " - Ausgabe-Datei:       $OUTPUT"
echo " - Startbild:           $FIRST_IMG (Dauer: ${DELAY_FIRST}s)"
echo " - Zwischenschritte:    $STEPS_PATTERN (Dauer: je ${DELAY_STEP}s)"
echo " - Endbild:             $LAST_IMG (Dauer: ${DELAY_LAST}s)"

echo -e "\n${CYAN}Vollständiger Befehl für den Direktaufruf (ohne Abfragen):${NC}"
echo -e "  ${GREEN}${0##*/} \"$OUTPUT\" \"$FIRST_IMG\" \"$LAST_IMG\" \"$DELAY_FIRST\" \"$DELAY_STEP\" \"$DELAY_LAST\" \"$STEPS_PATTERN\"${NC}"
echo "----------------------------------------------"

# Temporäre ffconcat-Datei im systemweiten /tmp-Verzeichnis erstellen
CONCAT_FILE=$(mktemp /tmp/ffmpeg_concat.XXXXXX.ffconcat)
trap "rm -f '$CONCAT_FILE'" EXIT

echo -e "${GREEN}==> Erstelle temporäre ffconcat-Liste unter:${NC} $CONCAT_FILE"

# Startbild prüfen und einbinden
if [ -f "$FIRST_IMG" ]; then
    echo "    [+] Füge Startbild hinzu: $FIRST_IMG"
    echo "ffconcat version 1.0" > "$CONCAT_FILE"
    echo "file '$(pwd)/$FIRST_IMG'" >> "$CONCAT_FILE"
    echo "duration $DELAY_FIRST" >> "$CONCAT_FILE"
else
    echo -e "${YELLOW}Fehler: Startbild '$FIRST_IMG' wurde im Verzeichnis nicht gefunden!${NC}" >&2
    exit 1
fi

# Zwischenschritte dynamisch über das benutzerdefinierte Muster suchen und einbinden
FILES=$(find . -maxdepth 1 -name "$STEPS_PATTERN" | sort -V)

if [ -z "$FILES" ]; then
    echo -e "${YELLOW}    [!] Keine Dateien mit dem Muster '$STEPS_PATTERN' gefunden.${NC}"
else
    COUNT=0
    for img in $FILES; do
        BASENAME=$(basename "$img")
        # Überspringen, falls das Start- oder Endbild zufällig auf das Muster matchen
        if [ "$BASENAME" = "$FIRST_IMG" ] || [ "$BASENAME" = "$LAST_IMG" ]; then
            continue
        fi
        echo "    [+] Füge Zwischenschritt hinzu: $BASENAME"
        echo "file '$(pwd)/$BASENAME'" >> "$CONCAT_FILE"
        echo "duration $DELAY_STEP" >> "$CONCAT_FILE"
        COUNT=$((COUNT + 1))
    done
    echo "    [i] Insgesamt $COUNT Zwischenschritte eingebunden."
fi

# Endbild prüfen und einbinden (+ Dummy-Zeile für den Demuxer)
if [ -f "$LAST_IMG" ]; then
    echo "    [+] Füge Endbild hinzu: $LAST_IMG"
    echo "file '$(pwd)/$LAST_IMG'" >> "$CONCAT_FILE"
    echo "duration $DELAY_LAST" >> "$CONCAT_FILE"
    echo "file '$(pwd)/$LAST_IMG'" >> "$CONCAT_FILE"
else
    echo -e "${YELLOW}Fehler: Endbild '$LAST_IMG' wurde im Verzeichnis nicht gefunden!${NC}" >&2
    exit 1
fi

echo -e "\n${GREEN}==> Starte FFmpeg-Rendering (Verlustfreies WebM / VP9)...${NC}"

# FFmpeg im verlustfreien VP9-Modus ausführen
ffmpeg -y -hide_banner -f concat -safe 0 -i "$CONCAT_FILE" \
    -c:v libvpx-vp9 \
    -lossless 1 \
    -pix_fmt yuv444p \
    "$OUTPUT"

if [ $? -eq 0 ]; then
    echo -e "\n${GREEN}==> Fertig! Das Video wurde erfolgreich erstellt:${NC} $OUTPUT"
else
    echo -e "\n${YELLOW}==> Fehler beim FFmpeg-Rendering aufgetreten.${NC}" >&2
    exit 1
fi
