"""
Threads — Nested 3 Level Replies
Post utama → Reply 1 → Reply 2 → Reply 3
Saling ngobrol berantai antar 7 akun Threads
"""

import base64, json, urllib.request
from datetime import datetime, timedelta, timezone

AUTH = 'NDY1NDYwOTg2Njpzb09vSDJJUnk2QmthSXJIU0FmMW5HbHkyUmNvaXc5Wg=='
HEADERS = {'Authorization': AUTH, 'Content-Type': 'application/json'}
BASE = 'https://api.repliz.com'

A = {
    'uky':      '6a334e89c5ff4ce3a3225a48',
    'ss':       '6a335b9ec5ff4ce3a3225c2a',  # studiosoft
    # LEIT DIKELUARKAN 28 Agu 2026 (instruksi Bos): TIDAK ada mention dari akun kita
    # ke Threads LEIT (@leitsurabaya) — jangan dimasukkan lagi ke mesin mention/diskusi.
    'tslaw':    '6a35f8b7c5ff4ce3a322b2ed',
    'tsc':      '6a4bbc5920e4f4f195e52960',
    'das':      '6a39e461c5ff4ce3a3233e09',
    'everybe':  '6a44ed1920e4f4f195d8ecf7',
}

# ────────────────────────────────────────
# 5 THREADS — 3 LEVEL NESTED REPLY
# Struktur: POST → L1 reply → L2 → L3
# ────────────────────────────────────────

THREADS = []

# ── THREAD 1: @ukyhandoko → ngobrolin skill ──
THREADS.append({
    'poster': 'uky',
    'post': (
        "Skill paling underrated menurut saya: "
        "EMPATI. Di era digital yang serba cepet, "
        "banyak orang lupa jadi manusia. "
        "Empati ke pelanggan, ke tim, ke partner. "
        "Bisnis yang tumbuh itu biasanya "
        "dijalankan sama orang yang paham "
        "rasa. Bukan cuma logika & angka."
    ),
    'l1': ('ss', (
        "Data mendukung ini Mbang. Produk dengan "
        "customer experience yang baik punya "
        "loyalty rate 5x lebih tinggi. "
        "Empati itu bukan 'soft skill' doang — "
        "ini measurable impact ke bottom line."
    )),
    'l2': ('tslaw', (
        "Dari sisi legal: empati juga penting "
        "waktu bikin kontrak. Banyak sengketa "
        "terjadi bukan karena pelanggaran, "
        "tapi karena salah paham & gak ada "
        "komunikasi. Kontrak yang baik itu "
        "yang dibaca & dipahami kedua pihak."
    )),
    'l3': ('tsc', (
        "Bener. Di klinik kami, kami selalu "
        "tekankan: komunikasi efektif itu "
        "bukan soal istilah medis yang sempurna. "
        "Tapi soal pesan tersampaikan dengan empati. "
        "Pasien yang didengar = pasien yang percaya."
    )),
})

# ── THREAD 2: @studiosoft.id → digital ──
THREADS.append({
    'poster': 'ss',
    'post': (
        "Digital paling underrated: "
        "LANDING PAGE yang SEDERHANA. "
        "Banyak orang bikin website penuh "
        "efek, animasi, video auto-play — "
        "tapi loading 8 detik & call-to-action "
        "nya disembunyiin. Landing page "
        "terbaik itu yang paling jelas: "
        "ini produknya, ini harganya, "
        "klik di sini. Simpel."
    ),
    'l1': ('uky', (
        "Saya dulu juga gitu. Website toko "
        "online penuh efek & lagu. Pas "
        "sederhanain, omzet naik 40% "
        "karena orang gak bingung. "
        "Simple = trustworthy."
    )),
    'l2': ('everybe', (
        "Di produk kami juga gitu. "
        "Kami sengaja bikin landing page "
        "Feminine V Spray straightforward: "
        "ini masalahnya, ini solusinya, "
        "ini cara pesannya. Gak pake "
        "testimoni lebay. Konsumen "
        "modern lebih suka terus terang."
    )),
    'l3': ('tsc', (
        "Di klinik, pasien juga lebih "
        "percaya sama website yang "
        "jelasin treatment secara "
        "transparan. Harga, proses, "
        "risiko — semua dijelasin. "
        "Bukan cuma before-after yang "
        "wah. Transparansi = trust."
    )),
})

