#!/usr/bin/env bash
set -u
shopt -s nullglob

DIR="${1:-.}"

find "$DIR" -maxdepth 1 -type f -iname '*.mkv' -print0 | while IFS= read -r -d '' f; do
    dir="$(dirname "$f")"
    base="$(basename "$f")"
    name="${base%.*}"
    tmp="$dir/${name}.tmp.streaming.mkv"

    echo "========================================"
    echo "Procesando: $f"

    rm -f -- "$tmp"

    spa_abs=$(
        ffprobe -v error -select_streams a \
        -show_entries stream=index:stream_tags=language \
        -of csv=p=0 "$f" | awk -F',' 'tolower($2)=="spa"{print $1; exit}'
    )

    eng_abs=$(
        ffprobe -v error -select_streams a \
        -show_entries stream=index:stream_tags=language \
        -of csv=p=0 "$f" | awk -F',' 'tolower($2)=="eng"{print $1; exit}'
    )

    cmd=(ffmpeg -y -i "$f" -map 0:v:0)

    # Primero agrega los AAC 2.0 para máxima compatibilidad en Roku de gama baja
    if [[ -n "${spa_abs:-}" ]]; then
        cmd+=(-map "0:${spa_abs}?")
    fi

    if [[ -n "${eng_abs:-}" ]]; then
        cmd+=(-map "0:${eng_abs}?")
    fi

    # Después conserva todos los audios originales y todos los subtítulos
    cmd+=(
        -map 0:a?
        -map 0:s?
        -map_chapters -1
        -c:v copy
        -c:a copy
        -c:s copy
        -disposition:a 0
    )

    aidx=0

    if [[ -n "${spa_abs:-}" ]]; then
        cmd+=(
            -c:a:${aidx} aac
            -ac:a:${aidx} 2
            -b:a:${aidx} 192k
            -metadata:s:a:${aidx} language=spa
            -metadata:s:a:${aidx} title="Español AAC 2.0"
            -disposition:a:${aidx} default
        )
        ((aidx+=1))
    fi

    if [[ -n "${eng_abs:-}" ]]; then
        cmd+=(
            -c:a:${aidx} aac
            -ac:a:${aidx} 2
            -b:a:${aidx} 192k
            -metadata:s:a:${aidx} language=eng
            -metadata:s:a:${aidx} title="English AAC 2.0"
        )
        ((aidx+=1))
    fi

    printf 'Ejecutando: '
    printf '%q ' "${cmd[@]}"
    printf '%q\n' "$tmp"

    if "${cmd[@]}" "$tmp"; then
        mv -f -- "$tmp" "$f"
        echo "Reemplazado correctamente: $f"
    else
        echo "Error procesando: $f"
        rm -f -- "$tmp"
    fi
done
