"""
Threads — Underrated Conversations
Saling ngobrol antar akun dengan tema "Underrated"
Format: Post utama → reply antar akun (nested alami)
"""

import base64, json, urllib.request, sys
from datetime import datetime, timedelta, timezone
from textwrap import dedent

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

# Account IDs
ACC = {
    'uky': '6a334e89c5ff4ce3a3225a48',
    'studiosoft': '6a335b9ec5ff4ce3a3225c2a',
    # 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',
}

# ─── THREAD 1: @ukyhandoko buka topik "Underrated dalam Bisnis" ───
threads = []

# ── THREAD 1: Underrated dalam Bisnis & Digital ──
threads.append({
    'poster': 'uky',
    'post': (
        "Hal yang underrated banget di bisnis kecil: "
        "KONSISTENSI. Bukan strategi gila, bukan modal gede, "
        "bukan iklan bombastis. Tapi konsisten nulis konten, "
        "konsisten layanin pelanggan, konsisten improve 1% tiap hari. "
        "Itu yang bikin bisnis bertahan 10 tahun."
    ),
    'replies': [
        ('studiosoft', (
            "Nambahin, Mbang. Yang underrated juga: DATA. "
            "Banyak pebisnis jalan feeling aja padahal data "
            "bisa ngasih tau mana yg beneran works. "
            "Konsisten + data = mesin pertumbuhan."
        )),
        ('tslaw', (
            "Setuju. Yang lebih underrated lagi: DOKUMEN. "
            "Bisnis udah jalan 5 tahun tapi akta pendirian "
            "aja gak punya. Atau merek gak didaftarin. "
            "Itu fondasi, bukan birokrasi."
        )),
        ('das', (
            "Di bengkel juga gitu. Underrated: perawatan rutin. "
            "Banyak pelanggan dateng pas udah mogok. "
            "Padahal ganti oli rutin & cek rem tiap 5000 km "
            "bikin mobil awet 20 tahun."
        )),
        ('tsc', (
            "Underrated di kulit: SUNSCREEN. "
            "Banyak yang pikir sunscreen cuma buat "
            "ke pantai atau kalo panas. Padahal sinar UVA "
            "tembus awan & jendela. Pemakaian rutin = "
            "anti aging termurah."
        )),
        ('everybe', (
            "Yang paling underrated: KESEHATAN ORGAN INTIM. "
            "Masih dianggap tabu dibahas. Padahal "
            "perawatan sehari-hari pakai produk yang tepat "
            "mencegah masalah besar di kemudian hari. "
            "Jangan nunggu sakit baru peduli."
        )),
    ]
})

# ── THREAD 2: @studiosoft buka soal "Underrated di Digital" ──
threads.append({
    'poster': 'studiosoft',
    'post': (
        "Banyak yang tanya: strategi digital apa yang "
        "paling underrated sekarang?\n\n"
        "Jawabanku: EMAIL MARKETING + SEO. "
        "Semua sibuk ke TikTok, Reels, paid ads. "
        "Padahal email punya ROI 4200% dan SEO "
        "ngasih traffic gratis selamanya kalo bener. "
        "Gak sexy emang, tapi works banget."
    ),
    'replies': [
        ('uky', (
            "Bener banget. Dulu saya juga sibuk ngejar "
            "viral doang. Pas beneran fokus ke SEO & "
            "email list, baru terasa dampak jangka panjangnya. "
            "Viral itu ephemeral. SEO itu aset."
        )),
        ('tslaw', (
            "Digital underrated lainnya: DIGITAL FOOTPRINT. "
            "Banyak UMKM asal upload konten tanpa sadar "
            "data & hak cipta. Satu konten viral, eh ternyata "
            "fotonya gak punya lisensi. Itu bisa kena gugatan."
        )),
        ('das', (
            "Digital underrated buat bengkel: GOOGLE "
            "MY BUSINESS. Banyak bengkel offline gak "
            "ngurus listing Google. Padahal 80% pelanggan "
            "baru cari bengkel lewat Google."
        )),
        ('tsc', (
            "Di klinik juga gitu. Banyak pasien cari "
            "rekomendasi skincare lewat Google dulu. "
            "Klinik yg gak punya konten edukasi di "
            "digital — susah dipercaya pasien baru."
        )),
        ('everybe', (
            "Setuju. Bahkan produk personal care "
            "sekarang orang cek review dulu di Google "
            "& sosial media. Yang underrated: "
            "KONTEN EDUKASI. Bukan jualan, tapi "
            "ngedukasi — itu yang bikin trust."
        )),
    ]
})

