#!/usr/bin/env python3
"""Ringkas jadwal akun IG StudioSoft: rentang tanggal, jam, status, media, errorMessage."""
import sys
from datetime import datetime, timedelta

import repliz_client as rc

ACC = "6a38ac33c5ff4ce3a3231232"


def ambil(c):
    out, page = [], 1
    while True:
        r = c.get_schedules(page=page, limit=100)
        docs = r.get("docs") or []
        if not docs:
            break
        out += docs
        if len(docs) < 100 or len(out) >= (r.get("totalDocs") or 0):
            break
        page += 1
    return out


def main():
    awal, akhir = sys.argv[1], sys.argv[2]
    c = rc.get_client()
    ig = [s for s in ambil(c) if s.get("accountId") == ACC]
    baris = []
    for s in ig:
        sa = s.get("scheduleAt") or ""
        tgl = sa[:10]
        if awal <= tgl <= akhir:
            wib = (datetime.fromisoformat(sa.replace("Z", "+00:00")) + timedelta(hours=7))
            med = (s.get("medias") or [{}])
            nama = (med[0].get("url") or "").split("/")[-1]
            baris.append((wib, s.get("type"), s.get("status"), nama, s.get("title"), s.get("errorMessage") or ""))
    baris.sort(key=lambda x: x[0])
    print(f"IG StudioSoft {awal}..{akhir}: {len(baris)} jadwal")
    per_hari = {}
    for wib, tipe, status, nama, judul, err in baris:
        jam = wib.strftime("%H:%M")
        per_hari.setdefault(wib.strftime("%d %b"), []).append(jam)
        tanda = "" if status in ("pending", "success") else f"  ⚠️{status}"
        print(f"{wib.strftime('%d %b %H:%M')} | {tipe:6} | {status:7} | {nama:42} | {judul}{tanda}")
        if err and status == "error":
            print(f"        errorMessage: {err[:160]}")
    print("\n-- jam terisi per hari --")
    for tgl, jams in per_hari.items():
        print(tgl, sorted(jams))


if __name__ == "__main__":
    main()
