#!/bin/bash
# 영어판 팟캐스트 게시: 한국어 대본 번역 -> 영어 TTS -> feed 재생성 -> Lightsail rsync
# 사용법: publish_podcast_en.sh [YYYY-MM-DD]  (날짜 생략 시 오늘)
# 기존 publish_podcast.sh와 완전히 분리. 한국어 쇼 폴더는 절대 건드리지 않는다.
set -euo pipefail

BASE=/home/ukimkj/podcast
RUN_DATE=${1:-$(date +%Y-%m-%d)}
DAY=${RUN_DATE//-/}
LOG=$BASE/publish_en.log
REMOTE="admin@43.202.123.207"
REMOTE_DIR="/var/www/html/podcast"
SSH_OPTS="-i $HOME/.ssh/lightsail_podcast -o StrictHostKeyChecking=accept-new -o ConnectTimeout=10"

note() { echo "$(date '+%F %T') $*" >> "$LOG"; }

# GEMINI_API_KEY만 daily 파이프라인 .env에서 추출한다 (값은 로그에 남기지 않는다)
export GEMINI_API_KEY=$(grep -m1 '^GEMINI_API_KEY=' /home/ukimkj/Documents/DailyAINewsVideoAutomation/.env | cut -d= -f2- | tr -d '"' | tr -d "'")
[ -n "$GEMINI_API_KEY" ] || { note "GEMINI_API_KEY 추출 실패"; exit 1; }

VENV_PY=/home/ukimkj/Documents/DailyAINewsVideoAutomation/.venv/bin/python

publish_one_en() {
  local show=$1 run_root=$2
  local script_src="$run_root/runs/$RUN_DATE/script/tts_script.json"
  local ko_audio="$run_root/runs/$RUN_DATE/audio/final_audio_slide_synced.mp3"
  local dst="$BASE/$show/ep/$DAY.mp3"
  local work="$BASE/$show/work/$DAY"

  [ -f "$script_src" ] || { note "$show $RUN_DATE: 대본 없음, 건너뜀"; return 0; }
  [ -f "$ko_audio" ] || { note "$show $RUN_DATE: 한국어판 미완성, 건너뜀"; return 0; }
  [ -f "$dst" ] && { note "$show $RUN_DATE: 이미 게시됨"; return 0; }

  if [ ! -f "$work/translation.json" ]; then
    python3 "$BASE/make_english_episode.py" --run-root "$run_root" --date "$RUN_DATE" --out-dir "$BASE/$show" \
      >> "$LOG" 2>&1 || { note "$show $RUN_DATE: 번역 실패"; return 1; }
  fi

  # 대화 속도는 해당 쇼 한국어 파이프라인 .env의 TTS_SPEED를 그대로 따른다
  local speed
  speed=$(grep -m1 '^TTS_SPEED=' "$run_root/.env" | cut -d= -f2- | tr -d '"' | tr -d "'" || true)

  TTS_SPEED="${speed:-1.0}" "$VENV_PY" "$BASE/build_tts_en.py" --translation "$work/translation.json" --out-mp3 "$dst" \
    >> "$LOG" 2>&1 || { note "$show $RUN_DATE: TTS 실패"; rm -f "$dst"; return 1; }

  python3 "$BASE/build_feed.py" "$BASE/$show" >> "$LOG" 2>&1
  local dur
  dur=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "$dst" | cut -d. -f1)
  note "$show $RUN_DATE: 게시 (길이 ${dur}s)"
}

FAIL=0
publish_one_en daily-ai-en /home/ukimkj/Documents/DailyAINewsVideoAutomation || FAIL=1
publish_one_en china-ai-en /home/ukimkj/Documents/ChinaAIRobotSemiTelecomVideoAutomation || FAIL=1

if rsync -az -e "ssh $SSH_OPTS" "$BASE/daily-ai-en" "$BASE/china-ai-en" "$REMOTE:$REMOTE_DIR/" 2>>"$LOG"; then
  note "rsync 완료"
else
  note "rsync 실패. 다음 실행에서 재시도"
fi
exit $FAIL
