#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
EveryBe Threads — jadwal harian konten EDUKASI (kebugaran tubuh + kesehatan kewanitaan).
Materi dari artikel everybeofficial.com + link. Tanpa mention. Ajak diskusi.
Anti-redundant via everybe_threads_state.json.
"""
import sys, os, json, hashlib
from datetime import datetime, timedelta, timezone

sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import ReplizClient, ACC

WIB = timezone(timedelta(hours=7))
ROOT = "/home/mantapman/.hermes/profiles/atun/workspace"
STATE = os.path.join(ROOT, "everybe_threads_state.json")
EB_T = ACC.EVERYBE_THREADS if hasattr(ACC, "EVERYBE_THREADS") else "6a44ed1920e4f4f195d8ecf7"

# Artikel edukasi (kebugaran + kewanitaan) — belum dipakai di Threads
ARTIKEL = [
    ("Pentingnya Menjaga Kebersihan Kewanitaan Setiap Hari", "https://www.everybeofficial.com/pentingnya-menjaga-kebersihan-kewanitaan-setiap-hari/"),
    ("Cara Alami Mengatasi Bau Tidak Sedap di Area Kewanitaan", "https://www.everybeofficial.com/cara-alami-mengatasi-bau-tidak-sedap-area-kewanitaan/"),
    ("5 Gerakan Stretching untuk Pekerja Kantoran yang Sering Pegal", "https://www.everybeofficial.com/gerakan-stretching-pekerja-kantoran-pegal/"),
    ("7 Cara Memulai Gaya Hidup Sehat untuk Pekerja Sibuk: Self-Care Edition", "https://www.everybeofficial.com/gaya-hidup-sehat-self-care-pekerja-sibuk/"),
    ("Co Bloong: Solusi Praktis untuk Pegal dan Otot Kaku", "https://www.everybeofficial.com/co-bloong-solusi-praktis-pegal-otot-kaku/"),
    ("Panduan Lengkap Pijat Otot Sendiri di Rumah untuk Pemula", "https://www.everybeofficial.com/panduan-pijat-otot-sendiri-di-rumah-untuk-pemula/"),
    ("Rutinitas Self-Care yang Mudah untuk Menjaga Kesehatan dan Kebugaran", "https://www.everybeofficial.com/rutinitas-self-care-menjaga-kesehatan/"),
    ("Menopause Dini: Kenali Gejala, Penyebab, dan Cara Mengatasinya", "https://www.everybeofficial.com/menopause-dini-gejala-penyebab-cara-mengatasi/"),
    ("7 Tips Mencegah Menopause Dini: Mulai dari Sekarang", "https://www.everybeofficial.com/tips-mencegah-menopause-dini/"),
    ("Sering Duduk Lama? Ini 5 Risiko yang Mengintai Otot dan Sendi Anda", "https://www.everybeofficial.com/sering-duduk-lama-risiko-otot-dan-sendi/"),
    ("Jangan Anggap Sepele! Ini Bahaya Keputihan yang Nggak Normal", "https://www.everybeofficial.com/jangan-anggap-sepele-ini-bahaya-keputihan/"),
    ("Feminine V Spray vs Sabun Kewanitaan: Mana yang Lebih Cocok?", "https://www.everybeofficial.com/feminine-v-spray-vs-sabun-kewanitaan/"),
    ("5 Penyebab Pegal Linu Kronis dan Cara Mengatasinya", "https://www.everybeofficial.com/7-penyebab-pegal-linu-kronis-atasi-co-bloong/"),
    ("7 Penyebab Nyeri Sendi yang Sering Diabaikan dan Cara Mengatasinya", "https://www.everybeofficial.com/7-penyebab-nyeri-sendi-yang-sering-diabaikan/"),
    ("5 Cara Mengatasi Pegal Setelah Olahraga", "https://www.everybeofficial.com/7-cara-mengatasi-pegal-setelah-olahraga-co-bloong/"),
    ("6 Langkah Pertolongan Pertama Keseleo yang Benar", "https://www.everybeofficial.com/7-langkah-pertolongan-pertama-keseleo-co-bloong/"),
    ("8 Tips Mempercepat Pemulihan Otot Cedera", "https://www.everybeofficial.com/7-tips-mempercepat-pemulihan-otot-cedera/"),
    ("Rahasia Kulit Glowing Alami: 5 Bahan dalam Body Care", "https://www.everybeofficial.com/bahan-alami-body-care-kulit-glowing/"),
    ("Body Lotion vs Tone Up Lotion: Apa Bedanya?", "https://www.everybeofficial.com/body-lotion-vs-tone-up-lotion-perbedaan/"),
    ("Skin Barrier Rusak? Kenali Tanda dan Cara Memperbaikinya", "https://www.everybeofficial.com/skin-barrier-rusak-tanda-penyebab-cara-memperbaiki/"),
]

BATAS_THREADS = 480      # Threads menolak caption di atas 500 karakter (penyebab 14 kegagalan Sep 2026)

def caption(judul, url):
    """Caption Threads — WAJIB di bawah 500 karakter.

    Pelajaran 5 Okt 2026: versi lama menyisipkan paragraf panjang + 6 tagar sehingga
    melewati batas dan 14 dari 16 postingan ditolak platform dengan pesan
    "Param text must be at most 500 characters long". Jangan tambah paragraf panjang lagi.
    """
    cap = (
        f"Edukasi hari ini: {judul}. 🌿\n\n"
        f"Kebiasaan kecil yang dilakukan rutin berdampak besar untuk kesehatan jangka panjang.\n\n"
        f"Selengkapnya: {url}\n\n"
        f"Kebiasaan sehat apa yang paling susah kamu jaga? Cerita di komentar.\n\n"
        f"#EveryBe #EdukasiKesehatan #SelfCare"
    )
    if len(cap) > BATAS_THREADS:
        cap = cap[:BATAS_THREADS].rsplit("\n", 1)[0].rstrip()
    assert len(cap) <= 500, f"caption Threads {len(cap)} karakter — melebihi batas 500"
    return cap

def reply():
    return "Jaga kesehatan itu investasi paling murah dan paling lama dirasakan. Mulai dari hal kecil hari ini! 💪"

def load_state():
    if os.path.exists(STATE):
        with open(STATE) as f:
            return json.load(f)
    return {"used": [], "posts": []}

def save_state(st):
    with open(STATE, "w") as f:
        json.dump(st, f, indent=1, ensure_ascii=False)

def hsh(t):
    return hashlib.md5(t.encode()).hexdigest()

def main():
    days = int(sys.argv[1]) if len(sys.argv) > 1 else 10
    start = datetime.now(WIB).replace(hour=0, minute=0, second=0, microsecond=0) + timedelta(days=1)
    st = load_state()
    used = set(st["used"])
    client = ReplizClient()
    ok = fail = 0
    print(f"🌿 EveryBe Threads — edukasi {days} hari mulai {start.strftime('%d/%m/%Y')} (19:00 WIB)")
    day_idx = 0
    for judul, url in ARTIKEL:
        key = hsh(judul)
        if key in used:
            print(f"  ⏭️  sudah: {judul[:45]}")
            continue
        tgl = start + timedelta(days=day_idx)
        day_idx += 1
        ds = tgl.strftime("%Y-%m-%d")
        at = tgl.replace(hour=19, minute=0, tzinfo=WIB).astimezone(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.000Z")
        try:
            res = client.create_schedule(
                EB_T, caption(judul, url), at,
                title=f"EveryBe — {judul[:45]}", topic="Edukasi Kesehatan", type_="text",
                replies=[{"text": reply(), "username": ""}],
            )
            sid = res.get("scheduleId") or res.get("id") or "?"
            ok += 1
            print(f"  ✅ {ds} 19:00 WIB | {judul[:55]}")
        except Exception as e:
            fail += 1
            print(f"  ❌ {ds} | {judul[:40]}: {e}")
        st["used"].append(key)
        st["posts"].append({"date": ds, "judul": judul, "url": url})
        save_state(st)
    save_state(st)
    print(f"\n📊 Total: {ok} OK, {fail} gagal")

if __name__ == "__main__":
    main()
