#!/bin/bash
shopt -s nullglob

rename_tracks() {
    local f="$1"
    local i

    # Video tracks: v1, v2, ...
    i=1
    while mkvpropedit "$f" --edit "track:v${i}" --set name="Animex" >/dev/null 2>&1; do
        echo "✅ $f -> track:v${i} name=Animex"
        ((i++))
    done

    # Audio tracks: a1, a2, ...
    i=1
    while mkvpropedit "$f" --edit "track:a${i}" --set name="Animex" >/dev/null 2>&1; do
        echo "✅ $f -> track:a${i} name=Animex"
        ((i++))
    done

    # Subtitle tracks: s1, s2, ...
    i=1
    while mkvpropedit "$f" \
        --edit "track:s${i}" \
        --set name="Animex" \
        --set language=qad >/dev/null 2>&1; do

        echo "✅ $f -> track:s${i} name=Animex language=qad"
        ((i++))
    done
}

echo "🔧 Renaming existing tracks in all MKV files..."

for f in *.mkv; do
    rename_tracks "$f"
done

echo "🎬 Starting mkvmerge process..."

for file in *d.mkv; do
    base=$(basename "$file" .mkv)

    title=$(echo "$base" | sed -E 's/ - [0-9]+ .*//')
    ep=$(echo "$base" | grep -oP '(?<= - )\d+')
    resolution=$(echo "$base" | grep -oP '\[([0-9]+p|4k)\]' | tr -d '[]')

    if echo "$base" | grep -q '\[x265\]'; then
        codec="[x265]"
    else
        codec=""
    fi

    ass_subfile="$title - $ep.ass"
    srt_subfile="$title - $ep.srt"

    if [ -f "$ass_subfile" ]; then
        subfile="$ass_subfile"
        subtitle_format="ASS"
    elif [ -f "$srt_subfile" ]; then
        subfile="$srt_subfile"
        subtitle_format="SRT"
    else
        echo "❌ ASS/SRT subtitle not found for: $file"
        continue
    fi

    output="$title - $ep.[SS][${resolution}]${codec}[MixFlixTop].mkv"

    echo "📝 Using $subtitle_format subtitle: $subfile"

    if mkvmerge -o "$output" \
        "$file" \
        --default-track 0:yes \
        --track-name "0:Animex" \
        --forced-track 0:yes \
        --language 0:fa \
        "$subfile"; then

        rm -- "$file"
        echo "✅ Done: $output"
    else
        echo "❌ mkvmerge failed for: $file"
        rm -f -- "$output"
    fi
done
