#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""uji_ig_teks.py — UJI apakah IG StudioSoft menerima post TEKS lewat Repliz (tip IG: teks 399% lebih banyak tayangan).

Latar: catatan lama menyebut post teks ke akun Instagram error "invalid postId: unsupported type schedule".
Repliz/IG bisa saja sudah mendukung. Uji ini membuat SATU jadwal teks di IG SS (13:00 WIB besok) dengan
konten on-brand, lalu dibaca balik. Kalau saat tayang nanti error, tidak ada ruginya selain satu baris error;
kalau berhasil, pipeline teks IG bisa dibuka.

Mode: preview | run [--batal] (batal = hapus jadwal uji)
"""
import json
import re
import sys
from datetime import datetime, timedelta, timezone

from repliz_client import get_client, ReplizError

WIB = timezone(timedelta(hours=7))
ACC_IG_SS = "6a38ac33c5ff4ce3a3231232"
JUDUL = "StudioSoft — Uji post teks IG (tanda website bekerja)"

TEKS = """Banyak pemilik usaha menganggap website sudah beres karena tampilannya rapi.

Tiga tanda ini lebih jujur menjawab apakah website Anda benar-benar bekerja:

1. Ada orang masuk lewat pencarian, bukan cuma dari orang yang sudah kenal Anda.
2. Pertanyaan yang masuk menyebut hal yang dibaca dari halaman tertentu.
3. Anda tahu halaman mana yang paling sering menghasilkan percakapan.

Kalau ketiganya tidak ada, masalahnya bukan di desain, tapi di struktur halaman dan cara mengukurnya.

Menurut Anda, mana yang paling sering terlewat? Tulis di komentar.

#seo #digitalmarketing #websitesbisnis #studiosoft"""


def main():
    mode = sys.argv[1] if len(sys.argv) > 1 else "preview"
    c = get_client()

    if mode == "batal":
        d = c.get(f"/public/schedule/{sys.argv[2]}")
        c.delete(f"/public/schedule/{sys.argv[2]}")
        print("dihapus:", d.get("_id") or d)
        return

    besok = (datetime.now(WIB) + timedelta(days=1)).replace(hour=13, minute=0, second=0, microsecond=0)
    at_utc = besok.astimezone(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.000Z")
    payload = {"accountId": ACC_IG_SS, "title": JUDUL, "topic": "Uji post teks IG StudioSoft",
               "type": "text", "description": TEKS, "medias": [],
               "scheduleAt": at_utc, "replies": []}

    print(f"caption {len(TEKS)} char | slot {besok.strftime('%d %b %H:%M')} WIB ({at_utc})")
    if mode != "run":
        print("\n(dry run — pakai 'run' untuk create, 'batal <id>' untuk hapus)")
        print(TEKS)
        return
    try:
        res = c.post("/public/schedule", payload)
        sid = res.get("scheduleId") or res.get("_id") or res.get("id")
        print("create →", sid)
        d = c.get(f"/public/schedule/{sid}")
        d = d.get("data") or d
        print(f"baca balik: status={d.get('status')} type={d.get('type')} at={d.get('scheduleAt')} "
              f"media={len(d.get('medias') or [])} akun={(d.get('account') or {}).get('name')}")
        print("CATATAN: keberhasilan sesungguhnya baru terlihat setelah jam tayang (status jadi success/error).")
    except ReplizError as e:
        print("DITOLAK API:", e)


if __name__ == "__main__":
    main()
