#!/usr/bin/env python3
"""Carousel TS Law — "Telat Bayar Pinjol 90 Hari" (7 slide, PG.01-PG.07) → IG TSLAW.
Bos: tayang 15 September 2026 pukul 13:00 WIB (= 06:00 UTC). IDEMPOTEN.
"""
import sys, json, glob, os, re, urllib.request, urllib.parse
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import HEADERS, BASE

IG_TSLAW = "6a76a54d62caae1e04f30968"
IMG = "https://mantapserver.tail3947bb.ts.net/openclaw-img/"
AT = "2026-09-15T06:00:00.000Z"   # 15 Sep 2026 13:00 WIB
TAG = "tslaw_pinjol"

SLIDES = [{"url": IMG + f"{TAG}_{i:02d}.jpg", "type": "image", "alt": f"{TAG}_{i:02d}"}
          for i in range(1, 8)]

CAP = """Telat bayar pinjol 90 hari, utang otomatis hangus? Jawabannya: TIDAK. 🔍

Banyak yang percaya angka 90 hari bikin utang otomatis lunas atau gugur. Faktanya, angka itu berkaitan dengan status keterlambatan — bukan penghapusan kewajiban.

90 HARI BUKAN BATAS HAPUS UTANG
Selama Anda menyetujui perjanjian pinjaman, kewajiban membayar pokok, biaya, dan ketentuan lain tetap mengacu pada isi perjanjian yang Anda tanda tangani. Karena itu, baca kembali kontraknya sebelum mengambil kesimpulan.

APA RISIKONYA JIKA MENUNGGAK?
• Tagihan dan biaya tetap berjalan sesuai perjanjian
• Riwayat atau penilaian kredit dapat terdampak
• Penagihan dapat dilakukan melalui kanal resmi
• Sengketa dapat berlanjut ke proses hukum

TAPI, PENAGIHAN TETAP PUNYA BATAS
Penagihan tidak boleh dilakukan dengan ancaman, intimidasi, penyebaran data pribadi, atau kontak berulang yang mengganggu. Simpan bukti setiap komunikasi — kenali hak Anda.

LANGKAH YANG BISA ANDA LAKUKAN
1. Cek legalitas platform
2. Baca dan hitung kembali tagihan
3. Simpan perjanjian, bukti transfer, dan chat
4. Ajukan komunikasi atau restrukturisasi secara tertulis
5. Gunakan kanal pengaduan resmi bila ada pelanggaran

Jangan menghilang. Menghadapi tagihan dengan pemahaman yang benar jauh lebih aman daripada diam saja.

Pernah atau sedang menghadapi situasi seperti ini? Tulis pengalaman atau pertanyaan Anda di kolom komentar — kita diskusikan bersama. 👇

Butuh pendampingan hukum? Konsultasikan masalah hukum Anda dengan Tito Suprianto Law Firm: https://tslaw.id

📲 WhatsApp: +62 819-0922-2026

Konten ini bersifat edukasi umum dan bukan nasihat hukum untuk kasus spesifik.

#tslaw #titosuprantolawfirm #hukumindonesia #edukasihukum #literasihukum #pinjol #pinjamandigital #hakanda #konsultasihukum #advokatindonesia"""


def list_all():
    docs_all, page = [], 1
    while True:
        q = urllib.parse.urlencode({"page": page, "limit": 100})
        req = urllib.request.Request(f"{BASE}/public/schedule?{q}", headers=HEADERS)
        with urllib.request.urlopen(req, timeout=60) as r:
            d = json.load(r)
        docs = d.get("docs", d.get("data", []))
        docs_all += docs
        if not d.get("hasNextPage") or not docs:
            break
        page += 1
    return [s for s in docs_all if s.get("accountId") == IG_TSLAW]


# --- self-check caption ---
bad_tags = [t for t in re.findall(r"#(\w+)", CAP) if t != t.lower()]
assert not bad_tags, f"hashtag huruf besar: {bad_tags}"
assert not re.findall(r"@\w+", CAP), "ada mention internal"
assert "tslaw.id" in CAP and "komentar" in CAP.lower()
print(f"caption: {len(CAP)} char | hashtag lowercase OK | 0 mention | link + ajakan diskusi OK")

# --- anti-dobel ---
existing = list_all()
dup = [s for s in existing if any(TAG in (m.get("url") or "") for m in (s.get("medias") or []))]
if dup:
    for s in dup:
        print(f"⏭️  SKIP — sudah ada: id={s.get('_id') or s.get('id')} {s.get('scheduleAt')} status={s.get('status')}")
    sys.exit(0)

# --- media ada di disk? ---
missing = [m["url"] for m in SLIDES if not os.path.exists(
    "/home/mantapman/.hermes/profiles/atun/workspace/openclaw-img/" + m["url"].rsplit("/", 1)[1])]
assert not missing, f"file hilang: {missing}"
print("7 slide ada di openclaw-img/ ✅")

payload = {
    "accountId": IG_TSLAW,
    "title": "TS Law — Telat Bayar Pinjol 90 Hari, Utang Otomatis Hangus?",
    "description": CAP,
    "topic": "Edukasi Hukum",
    "type": "album",
    "medias": SLIDES,
    "scheduleAt": AT,
    "replies": [],
}
req = urllib.request.Request(f"{BASE}/public/schedule", data=json.dumps(payload).encode(),
                             headers={**HEADERS, "Content-Type": "application/json"})
with urllib.request.urlopen(req, timeout=45) as r:
    res = json.load(r)
sid = res.get("scheduleId") or res.get("_id") or res.get("id")
print(f"✅ CREATE IG TSLAW | 15 Sep 2026 13:00 WIB | id={sid}")

# --- verifikasi dari API ---
chk = [s for s in list_all() if (s.get("_id") or s.get("id")) == sid]
if chk:
    s = chk[0]
    urls = [m.get("url", "").rsplit("/", 1)[1] for m in (s.get("medias") or [])]
    print(f"   verifikasi: status={s.get('status')} tipe={s.get('type')} scheduleAt={s.get('scheduleAt')} "
          f"slide={len(urls)} urut={urls} replies={len(s.get('replies') or [])}")
else:
    print("   ⚠️ tidak ketemu saat re-list")
