#!/usr/bin/env python3
"""verify_hc43.py — verifikasi jadwal hc43 dari API: album Threads + replies anak, LI, FB."""
import json, sys
sys.path.insert(0, '/home/mantapman/.hermes/profiles/atun/workspace')
from repliz_client import ReplizClient, ACC

c = ReplizClient()
ALBUM = "6ab1803802078a414afb2685"
LI = "6ab180383032e3a79c26d7e5"
FB = "6ab180383032e3a79c26d7fb"


def norm(rep):
    """Repliz kadang balikan ObjectId sebagai dict per-karakter {0:..,1:..,status:..}."""
    out = []
    for r in (rep or []):
        if isinstance(r, dict):
            parts = sorted(((int(k), v) for k, v in r.items() if str(k).isdigit()))
            out.append("".join(v for _, v in parts))
        else:
            out.append(str(r))
    return out


def show(sid, label):
    d = c.get("/public/schedule/%s" % sid)
    doc = d.get("doc") or d.get("data") or d
    print("\n%s (%s)" % (label, sid))
    print("  status=%s at=%s type=%s accountId=%s" % (doc.get("status"), doc.get("scheduleAt"),
                                                      doc.get("type"), doc.get("accountId")))
    print("  medias=%d" % len(doc.get("medias") or []))
    for m in (doc.get("medias") or []):
        print("    - %s" % m.get("url"))
    print("  replies=%s" % norm(doc.get("replies")))
    print("  title=%s" % (doc.get("title") or "")[:70])
    cap = (doc.get("description") or "")
    print("  caption(%d char): %s" % (len(cap), cap[:180].replace("\n", " | ")))
    return doc


alb = show(ALBUM, "THREADS ALBUM")
# cari anak yang replies-nya menunjuk album
docs, page = [], 1
while True:
    d = c.get("/public/schedule?page=%d&limit=100" % page)
    docs.extend(d.get("docs", []))
    if page >= (d.get("totalPages") or 1):
        break
    page += 1
kids = []
for s in docs:
    if s.get("accountId") != ACC.STUDIOSOFT_THREADS:
        continue
    if ALBUM in norm(s.get("replies")):
        kids.append(((s.get("scheduleAt") or "")[:16], s.get("status"), s.get("type"),
                     norm(s.get("replies")), (s.get("description") or "")[:60].replace("\n", " ")))
kids.sort()
print("\nChild replies menempel ke album: %d" % len(kids))
for k in kids:
    print("   ", k)

show(LI, "LINKEDIN")
show(FB, "FACEBOOK")
