#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""perbaiki_album_korea_uky.py — PUT perbaikan 2 album Korea Threads @ukyhandoko.

1. Album 08 Okt (Bukchon): foto ke-6 `Bukchon_11` dipakai juga di album 12 Okt
   (dan foto itu adalah plakat nomor rumah "19" yang lebih cocok di tema detail)
   → diganti `Bukchon_09`.
2. Album 12 Okt (Detail kecil): pilihan foto awal banyak yang bukan detail
   (orang, cityscape) → diganti 10 foto yang benar-benar bertema detail
   (papan, tulisan, nomor rumah, tekstur), caption disesuaikan.

PUT (PATCH selalu 404), payload utuh hasil GET, lalu baca balik.

Pakai: python3 perbaiki_album_korea_uky.py [--run]
"""
import sys, json, datetime
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import ReplizClient, ACC
from bank_fotografi_uky import validasi
from pasang_album_korea_uky import ALBUMS, BASE, url_ok

RUN = "--run" in sys.argv
WIB = datetime.timezone(datetime.timedelta(hours=7))
STATE = "/home/mantapman/.hermes/profiles/atun/workspace/album_korea_uky_state.json"
cli = ReplizClient()

state = json.load(open(STATE))
peta = {h["tgl"]: h["id"] for h in state["hasil"]}

target = ["2026-10-08", "2026-10-12"]
for tgl in target:
    a = next(x for x in ALBUMS if x["tgl"] == tgl)
    sid = peta[tgl]
    urls = [f"{BASE}/{f}" for f in a["files"]]
    m = validasi(a["caption"])
    print(f"\n=== {tgl} {a['tema']} (id {sid}) — caption {len(a['caption'])} char, validasi {'OK' if not m else m}")
    gagal = [f for f in a["files"] if not url_ok(f"{BASE}/{f}")[0]]
    if gagal:
        print("   ❌ URL bukan 200:", gagal)
        continue
    print("   ✅ 10/10 foto 200 di kedua ingress")

    now = cli.get_schedule(sid)
    s = now.get("schedule") or now
    lama = [mm.get("url") for mm in (s.get("medias") or [])]
    print(f"   media lama: {[u.split('/')[-1] for u in lama]}")
    print(f"   media baru: {[u.split('/')[-1] for u in urls]}")
    if lama == urls and (s.get("description") or "") == a["caption"]:
        print("   ⏭️  sudah sesuai — tidak diubah")
        continue
    if not RUN:
        continue
    payload = dict(s)
    payload["medias"] = [cli.make_media(u, "image") for u in urls]
    payload["description"] = a["caption"]
    payload.pop("account", None)
    res = cli.update_schedule(sid, payload)
    chk = cli.get_schedule(sid)
    c = chk.get("schedule") or chk
    baru = [mm.get("url") for mm in (c.get("medias") or [])]
    dt = datetime.datetime.fromisoformat(c["scheduleAt"].replace("Z", "+00:00")).astimezone(WIB)
    baik = baru == urls and len(c.get("description") or "") == len(a["caption"]) and c.get("status") == "pending"
    print(f"   {'✅' if baik else '⚠️'} status={c.get('status')} jam={dt:%d %b %H:%M} WIB "
          f"media={len(baru)} urut={'ya' if baru == urls else 'TIDAK'} caption={len(c.get('description') or '')}")
