#!/usr/bin/env python3
"""
Jadwal IG Harian via Repliz — jadwalkan posting IG tiap hari di jam tertentu.
Digunakan oleh Mili & cron. Mendukung: TSLaw, StudioSoft, DMark, Arlan, DAS.

Cara pakai:
    python3 jadwal_ig_harian.py tslaw_ig 11:00 30 "CAPTION"
    python3 jadwal_ig_harian.py dmark_ig 11:00 7 "CAPTION"

Sesi deploy:
    - Akun: tslaw_ig / studiosoft_ig / dmark_ig / arelancor_ig / das_ig
    - Jam WIB (contoh 11:00), jumlah hari (contoh 30)
    - Caption sama untuk tiap hari (anti-redundant: tiap hari bisa diganti manual)
"""
import sys, json, os, argparse
from datetime import datetime, timedelta, timezone
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from repliz_client import ReplizClient, ACC

AKUN_MAP = {
    "studiosoft_ig": "STUDIOSOFT_IG", "ss_ig": "STUDIOSOFT_IG",
    "dmark_ig": "DMARK_IG",
    "arelancor_ig": "ARELANCOR_IG", "arlan_ig": "ARELANCOR_IG",
    "das_ig": "DAS_IG",
    "tslaw_ig": "TSLAW_IG", "ts_law_ig": "TSLAW_IG", "tlaw_ig": "TSLAW_IG",
}


def main():
    ap = argparse.ArgumentParser(description="Jadwal IG harian via Repliz")
    ap.add_argument("akun")
    ap.add_argument("jam", help="Jam WIB, format HH:MM contoh 11:00")
    ap.add_argument("hari", type=int, help="Jumlah hari jadwal")
    ap.add_argument("caption", help="Caption posting (pakai tanda kutip)")
    ap.add_argument("--mulai", default=None, help="Tanggal mulai DD/MM/YYYY, default besok")
    args = ap.parse_args()

    akun_key = AKUN_MAP.get(args.akun.strip().lower())
    if not akun_key:
        print(f"❌ Akun '{args.akun}' gak dikenal. Pilih: {', '.join(AKUN_MAP)}")
        sys.exit(1)
    account_id = getattr(ACC, akun_key)

    try:
        hh, mm = args.jam.split(":")
        jam_wib = int(hh)
        menit_wib = int(mm)
    except Exception:
        print("❌ Format jam harus HH:MM (contoh 11:00)")
        sys.exit(1)

    # tanggal mulai: besok (atau custom)
    wib = timezone(timedelta(hours=7))
    if args.mulai:
        mulai = datetime.strptime(args.mulai, "%d/%m/%Y").replace(tzinfo=wib)
    else:
        mulai = datetime.now(wib) + timedelta(days=1)
        mulai = mulai.replace(hour=0, minute=0, second=0, microsecond=0)

    c = ReplizClient()
    ok = 0
    fail = 0
    results = []
    for i in range(args.hari):
        d = mulai + timedelta(days=i)
        iso = d.replace(hour=jam_wib, minute=menit_wib, second=0).isoformat()
        res = c.create_schedule(account_id, args.caption, iso, type_="text")
        if res and res.get("ok"):
            ok += 1
            results.append((d.strftime("%d/%m/%Y"), iso, "OK"))
        else:
            fail += 1
            results.append((d.strftime("%d/%m/%Y"), iso, f"FAIL {json.dumps(res)[:120]}"))

    for row in results:
        print(f"{row[0]} {row[1]} → {row[2]}")
    print(f"\n📊 Total: {ok} OK, {fail} gagal (dari {args.hari} hari) di {args.jam} WIB")


if __name__ == "__main__":
    main()
