#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Rakit caption Threads dari deck gen_uky_carousel.py — satu sumber data, biar tidak pernah beda.

Isi caption: pembuka + judul + daftar N poin (sama seperti jumlah halaman) + ajakan + hashtag.
Kalau lebih dari 500 char (batas Threads), dipendekkan bertahap sampai muat.

Pakai: python3 siapkan_caption_uky.py [--cek]
"""
import importlib.util, re, sys

spec = importlib.util.spec_from_file_location("g", "/home/mantapman/.hermes/profiles/atun/workspace/gen_uky_carousel.py")
g = importlib.util.module_from_spec(spec)
spec.loader.exec_module(g)

BARIS_MAKS = 500
AKRONIM = {"hp", "ai", "seo", "umkm", "ktp", "wa", "ig", "fb", "dm", "ga", "cta", "roi"}


def rapi(teks):
    """Huruf kecil semua, tapi akronim umum tetap kapital (HP, AI, SEO, UMKM)."""
    t = teks.lower()
    for a in AKRONIM:
        t = re.sub(rf"\b{a}\b", a.upper(), t)
    return t[0].upper() + t[1:] if t else t


def caption_untuk(nama):
    info = g.SERI[nama]
    n = info["jumlah"]
    items = info["items"][:n]
    judul_cover = rapi(" ".join(b.replace("{n}", str(n)) for b in info["judul"]))
    daftar = " ".join(f"{i}. {rapi(' '.join(j))}." for i, (j, _) in enumerate(items, 1))
    pembuka = info["caption"]["pembuka"]
    cta = info["caption"]["cta"]
    tag = info["caption"]["tag"]
    # hindari kalimat pembuka dan judul yang mengulang hal yang sama
    tiga_kata = " ".join(judul_cover.split()[:3]).lower()
    intro = "Poin-poinnya:" if tiga_kata in pembuka.lower() else f"{judul_cover}:"
    geser = f"Geser halaman satu per satu ya, ada {n} poin di dalamnya. Kalau berguna, simpan dulu."
    versi = [
        f"{pembuka}\n\n{intro}\n{daftar}\n\n{geser}\n\n{cta}\n\n{tag}",
        f"{pembuka}\n\n{intro}\n{daftar}\n\n{cta}\n\n{tag}",
        f"{pembuka.split('. ')[0]}.\n\n{intro}\n{daftar}\n\n{cta}\n\n{tag}",
        f"{intro}\n{daftar}\n\n{cta}\n\n{tag}",
    ]
    for v in versi:
        v = re.sub(r"\n{3,}", "\n\n", v).strip()
        if len(v) <= BARIS_MAKS:
            return v, len(v), n
    return versi[-1], len(versi[-1]), n


cek = "--cek" in sys.argv
for nama in g.SERI:
    cap, panjang, n = caption_untuk(nama)
    print(f"[{nama}] {n} poin | {panjang} char {'✅' if panjang <= BARIS_MAKS else '❌ LEWAT'}")
    if not cek:
        open(f"/home/mantapman/.hermes/profiles/atun/workspace/caption_uky_car_{nama}.txt", "w").write(cap + "\n")
print("caption ditulis" if not cek else "(mode cek)")
