#!/usr/bin/env bash
# 젠슨 황 전기 호외 1장: 최종 mp3 2개(ko/en)를 ep/에 스테이징하고 표지 임베드 + ep json 작성,
# feed 재빌드(미래 pubDate라 숨김 상태), Lightsail로 무거운 파일 선업로드.
# 공개는 22:00 publish_jensen_extra.sh(크론)가 feed만 다시 밀어 노출한다.
set -euo pipefail

BASE=/home/ukimkj/podcast
JX=$BASE/jensen_extra
COVER=$JX/jensen_cover.jpg
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"

KO_IN=$JX/final/jensen_ch01_ko.mp3
EN_IN=$JX/final/jensen_ch01_en.mp3
FNAME=20260623-jensen01.mp3
PUB="2026-06-23T22:00:00+09:00"

[ -f "$KO_IN" ] || { echo "한국어 최종 mp3 없음: $KO_IN"; exit 1; }
[ -f "$EN_IN" ] || { echo "영어 최종 mp3 없음: $EN_IN"; exit 1; }
[ -f "$COVER" ] || { echo "표지 없음: $COVER"; exit 1; }

embed() { # in.mp3 out.mp3
  ffmpeg -y -loglevel error -i "$1" -i "$COVER" -map 0:a -map 1:v -c:a copy -c:v mjpeg \
    -disposition:v attached_pic -id3v2_version 3 -metadata:s:v title="Album cover" "$2"
}

embed "$KO_IN" "$BASE/daily-ai/ep/$FNAME"
embed "$EN_IN" "$BASE/daily-ai-en/ep/$FNAME"
cp -f "$COVER" "$BASE/daily-ai/jensen_cover.jpg"
cp -f "$COVER" "$BASE/daily-ai-en/jensen_cover.jpg"

KO_DUR=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "$BASE/daily-ai/ep/$FNAME" | cut -d. -f1)
EN_DUR=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "$BASE/daily-ai-en/ep/$FNAME" | cut -d. -f1)

python3 - "$BASE" "$FNAME" "$PUB" "$KO_DUR" "$EN_DUR" <<"PY"
import json, sys
base, fname, pub, ko_dur, en_dur = sys.argv[1:6]
ko = {
  "slug": "20260623-jensen01", "show": "daily-ai", "lang": "ko",
  "title": "[젠슨 황 전기 1/13] 유랑하는 소년",
  "description": ("엔비디아를 세운 젠슨 황의 전기를 열세 번에 나눠 들려드리는 호외 특집입니다. "
    "첫 회는 1963년 타이난에서 태어나 방콕을 거쳐, 아홉 살에 형과 단둘이 태평양을 건넌 소년의 이야기입니다. "
    "켄터키의 거친 기숙학교에서 화장실을 닦고, 문신투성이 룸메이트에게 글을 가르치며 보호를 얻고, "
    "맥도날드에서 '미래의 맛'을 보던 시절. 유랑이 끝났을 때 소년은 스스로 운명을 개척하는 작은 전사가 되어 있었습니다.\n\n"
    "원작: 김경진 『젠슨 황: 실리콘의 카이사르』. 노트북LM 오디오 오버뷰(두 진행자 대담).\n\n"
    "이 방송은 김경진 변호사가 제공합니다."),
  "link": "https://kimkj.com/ai-library/?mod=document&uid=558",
  "guid": "kimkj-daily-ai-jensen-01",
  "mp3_filename": fname,
  "published_at": pub, "published_at_kst": pub,
  "duration": int(ko_dur),
  "image_url": "https://kimkj.com/podcast/daily-ai/jensen_cover.jpg",
  "status": "ready_for_podcast_feed", "source": "NotebookLM Audio Overview",
  "series": "젠슨황전기_호외", "episode_no": 1,
}
en = {
  "slug": "20260623-jensen01", "show": "daily-ai-en", "lang": "en",
  "title": "[Jensen Huang, Caesar of Silicon 1/13] The Wandering Boy",
  "description": ("A 13-part special telling the life of Jensen Huang, the man who built NVIDIA. "
    "Part one: born in Tainan in 1963, moved on to Bangkok, and at nine sent across the Pacific with only his older brother. "
    "At a rough boarding school in Kentucky he scrubbed toilets, taught his tattooed older roommate to read in exchange for protection, "
    "and tasted 'the future' at a McDonald's. When the wandering ended, the boy had become a small warrior ready to carve out his own fate.\n\n"
    "Based on the book by Kyungjin Kim, 'Jensen Huang: Caesar of Silicon.' Produced as a NotebookLM Audio Overview (two-host conversation).\n\n"
    "This program is provided by lawyer Kyungjin Kim."),
  "link": "https://kimkj.com/ai-library/?mod=document&uid=558",
  "guid": "kimkj-daily-ai-en-jensen-01",
  "mp3_filename": fname,
  "published_at": pub, "published_at_kst": pub,
  "duration": int(en_dur),
  "image_url": "https://kimkj.com/podcast/daily-ai-en/jensen_cover.jpg",
  "status": "ready_for_podcast_feed", "source": "NotebookLM Audio Overview",
  "series": "jensen_huang_bio_special", "episode_no": 1,
}
open(f"{base}/daily-ai/ep/20260623-jensen01.json","w",encoding="utf-8").write(json.dumps(ko,ensure_ascii=False,indent=1))
open(f"{base}/daily-ai-en/ep/20260623-jensen01.json","w",encoding="utf-8").write(json.dumps(en,ensure_ascii=False,indent=1))
print("ep json written. ko_dur=%s en_dur=%s" % (ko_dur, en_dur))
PY

echo "--- build feeds (episode hidden until 22:00 KST) ---"
python3 "$BASE/build_feed.py" daily-ai
python3 "$BASE/build_feed.py" daily-ai-en
echo "--- jensen guid present now? (should be EMPTY before 22:00) ---"
grep -c "jensen-01" "$BASE/daily-ai/feed.xml" "$BASE/daily-ai-en/feed.xml" || true

echo "--- rsync heavy files to lightsail (mp3+cover, feed still hidden) ---"
rsync -az -e "ssh $SSH_OPTS" "$BASE/daily-ai" "$BASE/daily-ai-en" "$REMOTE:$REMOTE_DIR/"
echo "STAGED OK. ko=${KO_DUR}s en=${EN_DUR}s. 22:00 크론이 노출합니다."
