#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Threads @ukyhandoko — Seri Ajak Bapak-Bapak Belajar AI / WordPress / SEO.
ATURAN (23 Agu 2026, dari Bos):
- Mengajak bapak-bapak belajar AI / WordPress / SEO.
- Humanis, hangat, tidak menggurui, pakai "saya".
- WAJIB memancing diskusi & minta komen.
- ≤500 karakter, jangan mulai dengan makasih/syukur.
Nested 3 post. Slot: 24/08 17:00 WIB (10:00 UTC).
"""
import json, os, sys, urllib.request, urllib.error
from datetime import datetime, timezone, timedelta

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from repliz_client import HEADERS, BASE, ACCOUNTS
from threads_text_check import cek_teks_threads, ThreadsTextError

ACCOUNT_ID = ACCOUNTS['uky_threads']  # @ukyhandoko
LOG_FILE = "/home/mantapman/.hermes/profiles/atun/workspace/threads_log.txt"

SERIES = [
    (
        "Bapak-bapak, usia bukan penghalang buat belajar hal baru. 💪\n"
        "\n"
        "Saya sering ketemu bapak-bapak yang bilang, \"ah saya udah tua, susah "
        "belajar teknologi\". Padahal sekarang teknologi paling gampang dipelajari "
        "— tinggal buka HP, tanya AI, coba-coba.\n"
        "\n"
        "AI itu seperti asisten pribadi: bisa bantu nulis, merangkum, menjawab "
        "pertanyaan. Yang penting berani mulai.\n"
        "\n"
        "Bapak-bapak ada yang sudah pernah coba pakai AI? Ceritakan di komentar! 👇\n"
        "\n"
        "#BelajarAI #BapakBapakMelekTeknologi #AIuntukSemua"
    ),
    (
        "Lanjut buat bapak-bapak: punya usaha sendiri? Belajar WordPress yuk! 🖥️\n"
        "\n"
        "Dulu bikin website susah, harus ngerti coding. Sekarang dengan WordPress, "
        "bapak-bapak bisa bikin website usaha sendiri — pilih template, isi foto "
        "produk, tulis deskripsi, jadi.\n"
        "\n"
        "Website itu toko yang buka 24 jam. Pelanggan bisa lihat usaha kita kapan "
        "saja, dari mana saja.\n"
        "\n"
        "Siapa yang usahanya belum punya website? Tulis di komentar, saya bantu "
        "arahkan langkah pertamanya! 💬\n"
        "\n"
        "#BelajarWordPress #WebsiteUsaha #UMKMNaikKelas"
    ),
    (
        "Terakhir buat bapak-bapak yang sudah punya website: kenalan sama Google "
        "Search Console yuk! 🔍\n"
        "\n"
        "Tool gratis dari Google buat pantau website:\n"
        "✅ Lihat kata kunci yang bikin orang nemu website kita\n"
        "✅ Tahu berapa orang klik website dari pencarian\n"
        "✅ Cek ada masalah di website atau tidak\n"
        "\n"
        "Caranya gampang: daftarkan website, verifikasi, selesai. Datanya jadi "
        "panduan usaha naik kelas.\n"
        "\n"
        "Sudah pernah buka Google Search Console? Ceritakan di komentar! 👇\n"
        "\n"
        "#GoogleSearchConsole #SEO #BelajarDigital"
    ),
]

WIB = timezone(timedelta(hours=7))


def enforce_max_chars(text, maxlen=500):
    try:
        return cek_teks_threads(text, label="Caption Threads Uky", maxlen=maxlen)
    except ThreadsTextError as e:
        print(f"  SKIP: {e}")
        return None


def schedule(text, scheduleAt_iso, parentId=None):
    text = enforce_max_chars(text)
    if text is None:
        return None
    payload = {
        "title": "",
        "description": text,
        "topic": "Edukasi",
        "type": "text",
        "medias": [],
        "meta": {"title": "", "description": "", "url": ""},
        "additionalInfo": {
            "isAiGenerated": False, "isDraft": False,
            "collaborators": [], "mentions": [],
            "music": {"id": "", "artist": "", "name": "", "thumbnail": ""},
            "products": [], "tags": []
        },
        "replies": [],
        "accountId": ACCOUNT_ID,
        "scheduleAt": scheduleAt_iso,
    }
    if parentId:
        payload["replies"] = [parentId]
    body = json.dumps(payload).encode()
    req = urllib.request.Request(f"{BASE}/public/schedule", data=body, headers=HEADERS, method="POST")
    try:
        with urllib.request.urlopen(req) as r:
            result = json.loads(r.read())
            sid = result.get("scheduleId", "?")
            print(f"  ✅ OK → scheduleId: {sid}")
            return sid
    except urllib.error.HTTPError as e:
        err = e.read().decode()
        print(f"  ❌ ERROR {e.code}: {err}")
        return None


def main(dry=False):
    print("💬 Threads @ukyhandoko — Series: Ajak Bapak-Bapak Belajar AI/WP/SEO")
    print("=" * 58)
    date_str = "2026-08-24"
    slots = [
        f"{date_str}T17:00:00+07:00",
        f"{date_str}T17:03:00+07:00",
        f"{date_str}T17:06:00+07:00",
    ]
    ids = []
    prev_sid = None
    for i, (post, slot) in enumerate(zip(SERIES, slots)):
        print(f"\n📌 POST {i+1} ({slot}) — {len(post)} karakter")
        if dry:
            ids.append(f"DRY-{i+1}")
            prev_sid = f"DRY-{i}"
            continue
        sid = schedule(post, slot, parentId=prev_sid)
        if not sid:
            print("  ⚠️ Gagal. Stop.")
            break
        ids.append(sid)
        prev_sid = sid
    if len(ids) == 3:
        print("\n" + "=" * 58)
        print("✅ SEMUA TERJADWAL!" if not dry else "✅ DRY RUN OK")
        for i, sid in enumerate(ids):
            print(f"   {slots[i][-12:]} → Post {i+1} — ID: {sid}")
        if not dry:
            entry = f"Uky | Series Ajak Bapak2 Belajar AI/WP/SEO | 2026-08-24 | IDs: {', '.join(ids)}\n"
            with open(LOG_FILE, "a") as f:
                f.write(entry)
    else:
        print("\n❌ Ada yang gagal.")


if __name__ == "__main__":
    main(dry="--dry" in sys.argv)