# ── THREAD 3: @tsc/dniclinic buka soal "Underrated di Kesehatan" ──
threads.append({
    'poster': 'tsc',
    'post': (
        "Skincare rutin yang paling underrated: "
        "CLEANSER yang LEMBUT. Banyak orang pilih "
        "facial wash yang bikin muka kenceng abis "
        "cuci muka — padahal itu tanda skin barrier "
        "rusak. Cleanser lembut + moisturizer = "
        "foundation kulit sehat. Gak perlu mahal, "
        "perlu konsisten."
    ),
    'replies': [
        ('studiosoft', (
            "Fakta. Ini analogi dengan website: "
            "orang sibuk bikin desain keren, efek "
            "animasi, tapi loading-nya 10 detik. "
            "Foundation-nya (kecepatan & struktur) "
            "gak diurus. Cleanser lembut = hosting "
            "cepat, foundation."
        )),
        ('uky', (
            "Nah ini pelajaran yg saya terapin "
            "di agency: urusin basic dulu sebelum "
            "fancy stuff. Basic yang solid > "
            "gimmick yang cepet luntur."
        )),
        ('das', (
            "Di mobil juga: OLI MESIN. Banyak yang "
            "peduli eksterior kinclong, interior bersih, "
            "tapi lupa ganti oli. Padahal oli itu "
            "darahnya mesin. Basic."
        )),
        ('everybe', (
            "Underrated di kewanitaan: PH BALANCE. "
            "Banyak fokus ke wangi & pemutih, "
            "tapi lupa jaga pH alami. "
            "PH seimbang > wangi semerbak. "
            "Sehat dulu baru cantik."
        )),
    ]
})

# ── THREAD 4: @leit buka soal "Underrated di Pendidikan & Karir" ──
# NONAKTIF 28 Agu 2026 (instruksi Bos): LEIT TIDAK ikut mesin mention/diskusi Threads,
# hanya posting caption. Blok ini dihapus biar gak ada akun yang mention @leitsurabaya.

# ── THREAD 5: @das buka soal "Underrated di Otomotif" ──
threads.append({
    'poster': 'das',
    'post': (
        "Perawatan mobil paling underrated: "
        "BAN & SPERENG (spooring balancing). "
        "Banyak yang baru sadar pas ban udah "
        "botak sebelah atau mobil oleng. "
        "Cek tekanan ban & spooring tiap "
        "10.000 km itu murah — tapi efeknya "
        "besar: irit BBM, ban awet, & "
        "keselamatan terjamin."
    ),
    'replies': [
        ('studiosoft', (
            "Ibarat website: hosting murah "
            "tapi gak pernah maintenance = "
            "loading lemot & sering down. "
            "Rutin maintenance kecil mencegah "
            "krisis besar. Sama kayak spooring."
        )),
        ('uky', (
            "Saya dulu gak peduli spooring, "
            "mikirnya 'ah gak penting'. Pas "
            "ban aus 20rb km padahal baru "
            "setahun — baru nyesel. Pelajaran: "
            "preventive > reactive."
        )),
        ('tslaw', (
            "Preventive maintenance ini mirip "
            "legal audit. Banyak bisnis baru "
            "sadar pas kena masalah hukum. "
            "Padahal audit rutin setahun sekali "
            "lebih murah daripada biaya sengketa."
        )),
        ('tsc', (
            "Sama kayak kulit. Banyak yang "
            "baru periksa ke dokter pas jerawat "
            "udah parah & berbekas. Padahal "
            "perawatan rutin + konsultasi dini "
            "jauh lebih murah & efektif."
        )),
        ('everybe', (
            "Intinya: JANGAN TUNGGU RUSAK. "
            "Perawatan rutin itu investasi, "
            "bukan biaya. Mau mobil, kulit, "
            "atau organ intim — sama aja."
        )),
    ]
})

