from pathlib import Path
import datetime
import json
import os
import time
import urllib.request

ROOT = Path(__file__).resolve().parents[1]
submit = json.loads((ROOT / "log/transcode-submit.json").read_text())
base = submit["base_url"]
job_id = submit["job_id"]
url = f"{base}{submit['jobs_path']}/{job_id}"
checkpoint = ROOT / "log/transcode-terminal-response.json"
while True:
    with urllib.request.urlopen(url, timeout=30) as response:
        value = json.loads(response.read())
    returned = value.get("id") or value.get("job_id")
    if returned and returned != job_id:
        raise RuntimeError("Pinned transcode job ID mismatch")
    status = value.get("status", "").lower()
    record = {"base_url": base, "job_id": job_id, "status": status, "response": value, "checked_at": datetime.datetime.now(datetime.timezone.utc).isoformat()}
    temporary = Path(str(checkpoint) + ".tmp")
    temporary.write_text(json.dumps(record, ensure_ascii=False, indent=2) + "\n")
    os.replace(temporary, checkpoint)
    if status in {"completed", "failed", "cancelled"}:
        if status != "completed":
            raise RuntimeError("Transcode terminal failure: " + status)
        print(json.dumps(record, ensure_ascii=False))
        break
    time.sleep(30)

# Intentionally no POST, fallback, cancellation, or pool reselection here.