# ── THREAD 3: @dniclinic_krian → skincare ──
THREADS.append({
    'poster': 'tsc',
    'post': (
        "Skincare routine yang paling "
        "underrated: TIDUR CUKUP. "
        "Bukan retinol, bukan serum "
        "mahal. Tapi tidur 7-8 jam "
        "itu regenerative paling kuat "
        "buat kulit. Banyak pasien "
        "datang dengan jerawat & "
        "kulit kusam — ternyata "
        "tidurnya cuma 4-5 jam. "
        "Skin repair happens while you sleep."
    ),
    'l1': ('ss', (
        "Ini bisa dikuantifikasi: "
        "kurang tidur = kadar kortisol "
        "naik = inflamasi meningkat. "
        "Data kesehatan & digital "
        "sama: basic yang baik > "
        "treatment mahal."
    )),
    'l2': ('uky', (
        "Wah, saya paling berdosa "
        "di sini. Sering begadang "
        "kerja sampe 2-3 jam. "
        "Kulit kusam? Jelas. "
        "Pelajaran: istirahat juga "
        "produktivitas."
    )),
    'l3': ('das', (
        "Analoginya kayak mesin mobil. "
        "Mobil balap paling canggih "
        "sekalipun kalo gak pernah "
        "dinginin — overheat & rusak. "
        "Mesin butuh istirahat. "
        "Tubuh juga."
    )),
})

# ── THREAD 4: @leitsurabaya → pendidikan ──
# NONAKTIF 28 Agu 2026 (instruksi Bos): LEIT TIDAK ikut mesin mention/diskusi Threads,
# hanya posting caption. THREAD ini di-skip biar gak ada akun yang mention @leitsurabaya.
if False:
    THREADS.append({
        'poster': 'leit',
        'post': (
            "Metode belajar paling "
            "underrated: KONSISTENSI "
            "MURAH MERIAH. Bukan kursus "
            "jutaan, bukan aplikasi "
            "mahal. Tapi baca 10 menit "
            "tiap hari, dengerin podcast "
            "sambil commuting, praktik "
            "ngomong sendiri di kaca. "
            "Kecil tapi tiap hari. "
            "Hasilnya luar biasa."
        ),
        'l1': ('ss', (
            "Sama kayak content marketing. "
            "Banyak yang nunggu 'momentum' "
            "buat mulai konten. Padahal "
            "1 artikel per minggu selama "
            "setahun = 52 aset digital. "
            "Konsisten > viral sekali."
        )),
        'l2': ('uky', (
            "Nah, ini yang saya terapin "
            "di semua bisnis. Gak perlu "
            "revolusi. Evolusi kecil tiap "
            "hari. 1% better every day "
            "= 37x better dalam setahun. "
            "Matematika konsistensi."
        )),
        'l3': ('tslaw', (
            "Di legal juga: review kontrak "
            "tiap tahun itu underrated. "
            "Peraturan berubah, bisnis "
            "berkembang. Review rutin "
            "lebih murah daripada "
            "sengketa di pengadilan."
        )),
    })

# ── THREAD 5: @everybe → personal care ──
THREADS.append({
    'poster': 'everybe',
    'post': (
        "Rutinitas perawatan diri "
        "paling underrated: "
        "MINUM AIR PUTIH. Bukan "
        "skincare 10 langkah. "
        "Dehidrasi ringan aja "
        "bikin kulit kusam, "
        "mata cekung, badan "
        "lemes. 8 gelas sehari "
        "= anti aging gratis. "
        "Mulai dari yang paling dasar."
    ),
    'l1': ('tsc', (
        "Bener. Sebagai dokter, "
        "saya selalu bilang: "
        "sebelum beli serum "
        "baru, cek dulu cukup "
        "air minumnya? Banyak "
        "masalah kulit & organ "
        "intim yang sumbernya "
        "cuma dehidrasi."
    )),
    'l2': ('uky', (
        "Pengalaman pribadi: "
        "saya dulu sering sakit "
        "kepala & gak fokus. "
        "Ternyata kurang minum "
        "doang. Pas disiplin "
        "8 gelas sehari — "
        "kepala enteng, "
        "mood lebih stabil."
    )),
    'l3': ('das', (
        "Mobil juga perlu air "
        "radiator biar gak "
        "overheat. Air itu "
        "pendingin alami "
        "buat mesin & tubuh. "
        "Jangan sampe "
        "kering baru minum."
    )),
})


