#!/usr/bin/env python3
"""Cetak caption LENGKAP jadwal Threads hari ini per akun (untuk cek link)."""
import json, re, sys, time
from datetime import datetime, timedelta, timezone
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import get_client, ACC

WIB = timezone(timedelta(hours=7))
TARGET = sys.argv[1] if len(sys.argv) > 1 else "2026-10-17"
ONLY = sys.argv[2].split(",") if len(sys.argv) > 2 else None

client = get_client()
ACCOUNTS = {"studiosoft": ACC.STUDIOSOFT_THREADS, "uky": ACC.UKY_THREADS,
            "tslaw": ACC.TSLAW_THREADS, "tsc": ACC.TSC_THREADS, "das": ACC.DAS_THREADS}
OWN = {"studiosoft": "studiosoft.id", "uky": "studiosoft.id", "tslaw": "tslaw.id",
       "tsc": "theskincodeclinic.com", "das": "dasindonesia.com"}
REV = {v: k for k, v in ACCOUNTS.items()}

docs = []
for p in range(1, 60):
    got = None
    for i in range(12):
        try:
            got = client.get_schedules(page=p, limit=100)
            break
        except Exception as e:
            time.sleep(min(30, 3 + 3 * i))
    if got is None:
        raise SystemExit(f"gagal halaman {p}")
    b = got.get("docs", [])
    if not b:
        break
    docs.extend(b)
    if len(b) < 100:
        break

for aid, key in REV.items():
    if ONLY and key not in ONLY:
        continue
    rows = []
    for d in docs:
        if d.get("accountId") != aid:
            continue
        try:
            dt = datetime.fromisoformat(str(d.get("scheduleAt")).replace("Z", "+00:00")).astimezone(WIB)
        except Exception:
            continue
        if dt.strftime("%Y-%m-%d") != TARGET:
            continue
        rows.append((dt, d))
    rows.sort(key=lambda r: r[0])
    print(f"\n########## {key} — {TARGET} ({len(rows)} jadwal)")
    for dt, d in rows:
        desc = d.get("description") or ""
        urls = re.findall(r"https?://\S+", desc)
        ownlinks = [u for u in urls if OWN[key] in u.lower()]
        print(f"\n---- {dt.strftime('%H:%M')} WIB | status={d.get('status')} | id={d.get('_id')} | "
              f"len={len(desc)} | urls={urls} | own={len(ownlinks)} | replies={len(d.get('replies') or [])}")
        print(desc)
