#!/usr/bin/env bash
set -u
BASE=/data/video-pipeline/Channel-Loi-Co-Nhan/project
BGM=/data/video-pipeline/Channel-Loi-Co-Nhan/data/bgm/paulyudin-sentimental-story-182512.mp3
LOG=/data/video-pipeline/Channel-Loi-Co-Nhan/rerender_038_064_main_paulyudin.log
: > "$LOG"

echo "START $(date '+%F %T') bgm=$BGM" | tee -a "$LOG"
for n in $(seq -w 038 064); do
  mapfile -t PROJECTS < <(find "$BASE" -maxdepth 1 -type d -name "13062026-${n}-*" | sort)
  if [ ${#PROJECTS[@]} -eq 0 ]; then
    mapfile -t PROJECTS < <(find "$BASE/Complete" -maxdepth 1 -type d -name "13062026-${n}-*" | sort)
  fi
  if [ ${#PROJECTS[@]} -eq 0 ]; then
    echo "$(date '+%F %T') MISSING $n" | tee -a "$LOG"
    continue
  fi
  for P in "${PROJECTS[@]}"; do
    echo "$(date '+%F %T') RENDER_START $P" | tee -a "$LOG"
    python3 "$P/scripts_worker_rebuild_strict.py" >> "$LOG" 2>&1
    code=$?
    if [ $code -eq 0 ]; then
      python3 - "$P" <<'PY' >> "$LOG" 2>&1
from pathlib import Path
import json, sys
p=Path(sys.argv[1])
info=p/'output/info.json'
main=p/'output/final/final_video.mp4'
yt=p/'output/final/final_video-yt.mp4'
public_main=f"https://mediareel.pain.io.vn/Channel-Loi-Co-Nhan/project/{p.name}/output/final/final_video.mp4"
public_yt=f"https://mediareel.pain.io.vn/Channel-Loi-Co-Nhan/project/{p.name}/output/final/final_video-yt.mp4"
if info.exists():
    data=json.loads(info.read_text(encoding='utf-8'))
    data['final_video']=str(main)
    data['final_video_yt']=str(yt)
    data['public_link']=public_main
    data['public_url']=public_main
    data['public_link_yt']=public_yt
    data['public_url_yt']=public_yt
    data['bgm_main']='/data/video-pipeline/Channel-Loi-Co-Nhan/data/bgm/paulyudin-sentimental-story-182512.mp3'
    data['bgm_yt']='/data/video-pipeline/Channel-Loi-Co-Nhan/data/bgm/Borderless-Aakash-Gandhi.mp3'
    info.write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding='utf-8')
print('MAIN', main, main.exists(), main.stat().st_size if main.exists() else 0)
print('YT', yt, yt.exists(), yt.stat().st_size if yt.exists() else 0)
print('PUBLIC_MAIN', public_main)
print('PUBLIC_YT', public_yt)
PY
      echo "$(date '+%F %T') RENDER_OK $P" | tee -a "$LOG"
    else
      echo "$(date '+%F %T') RENDER_FAIL code=$code $P" | tee -a "$LOG"
    fi
  done
done
echo "DONE $(date '+%F %T')" | tee -a "$LOG"
