#!/bin/bash
# run_all.sh - Lança e monitora os três comandos em paralelo

# Função para criar pasta, se não existir
ensure_folder() {
    if [ ! -d "$1" ]; then
        mkdir -p "$1"
        echo "Criada a pasta: $1"
    else
        echo "Pasta '$1' já existe."
    fi
}

# Pastas utilizadas
FRAMES="frames"               # Pasta de entrada com as imagens originais
FIRST="1st"                   # Saída do process.py
SECOND="2nd"                  # Saída do dotzilla.py
PROCESSED="processed_frames"  # Saída do blob.py

# Garante que as pastas necessárias existam
ensure_folder "$FRAMES"
ensure_folder "$FIRST"
ensure_folder "$SECOND"
ensure_folder "$PROCESSED"

# Define os comandos a serem executados:
CMD1=(python3.10 process.py 1x-BleedOut-Compact "$FRAMES" "$FIRST")
CMD2=(python3.10 dotzilla.py "$FIRST" "$SECOND")
CMD3=(python3.10 blob.py realesr-animevideov3-x2 "$SECOND" "$PROCESSED")

echo "Iniciando os 3 comandos em paralelo:"
echo "Comando 1: ${CMD1[@]}"
echo "Comando 2: ${CMD2[@]}"
echo "Comando 3: ${CMD3[@]}"

# Inicia os comandos em background
"${CMD1[@]}" &
PID1=$!
"${CMD2[@]}" &
PID2=$!
"${CMD3[@]}" &
PID3=$!

# Registra o tempo de início
START_TIME=$(date +%s)

# Trava o script para que, ao pressionar Ctrl+C, os subprocessos sejam terminados
trap "echo 'Interrompendo...'; kill $PID1 $PID2 $PID3; exit 0" SIGINT

# Função para contar imagens (PNG e JPG) em uma pasta
count_images() {
    find "$1" -maxdepth 1 -type f \( -iname "*.png" -o -iname "*.jpg" \) | wc -l
}

# Loop de monitoramento
while true; do
    TOTAL=$(count_images "$FRAMES")
    PROCESSED_COUNT=$(count_images "$PROCESSED")
    CURRENT_TIME=$(date +%s)
    ELAPSED=$(( CURRENT_TIME - START_TIME ))
    
    if [ "$PROCESSED_COUNT" -gt 0 ]; then
        AVG=$(echo "scale=2; $ELAPSED / $PROCESSED_COUNT" | bc)
    else
        AVG=0
    fi
    
    REMAINING=$(( TOTAL - PROCESSED_COUNT ))
    ESTIMATED=$(echo "scale=2; $AVG * $REMAINING" | bc)
    
    echo "--------------------------------------------------"
    echo "Tempo decorrido: ${ELAPSED}s"
    echo "Total de imagens em '$FRAMES': ${TOTAL}"
    echo "Imagens processadas em '$PROCESSED': ${PROCESSED_COUNT}"
    echo "Tempo médio por imagem (blob): ${AVG}s"
    echo "Tempo estimado restante: ${ESTIMATED}s"
    echo "--------------------------------------------------"
    
    sleep 1
done

