#!/bin/bash
# Assemble all rendered segments into final video
set -e
BASE="/tmp/raportis-promo"
FRAMES="$BASE/frames"
OUT="$BASE/raportis-promo.mp4"
FINAL="/tmp/raportis-promo.mp4"
FPS=30

echo "🎬 Assembling Raportis promo video..."
echo ""

# Render each segment directory to MP4
SEGMENTS=( "01-hook" "02-solution" "03-vocal" "04-autofill" "05-save" "06-pdf" "07-cta" )
DURATIONS=( 3 3 9 7 3 5 5 )
CONCAT_LIST="$BASE/concat_segments.txt"
> "$CONCAT_LIST"

for i in "${!SEGMENTS[@]}"; do
    seg="${SEGMENTS[$i]}"
    dur="${DURATIONS[$i]}"
    seg_dir="$FRAMES/$seg"
    seg_mp4="$BASE/segments/${seg}.mp4"
    
    if [ ! -d "$seg_dir" ] || [ -z "$(ls -A $seg_dir 2>/dev/null)" ]; then
        echo "⚠️  $seg: no frames, skipping"
        continue
    fi
    
    frame_count=$(ls "$seg_dir"/frame_*.png 2>/dev/null | wc -l)
    echo "📦 $seg: $frame_count frames → ${seg}.mp4"
    
    mkdir -p "$BASE/segments"
    
    ffmpeg -y -framerate $FPS -i "$seg_dir/frame_%05d.png" \
        -c:v libx264 -preset medium -crf 18 -pix_fmt yuv420p \
        -movflags +faststart \
        "$seg_mp4" 2>/dev/null
    
    echo "file '$seg_mp4'" >> "$CONCAT_LIST"
done

echo ""
echo "🔗 Concatenating segments..."

ffmpeg -y -f concat -safe 0 -i "$CONCAT_LIST" \
    -c:v libx264 -preset medium -crf 16 -pix_fmt yuv420p \
    -movflags +faststart \
    "$OUT" 2>/dev/null

# Copy to final location
cp "$OUT" "$FINAL"

size=$(du -h "$FINAL" | cut -f1)
duration=$(ffprobe -v quiet -show_entries format=duration -of csv=p=0 "$FINAL" | cut -d. -f1)

echo ""
echo "✅ Final video: $FINAL"
echo "   Duration: ${duration}s | Size: $size"
echo "   Resolution: 1920x1080 @ ${FPS}fps"
