#!/usr/bin/env python3
"""Daftar lengkap jadwal IG StudioSoft yang MENUNGGU TAYANG: per hari, per jam, jenis, media."""
import sys, json, time, urllib.request, urllib.error
from collections import defaultdict
from datetime import datetime, timedelta, timezone

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
import repliz_client as rc

IG = rc._ACC.STUDIOSOFT_IG
H = {"Authorization": rc.AUTH_HEADER, "Content-Type": "application/json"}
WIB = timezone(timedelta(hours=7))


def ambil(path):
    r = urllib.request.Request("https://api.repliz.com" + path, headers=H)
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=120) as x:
                return json.loads(x.read())
        except urllib.error.HTTPError as e:
            return {"err": e.code}
        except Exception:
            time.sleep(3)
    return {}


keluar, page = [], 1
while True:
    d = ambil(f"/public/schedule?page={page}&limit=100")
    docs = (d or {}).get("docs") or []
    if not docs:
        break
    keluar += docs
    if len(docs) < 100:
        break
    page += 1

sekarang = datetime.now(timezone.utc)
milik = []
for j in keluar:
    if j.get("accountId") != IG or j.get("status") != "pending":
        continue
    t = datetime.fromisoformat(j["scheduleAt"].replace("Z", "+00:00"))
    if t > sekarang:
        milik.append((t.astimezone(WIB), j))
milik.sort()

per_hari = defaultdict(list)
for t, j in milik:
    per_hari[t.date().isoformat()].append((t.strftime("%H:%M"), j))

print(f"jadwal IG menunggu tayang: {len(milik)} · hari: {len(per_hari)}\n")
for hari in sorted(per_hari):
    print(f"{hari}  ({len(per_hari[hari])} post)")
    for jam, j in sorted(per_hari[hari]):
        u = ((j.get("medias") or [{}])[0].get("url") or "").split("/")[-1]
        print(f"   {jam} | {j.get('type'):<6} | {len(j.get('medias') or [])} media | "
              f"{(j.get('title') or '')[:44]:<46} | {u[:38]} | {j['_id']}")
json.dump([{**j, "_wib": t.isoformat()} for t, j in milik],
          open(f"{WS}/drafts/ig_jadwal_menunggu.json", "w"), ensure_ascii=False, indent=1)
print(f"\n→ drafts/ig_jadwal_menunggu.json")