# ── THREAD 6: @everybe buka soal "Underrated di Self-Care Wanita" ──
threads.append({
    'poster': 'everybe',
    'post': (
        "Self-care yang paling underrated: "
        "MERAWAT ORGAN INTIM dengan PRODUK TEPAT. "
        "Banyak yang habis ratusan ribu buat "
        "skincare wajah, tapi pake sabun "
        "sembarangan buat area intim. "
        "Padahal pH area intim beda dengan "
        "kulit lain. Jangan asal pakai sabun mandi!"
    ),
    'replies': [
        ('tsc', (
            "Bener banget. Sabun mandi punya "
            "pH 8-10, area intim ideal pH 3.5-4.5. "
            "Pakai sabun mandi = ganggu flora normal. "
            "Ini edukasi dasar yang jarang diketahui."
        )),
        ('uky', (
            "Ngerii... saya baru tau. Selama ini "
            "kirain sabun mandi ya untuk semua. "
            "Edukasi kayak gini penting disebar."
        )),
        ('studiosoft', (
            "Ini kenapa konten edukasi penting. "
            "Banyak orang gak tau karena gak ada "
            "yang ngomong. Padahal informasinya "
            "krusial buat kesehatan."
        )),
        ('das', (
            "Sama kayak pilih oli. Gak bisa "
            "sembarangan. Mobil 2 tak vs 4 tak "
            "bedanya oli aja. Pilih salah = "
            "mesin rusak. Pilih pembersih "
            "sembarangan = kesehatan terganggu."
        )),
    ]
})


def schedule_post(account_id, description, schedule_at, title=""):
    payload = {
        'accountId': account_id,
        'title': title,
        'description': description,
        'topic': '',
        'type': 'text',
        'medias': [],
        'scheduleAt': schedule_at,
        'replies': [],
    }
    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:
        error_body = e.read().decode()
        return False, f"HTTP {e.code}: {error_body[:150]}"
    except Exception as e:
        return False, str(e)


def main():
    print("=" * 60)
    print("Threads — Underrated Conversations 🗣️")
    print("=" * 60)

    now = datetime.now(timezone.utc)
    
    # Find next slot (h+3 jam dari sekarang)
    # Round to nearest hour + 3h
    next_time = now.replace(minute=0, second=0, microsecond=0) + timedelta(hours=3)
    
    if next_time < now:
        next_time = next_time + timedelta(hours=1)
    
    print(f"\nMulai dari: {next_time.strftime('%Y-%m-%d %H:%M')} UTC")
    
    # ─── SCHEDULE 6 THREADS (setiap 6 jam) ───
    hour_gap = 6
    success = 0
    failed = 0
    
    for i, thread in enumerate(threads):
        post_time = next_time + timedelta(hours=hour_gap * i)
        post_str = post_time.strftime('%Y-%m-%dT%H:%M:%S.000Z')
        
        poster = thread['poster']
        poster_name = poster.upper()
        desc = thread['post'].strip()
        
        if len(desc) > 500:
            desc = desc[:497] + "..."
        
        # ── POST UTAMA ──
        print(f"\n--- Thread {i+1}: @{poster} ---")
        ok, res = schedule_post(ACC[poster], desc, post_str)
        if ok:
            print(f"  ✅ [{post_str[:10]}] @{poster} — posted")
            success += 1
        else:
            print(f"  ❌ [{post_str[:10]}] @{poster} — {res}")
            failed += 1
        
        # ── REPLIES ──
        for j, (replier, reply_text) in enumerate(thread['replies']):
            # Reply 30 menit setelah post → +30m per reply, jadi ada jeda antar reply
            reply_offset = 30 * (j + 1)  # 30, 60, 90... menit setelah post
            reply_time = post_time + timedelta(minutes=reply_offset)
            reply_str = reply_time.strftime('%Y-%m-%dT%H:%M:%S.000Z')
            
            rtext = reply_text.strip()
            if len(rtext) > 500:
                rtext = rtext[:497] + "..."
            
            ok, res = schedule_post(ACC[replier], rtext, reply_str)
            if ok:
                print(f"  ✅  @{replier} ↪ reply #{j+1}")
                success += 1
            else:
                print(f"  ❌  @{replier} ↪ reply #{j+1} — {res}")
                failed += 1
    
    print(f"\n{'=' * 60}")
    print(f"Selesai! ✅ {success} | ❌ {failed}")
    print(f"{'=' * 60}")


if __name__ == '__main__':
    main()
