#!/usr/bin/env python3
"""Scan jadwal Threads @ukyhandoko (12 Okt 2026): cek slot bebas Nov + duplikat tema 'reputasi'.

Dipakai sebelum posting item #76 `uky_quote4_reputasi_hal_kecil`.
"""
import json, sys
from datetime import datetime, timezone, timedelta
from collections import defaultdict

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

UKY = ACC.UKY_THREADS
c = get_client()

r = c.get_schedules(page=1, limit=100)
pages = (r["totalDocs"] + 99) // 100
docs = list(r["docs"])
for p in range(2, pages + 1):
    docs.extend(c.get_schedules(page=p, limit=100)["docs"])
print("totalDocs", r.get("totalDocs"), "pages", pages, "docs", len(docs))

mine = []
for d in docs:
    acc = d.get("account") or {}
    aid = d.get("accountId") or acc.get("id") or acc.get("_id")
    if aid == UKY:
        mine.append(d)
print("jadwal Threads uky:", len(mine))


def wib(d):
    at = d.get("scheduleAt")
    if not at:
        return None
    return datetime.fromisoformat(at.replace("Z", "+00:00")) + timedelta(hours=7)


mine.sort(key=lambda d: d.get("scheduleAt") or "")
key_words = ["reputasi", "hal kecil", "detail", "balas pesan", "berkas", "sepele"]

print("\n=== SEMUA jadwal Threads uky dari 2026-10-25 (WIB) ===")
for d in mine:
    w = wib(d)
    if not w or w < datetime(2026, 10, 25, tzinfo=timezone(timedelta(hours=7))):
        continue
    med = d.get("medias") or []
    m0 = (med[0].get("url") or "").rsplit("/", 1)[-1].split("?")[0] if med else ""
    cap = (d.get("description") or "").replace("\n", " ")
    print(f"{w.strftime('%Y-%m-%d %H:%M')} | {d.get('status'):8s} | {d.get('type'):6s} | "
          f"{m0:45s} | topic={len(d.get('topic') or '')}c | {(d.get('topic') or '')[:45]}")

print("\n=== DUPLIKAT CHECK frasa kartu ===")
for kw in key_words:
    hits = []
    for d in mine:
        blob = ((d.get("description") or "") + " " + (d.get("topic") or "") + " " +
                (d.get("title") or "")).lower()
        if kw in blob:
            w = wib(d)
            hits.append(f"{w.strftime('%Y-%m-%d %H:%M') if w else '?'} [{d.get('status')}] "
                        f"{(d.get('topic') or '')[:40]!r}")
    print(f"  '{kw}': {len(hits)}")
    for h in hits:
        print("      ", h)

terisi = defaultdict(list)
for d in mine:
    w = wib(d)
    if w:
        terisi[w.date()].append(w.strftime("%H:%M"))

print("\n=== Jendela 07:30-08:30 WIB: Nov 2026 ===")
hari = datetime(2026, 11, 1).date()
for _ in range(31):
    jam = sorted(set(h for h in terisi.get(hari, []) if "07:30" <= h <= "08:30"))
    print(f"{hari} {'TERISI ' + str(jam) if jam else 'BEBAS'}   (semua jam: {sorted(terisi.get(hari, []))})")
    hari += timedelta(days=1)
