#!/usr/bin/env python3
"""Scan jadwal Threads @ukyhandoko: slot 08:00 WIB terpakai + kandidat hari bebas."""
import json, os, 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:
        continue
    mine.append(d)

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 "")
now = datetime.now(timezone.utc)
print("\n=== SEMUA jadwal Threads uky (WIB) ===")
for d in mine:
    w = wib(d)
    med = (d.get("medias") or [{}])
    m0 = (med[0].get("url") or "").rsplit("/", 1)[-1] if med else ""
    print(f"{w.strftime('%Y-%m-%d %H:%M')} | {d.get('status'):8s} | {d.get('type'):6s} | "
          f"topic={len(d.get('topic') or '')}c | {m0} | {(d.get('topic') or '')[:45]}")

besok = (now + timedelta(hours=7)).date() + timedelta(days=1)
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: hari terisi (mulai besok) ===")
hari = besok
free = []
for _ in range(150):
    jam = terisi.get(hari, [])
    slot = sorted(set(h for h in jam if "07:30" <= h <= "08:30"))
    if slot:
        print(f"{hari} TERISI {slot}")
    else:
        if len(free) < 6:
            free.append(hari)
    hari += timedelta(days=1)
print("\nHARI BEBAS (6 pertama):", [d.isoformat() for d in free])

# cek media target
target = "uky_quote_klien_mitra_bukan_raja.jpg"
hits = [d for d in mine for m in (d.get("medias") or [])
        if (m.get("url") or "").rsplit("/", 1)[-1].split("?")[0] == target]
print(f"\nJadwal dgn media {target}: {[(d.get('id'), d.get('status')) for d in hits]}")
