#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Pilih varian caption <=478 char utk 3 Okt 2026, tulis threads_content_today.json."""
import json, re

DATE = "2026-10-03"

VAR = {
"uky": [
"""Saya sering ditanya: usaha kecil perlu pakai AI, atau cuma ikut tren?

Jawaban saya: mulai dari pekerjaan yang paling menyita waktu — balas chat, rekap penjualan, admin. Di artikel ini saya tulis panduannya dari nol, tanpa istilah rumit.

Yang menang bukan yang paling canggih, tapi yang konsisten mencoba.

https://studiosoft.id/implementasi-ai-untuk-umkm/

Bagian mana bisnis Anda yang ingin dibantu AI? Tulis di komentar ya.

#umkm #ai #bisnisdigital""",
],
"tslaw": [
"""Saya sering melihat bisnis besar menunda urusan hukum sampai masalahnya datang.

Ada yang sebaiknya tidak ditangani sendiri: kontrak kerja sama, sengketa mitra, atau mulai merekrut banyak orang. Artikel ini merangkum tujuh situasinya.

Mencegah lebih murah daripada berperkara.

https://www.tslaw.id/tujuh-situasi-perusahaan-butuh-law-firm/

Urusan hukum mana yang paling diremehkan pelaku usaha? Tulis di komentar.

#hukum #lawfirm #bisnis #legalitasusaha""",
],
"tsc": [
"""Banyak pasien saya sudah ganti produk berkali-kali, tapi kulitnya belum berubah. Penyebabnya bukan produknya, tapi perawatan yang tidak sesuai jenis kulit.

Di artikel ini saya bahas tujuh perawatan wajah yang paling dicari di Krian.

Kulit sehat butuh perawatan tepat dan rutin.

https://www.theskincodeclinic.com/7-perawatan-wajah-di-klinik-kecantikan-krian/

Pernah coba perawatan yang tak sesuai harapan? Share di komentar!

#klinikkulit #perawatanwajah #krian #sidoarjo""",
],
"das": [
"""Banyak pemilik mobil fokus ke mesin saja, padahal rasa tidak nyaman saat berkendara sering datang dari kaki-kaki.

Balancing dan spooring itu perawatan kecil, tapi efeknya besar: setir bergetar, ban habis sebelah, mobil melayang di kecepatan tinggi. Lakukan rutin tiap 10.000 km.

https://dasindonesia.com/pentingnya-balancing-dan-spooring-mobil/

Seberapa sering balancing dan spooring sebaiknya dilakukan? Tulis di komentar ya.

#otomotif #perawatanmobil #bengkelmobil""",
],
}
SLOT = {"uky": 14, "tslaw": 17, "tsc": 20, "das": 23}

CTA_RE = re.compile(r"komentar|diskusi|pendapat|tulis di|share|pengalaman|menurut anda|menurut kamu|setuju", re.I)
URL_RE = re.compile(r"https?://\S+")
MENTION_RE = re.compile(r"@\w+")
CJK = re.compile(r"[\u3000-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff00-\uffef]")

accounts, ok_all = [], True
for acc, variants in VAR.items():
    pick = None
    for i, t in enumerate(variants):
        t = t.strip()
        tags = re.findall(r"#(\w+)", t)
        good = (len(t) <= 478 and URL_RE.search(t) and not MENTION_RE.search(t)
                and not CJK.search(t) and CTA_RE.search(t[-170:])
                and all(x == x.lower() for x in tags)
                and (t.count(".") + t.count("?") + t.count("!")) >= 5)
        print(f"[{acc}] varian{i}: len={len(t)} ok={good} kalimat={t.count('.')+t.count('?')+t.count('!')}")
        if good and pick is None:
            pick = t
    if pick is None:
        ok_all = False
        print(f"  !! TIDAK ADA varian valid utk {acc}")
        continue
    item = {"account": acc, "slot": SLOT[acc], "text": pick}
    if acc == "uky":
        item["allow_if_no_ownlink"] = True
    accounts.append(item)

print("SEMUA VALID:", ok_all)
if ok_all:
    order = ["uky", "tslaw", "tsc", "das"]
    accounts.sort(key=lambda a: order.index(a["account"]))
    json.dump({"date": DATE, "accounts": accounts},
              open("threads_content_today.json", "w"), ensure_ascii=False, indent=2)
    print("-> threads_content_today.json ditulis")
