#!/bin/sh

if [ -z "$1" ]; then
    echo "Użycie: $0 <plik.mp4 lub link YT>"
    exit 1
fi

INPUT="$1"
WORK_DIR="work"
mkdir -p "$WORK_DIR"

sanitize_filename() {
    echo "$1" | sed \
        -e 's/ą/a/g' -e 's/Ą/A/g' \
        -e 's/ć/c/g' -e 's/Ć/C/g' \
        -e 's/ę/e/g' -e 's/Ę/E/g' \
        -e 's/ł/l/g' -e 's/Ł/L/g' \
        -e 's/ń/n/g' -e 's/Ń/N/g' \
        -e 's/ó/o/g' -e 's/Ó/O/g' \
        -e 's/ś/s/g' -e 's/Ś/S/g' \
        -e 's/ź/z/g' -e 's/Ź/Z/g' \
        -e 's/ż/z/g' -e 's/Ż/Z/g' \
        -e 's/\//-/g' \
        -e 's/ /_/g'
	-e 's/…/.../g' \
	-e 's/!//g'
}

is_youtube() {
    echo "$1" | grep -qE '(youtube\.com|youtu\.be)'
}

if is_youtube "$INPUT"; then
    echo "Wykryto link YouTube: $INPUT"

    TITLE=$(yt-dlp --get-title "$INPUT" 2>/dev/null)
    CLEAN_TITLE=$(sanitize_filename "$TITLE")

    if [ -z "$CLEAN_TITLE" ]; then
        CLEAN_TITLE="audio_$(date +%s)"
    fi

    OUTPUT_WAV="$WORK_DIR/${CLEAN_TITLE}.wav"
    TMP_VIDEO="$WORK_DIR/${CLEAN_TITLE}.tmp_video"

    echo "Tytuł: $TITLE"
    echo "Pobieram wideo..."

    yt-dlp -f "bestaudio" -o "$TMP_VIDEO.%(ext)s" "$INPUT"
    if [ $? -ne 0 ]; then
        echo "Błąd podczas pobierania!"
        exit 1
    fi

    TMP_FILE=$(ls "${TMP_VIDEO}".* 2>/dev/null | head -1)

    if [ -z "$TMP_FILE" ]; then
        echo "Błąd: nie znaleziono pobranego pliku!"
        exit 1
    fi

    echo "Wyciągam dźwięk..."
    ffmpeg -i "$TMP_FILE" -ar 16000 -ac 1 -c:a pcm_s16le "$OUTPUT_WAV"

    if [ $? -ne 0 ]; then
        echo "Błąd podczas konwersji audio!"
        rm -f "$TMP_FILE"
        exit 1
    fi

    echo "Usuwam plik wideo..."
    rm -f "$TMP_FILE"

    echo "Gotowe! WAV zapisany jako: $OUTPUT_WAV"

else
    if [ ! -f "$INPUT" ]; then
        echo "Błąd: plik '$INPUT' nie istnieje"
        exit 1
    fi

    BASENAME=$(basename "$INPUT")
    BASENAME_NOEXT="${BASENAME%.*}"
    CLEAN_NAME=$(sanitize_filename "$BASENAME_NOEXT")
    OUTPUT_WAV="$WORK_DIR/${CLEAN_NAME}.wav"

    echo "Konwertuję lokalny plik: $INPUT -> $OUTPUT_WAV"

    ffmpeg -i "$INPUT" -ar 16000 -ac 1 -c:a pcm_s16le "$OUTPUT_WAV"

    if [ $? -eq 0 ]; then
        echo "Gotowe! WAV zapisany jako: $OUTPUT_WAV"
    else
        echo "Błąd podczas konwersji!"
        exit 1
    fi
fi
