#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Analisa jadwal Repliz akun StudioSoft untuk run hc62 (11 Okt 2026 02:00 WIB)."""
import json, os, re, sys, subprocess
from datetime import datetime, timezone, timedelta

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
import repliz_openssl_transport
repliz_openssl_transport.install(verbose=False)
from repliz_client import ReplizClient, ACC

c = ReplizClient()
WIB = timezone(timedelta(hours=7))

def dump():
    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
    return docs

docs = dump()
print("TOTAL docs:", len(docs))
json.dump(docs, open("/tmp/repliz_dump_hc62.json", "w"), ensure_ascii=False)

ACC_MAP = {
    "THREADS": ACC.STUDIOSOFT_THREADS,
    "LINKEDIN": ACC.STUDIOSOFT_LINKEDIN,
    "FB": ACC.STUDIOSOFT_FB,
    "IG": ACC.STUDIOSOFT_IG,
}
URLRE = re.compile(r"https?://[^\s\"'<>)\]]*studiosoft\.id[^\s\"'<>)\]]*")

for name, aid in ACC_MAP.items():
    rows = [d for d in docs if d.get("accountId") == aid]
    up = [d for d in rows if (d.get("status") or "").lower() in ("pending", "scheduled", "draft")]
    up.sort(key=lambda d: d.get("scheduleAt") or "")
    print("\n===== %s (%s) : %d total, %d upcoming =====" % (name, aid, len(rows), len(up)))
    for d in up:
        when = (d.get("scheduleAt") or "")
        w = ""
        try:
            w = (datetime.fromisoformat(when.replace("Z", "+00:00")).astimezone(WIB)).strftime("%d %b %H:%M")
        except Exception:
            pass
        urls = set()
        for m in (d.get("medias") or []):
            urls |= set(URLRE.findall(m.get("url") or ""))
        for f in ("description", "title", "topic"):
            urls |= set(URLRE.findall(d.get(f) or ""))
        slug = ""
        for u in urls:
            if "openclaw-img" in u:
                continue
            slug = u.rstrip("/").split("/")[-1]
            break
        print("  %s | %-8s %-9s | %s | %s" % (when[:19], d.get("type"), d.get("status"),
                                               (d.get("title") or "")[:48], slug))
