"""Poll an Image Studio job; print a line on each new failure and when the job ends."""
import json, sys, time, urllib.request
jid, failed_seen = sys.argv[1], 0
while True:
    try:
        d = json.load(urllib.request.urlopen(f"http://localhost:8879/api/jobs/{jid}", timeout=10))
    except Exception as e:
        print("studio unreachable:", e, flush=True); time.sleep(120); continue
    if d["failed"] > failed_seen:
        bad = [l for l in d["log"] if "✗" in l or "fail" in l.lower() or "error" in l.lower()]
        print(f"failures now {d['failed']} (done {d['done']}/{d['total']}):", bad[-(d['failed'] - failed_seen):], flush=True)
        failed_seen = d["failed"]
    if d["state"] != "running":
        print(f"batch {d['state']}: done {d['done']}/{d['total']}, failed {d['failed']}", flush=True)
        break
    time.sleep(120)