def schedule_nested(poster, post_text, l1, l2, l3, schedule_at):
    """Schedule post with 3-level nested replies"""
    
    payload = {
        'accountId': poster,
        'title': '',
        'description': post_text.strip(),
        'scheduleAt': schedule_at,
        'type': 'text',
        'medias': [],
        'topic': '',
        'replies': [
            {
                'accountId': l1[0],  # Reply level 1
                'description': l1[1].strip(),
                'replies': [
                    {
                        'accountId': l2[0],  # Reply level 2
                        'description': l2[1].strip(),
                        'replies': [
                            {
                                'accountId': l3[0],  # Reply level 3
                                'description': l3[1].strip(),
                            }
                        ]
                    }
                ]
            }
        ]
    }
    
    data = json.dumps(payload).encode('utf-8')
    req = urllib.request.Request(f'{BASE}/public/schedule', data=data, headers=HEADERS, method='POST')
    try:
        with urllib.request.urlopen(req, timeout=30) as resp:
            result = json.loads(resp.read())
            return True, result
    except urllib.error.HTTPError as e:
        body = e.read().decode()
        return False, f"HTTP {e.code}: {body[:200]}"
    except Exception as e:
        return False, str(e)


def main():
    print("=" * 60)
    print("Threads — Nested 3 Level Replies 🗣️")
    print(f"Waktu: {datetime.now(timezone.utc).strftime('%Y-%m-%d %H:%M UTC')}")
    print("=" * 60)
    
    now = datetime.now(timezone.utc)
    
    # Mulai jam 21:00 WIB = 14:00 UTC
    # Slot: 14, 20, 02, 08, 14 UTC = 21, 02, 08, 14, 20 WIB
    besok = now.replace(hour=14, minute=0, second=0, microsecond=0)  # 21:00 WIB
    if besok <= now:
        besok = besok + timedelta(days=1)
    
    success = 0
    failed = 0
    
    for i, t in enumerate(THREADS):
        # Setiap thread +6 jam
        post_time = besok + timedelta(hours=6 * i)
        post_str = post_time.strftime('%Y-%m-%dT%H:%M:%S.000Z')
        
        poster_id = A[t['poster']]
        l1_id = A[t['l1'][0]]
        l2_id = A[t['l2'][0]]
        l3_id = A[t['l3'][0]]
        
        wib = (post_time + timedelta(hours=7)).strftime('%H:%M WIB')
        
        print(f"\n--- #{i+1} @{t['poster']} → {post_str[:10]} | {wib} ---")
        
        ok, res = schedule_nested(
            poster_id, t['post'],
            (l1_id, t['l1'][1]),
            (l2_id, t['l2'][1]),
            (l3_id, t['l3'][1]),
            post_str
        )
        
        if ok:
            print(f"  ✅ Post @{t['poster']}")
            print(f"     ↪ L1: @{t['l1'][0]}")
            print(f"       ↪ L2: @{t['l2'][0]}")
            print(f"         ↪ L3: @{t['l3'][0]}")
            success += 1
        else:
            print(f"  ❌ {res}")
            failed += 1
    
    print(f"\n{'=' * 60}")
    print(f"✅ {success} | ❌ {failed}")
    print(f"{'=' * 60}")
    print()
    print(f"📌 5 thread × 3 level nested reply = 20 post total")
    print(f"   Mulai: {besok.strftime('%d %b %H:%M UTC')} / {(besok + timedelta(hours=7)).strftime('%H:%M WIB')}")


if __name__ == '__main__':
    main()
