#!/usr/bin/env python3
"""Analisa dump Repliz: status 5 akun Threads untuk tanggal target + set link terpakai."""
import json, re, sys
from datetime import datetime, timedelta, timezone
from collections import defaultdict

WIB = timezone(timedelta(hours=7))
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import ACC

DUMP = sys.argv[1] if len(sys.argv) > 1 else "/tmp/repliz_all_20260928.json"
TARGET = sys.argv[2] if len(sys.argv) > 2 else "2026-09-28"

ACCS = {
    ACC.STUDIOSOFT_THREADS: "studiosoft",
    ACC.UKY_THREADS: "uky",
    ACC.TSLAW_THREADS: "tslaw",
    ACC.TSC_THREADS: "tsc",
    ACC.DAS_THREADS: "das",
}

docs = json.load(open(DUMP))
print("total docs", len(docs))


def wt(s):
    try:
        return datetime.fromisoformat(str(s).replace("Z", "+00:00")).astimezone(WIB)
    except Exception:
        return None


by = defaultdict(list)
for d in docs:
    a = d.get("accountId")
    if a in ACCS:
        by[ACCS[a]].append(d)

URL_RE = re.compile(r'https?://[^\s"\'\\]+')

for k in ["studiosoft", "uky", "tslaw", "tsc", "das"]:
    v = by.get(k, [])
    print("\n### %s: %d jadwal" % (k, len(v)))
    v2 = sorted(v, key=lambda d: str(d.get("scheduleAt")))
    for d in v2[-10:]:
        t = wt(d.get("scheduleAt"))
        desc = (d.get("description") or "").replace("\n", " ")
        links = URL_RE.findall(desc)
        print("  %s WIB [%s] %r links=%s len=%d" % (t, d.get("status"), (d.get("title") or "")[:28], links[:1], len(desc)))
    today = [d for d in v if (wt(d.get("scheduleAt")) or datetime(1970, 1, 1, tzinfo=WIB)).strftime("%Y-%m-%d") == TARGET]
    print("  >>> jadwal %s: %d" % (TARGET, len(today)))
    for d in sorted(today, key=lambda d: str(d.get("scheduleAt"))):
        t = wt(d.get("scheduleAt"))
        desc = (d.get("description") or "").replace("\n", " ")
        print("      %02d:00 [%s] links=%s %r" % (t.hour, d.get("status"), URL_RE.findall(desc), desc[:70]))

# set URL terpakai (semua akun)
used = defaultdict(set)
for d in docs:
    raw = json.dumps(d, ensure_ascii=False)
    for m in URL_RE.findall(raw):
        used[m.strip().rstrip('").,;').lower()] = True
json.dump(sorted(used.keys()), open("/tmp/threads_used_urls.json", "w"), ensure_ascii=False, indent=1)
print("\nURL unik terpakai (semua jadwal):", len(used))
