#!/usr/bin/env python3
"""Trích + transcribe 2 đoạn gap bị sót của 001 (retranscribe)."""
import subprocess
import sys
import os

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from gemini_transcribe import transcribe_audio, parse_timestamped_transcript

PROJ = "/home/tuan-nguyen/.openclaw/workspace/015-phu_de_video"
SRC = os.path.join(PROJ, "output", "audio", "001_clean.wav")
OUT = os.path.join(PROJ, "output", "gap_retranscribe")

# (name, start_s, duration_s)
SEGMENTS = [
    ("gap1_1908_1916", 1908.5, 7.5),   # gap 6.4s, margin
    ("gap2_2751_2754", 2751.5, 2.5),   # gap 1.3s, margin
]

os.makedirs(OUT, exist_ok=True)

for name, start, dur in SEGMENTS:
    wav = os.path.join(OUT, f"{name}.wav")
    cmd = ["ffmpeg", "-hide_banner", "-loglevel", "error", "-ss", str(start),
           "-t", str(dur), "-i", SRC, "-ac", "1", "-ar", "16000",
           "-c:a", "pcm_s16le", "-y", wav]
    subprocess.run(cmd, check=True)
    print(f"✅ extracted {name}: {start}s + {dur}s → {wav}")

    raw, usage = transcribe_audio(wav, os.environ["OPENROUTER_API_KEY"])
    print(f"\n===== {name} RAW (offset +{start}s) =====")
    print(raw)
    print(f"===== END {name} =====\n")

    # parse
    with open(wav, "rb") as f:
        nbytes = len(f.read())
    segdur = nbytes / 16000 / 2
    segs = parse_timestamped_transcript(raw, segdur)
    print(f"parsed {len(segs)} segments (relative):")
    for s in segs:
        print(f"  [{s['start']:.2f}s +{start:.2f} = {s['start']+start:.2f}s abs] {s['text']}")
    print()
