#!/bin/bash
# AVL-MXe FFmpeg Audio Extractor
# Features: Optional Loudnorm, 16-bit PCM WAV, 48kHz
# Concept and Testing by Glen MacArthur coded by Google Gemini 3

# 1. Input Check
IFS=$'\n' FILES=($(sort <<<"$*"))
unset IFS
[[ ${#FILES[@]} -lt 1 ]] && exit 1

# 2. MAIN DIALOG
# Added a checkbox for normalization
EXTRACT_OPTS=$(yad --form \
    --title="FFmpeg Extract WAV Audio" \
    --image="/usr/local/share/icons/custom/ffmpeg-app.png" \
    --window-icon="/usr/local/share/icons/custom/ffmpeg.png" \
    --width=450 --center \
    --text="<b>Extract Audio to 16-bit WAV (48kHz Stereo)</b>\nProcessing ${#FILES[@]} file(s)." \
    --field="Apply Pro Normalization (-16 LUFS):CHK" "FALSE" \
    --button="Extract Now":10 \
    --button="Cancel":1)

[[ $? -ne 10 ]] && exit 0

NORM_CHECK=$(echo "$EXTRACT_OPTS" | cut -d'|' -f1)

# 3. PROCESSING LOOP
for INPUT_FILE in "${FILES[@]}"; do
    BASENAME="${INPUT_FILE%.*}"
    
    # Determine suffix and filters based on checkbox
    if [[ "$NORM_CHECK" == "TRUE" ]]; then
        SUFFIX="_NORM"
        AUDIO_FILTER="-af loudnorm=I=-16:LRA=11:TP=-1.5"
    else
        SUFFIX="_EXTRACTED"
        AUDIO_FILTER=""
    fi
    
    OUTPUT_WAV="${BASENAME}${SUFFIX}.wav"

    terminology -T="Extracting Audio to WAV File" -e bash -c "echo 'Processing: $(basename "$INPUT_FILE")'; \
    ffmpeg -y -i '$INPUT_FILE' -vn $AUDIO_FILTER -acodec pcm_s16le -ar 48000 -ac 2 '$OUTPUT_WAV'; \
    if [ \$? -eq 0 ]; then \
        echo 'Success!'; \
        sleep 1; \
    else \
        echo 'ERROR: Extraction failed for $(basename "$INPUT_FILE")'; \
        read -p 'Press Enter to continue...'; \
    fi"
done

# 4. FINAL NOTIFICATION
notify-send "WAV Extraction Complete!" --icon="/usr/local/share/icons/custom/ffmpeg.png"