#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""verif_fotografi_uky.py — audit lane FOTOGRAFI di Threads @ukyhandoko.

Baca ulang dari API: semua jadwal uky bertopic `Fotografi & Visual` yang belum tayang
+ status post VIDEO Seoul. Cek: jam WIB, panjang caption (<=500/ideal <=480), CTA
komentar di 160 char terakhir, hashtag huruf kecil, 0 mention, 0 CJK, replies kosong.
Read-only.
"""
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

WIB = datetime.timezone(datetime.timedelta(hours=7))
cli = ReplizClient()
rows, page = [], 1
while True:
    d = cli.get(f"/public/schedule?page={page}&limit=100")
    for s in d.get("docs") or []:
        if s.get("accountId") == ACC.UKY_THREADS and s.get("topic") == "Fotografi & Visual":
            rows.append(s)
    if page >= (d.get("totalPages") or 1):
        break
    page += 1

rows.sort(key=lambda s: s.get("scheduleAt") or "")
print(f"jadwal @ukyhandoko bertopic 'Fotografi & Visual': {len(rows)}\n")
masalah = 0
for s in rows:
    dt = datetime.datetime.fromisoformat(s["scheduleAt"].replace("Z", "+00:00")).astimezone(WIB)
    desc = s.get("description") or ""
    med = [m.get("type") for m in (s.get("medias") or [])]
    err = []
    if len(desc) > 500:
        err.append(f"caption {len(desc)} >500")
    if not any(k in desc[-160:].lower() for k in ["komentar", "diskusi", "pendapat", "tulis di", "share", "setuju"]):
        err.append("CTA ekor hilang")
    if "@" in desc:
        err.append("ada mention")
    if [t for t in desc.split() if t.startswith("#") and t[1:] != t[1:].lower()]:
        err.append("hashtag huruf besar")
    if s.get("replies"):
        err.append("ada replies")
    if s.get("type") == "video":
        err.append("VIDEO (uji)")
    masalah += 1 if [e for e in err if "VIDEO" not in e] else 0
    print(f"  {dt:%d %b %H:%M} {s.get('status'):8} {s.get('type'):6} media={med or ['-']} "
          f"{len(desc):>3} char | {s.get('title','')[:42]}")
    if err:
        print(f"       ⚠️ {'; '.join(err)}")

print(f"\nmasalah (selain status uji video): {masalah}")
v = "/home/mantapman/.hermes/profiles/atun/workspace/fotografi_uky_video.json"
try:
    info = json.load(open(v))
    sid = info["id"]
    s = (cli.get_schedule(sid).get("schedule") or cli.get_schedule(sid))
    print(f"\nVIDEO Seoul id={sid} → status={s.get('status')} jam={s.get('scheduleAt')} "
          f"err={(s.get('errorMessage') or '-')}")
except Exception as e:
    print(f"\n(video info tidak terbaca: {e})")
