#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""DAS Threads — Series 6: Tips Mencari Bengkel Mobil di Surabaya.
ATURAN (23 Agu 2026, dari Bos):
- JANGAN sebut harga sama sekali (no harga, no biaya, no murah/mahal).
- Positioning DAS: AMANAH, PROFESIONAL, MELEBIHI HARAPAN.
- Konten WAJIB memancing diskusi & minta orang komen.
Nested 3 post. Slot: 23:00 WIB (16:00 UTC) 23/08/2026.
"""
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['das_ig']  # DAS Threads/IG
LOG_FILE = "/home/mantapman/.hermes/profiles/atun/workspace/threads_log.txt"

SERIES = [
    (
        "Bingung milih bengkel mobil di Surabaya? Jangan asal pilih. 🚗\n"
        "\n"
        "3 hal yang saya cek sebelum percaya ke bengkel:\n"
        "✅ Reputasi — tanya pengalaman pemilik mobil lain\n"
        "✅ Kejelasan diagnosa — bengkel amanah jelasin dulu, baru rekomendasi perbaikan\n"
        "✅ Garansi hasil kerja\n"
        "\n"
        "DAS hadir dengan prinsip: amanah, profesional, melebihi harapan.\n"
        "\n"
        "Giliran kamu! Hal pertama yang kamu cek sebelum percaya ke bengkel? Tulis di komentar 👇\n"
        "\n"
        "#DASBengkelIndonesia #BengkelMobil #BengkelSurabaya"
    ),
    (
        "Lanjut bahas bengkel — satu hal yang sering kelewat: spesialisasi. 🔧\n"
        "\n"
        "Mobil beda, masalah beda, penanganan beda. Bengkel spesialis mengerjakan satu hal dengan sangat dalam.\n"
        "\n"
        "DAS fokus di engine overhaul & repair. Setiap diagnosa teliti, setiap perbaikan dipertanggungjawabkan. Hasil kerja kami melebihi harapan.\n"
        "\n"
        "Menurut kamu: bengkel spesialis atau umum, lebih amanah yang mana? Tulis pendapatmu! 💬\n"
        "\n"
        "#DASBengkelIndonesia #EngineOverhaul #BengkelSurabaya"
    ),
    (
        "Tips terakhir milih bengkel — lihat gimana bengkel memperlakukan mobilmu sejak pertama datang. 🏠\n"
        "\n"
        "Bengkel yang amanah:\n"
        "🔹 Nggak ngarang masalah — semua dijelaskan dengan bukti\n"
        "🔹 Nggak ngejar cuan — fokus ke perbaikan yang dibutuhkan\n"
        "🔹 Nggak ninggalin mobil setengah jadi\n"
        "\n"
        "Di DAS, setiap mobil diperlakukan seperti milik sendiri. Pelanggan balik lagi karena hasilnya nyata.\n"
        "\n"
        "Pernah dapat pengalaman terbaik dari bengkel? Ceritakan di komentar! 🙏\n"
        "\n"
        "#DASBengkelIndonesia #BengkelTerpercaya #Surabaya"
    ),
]

WIB = timezone(timedelta(hours=7))


def enforce_max_chars(text, maxlen=500):
    try:
        return cek_teks_threads(text, label="Caption Threads DAS", 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": "Otomotif",
        "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("🚗 DAS Threads — Series: Tips Mencari Bengkel Mobil di Surabaya")
    print("=" * 55)
    date_str = "2026-08-23"
    slots = [
        f"{date_str}T23:00:00+07:00",
        f"{date_str}T23:03:00+07:00",
        f"{date_str}T23: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" + "=" * 55)
        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"DAS | Series 6 Tips Bengkel Surabaya | 2026-08-23 | 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)
