#!/usr/bin/env python3
"""Pasang tombol WhatsApp di artikel TSLaw yang belum punya (#3207 dan #3205).

Jalankan tanpa argumen = uji. Dengan --go = pasang (dengan cadangan).
"""
import base64, importlib.util, json, re, sys, time, urllib.request

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
spec = importlib.util.spec_from_file_location("cfg", f"{WS}/cfg_tslaw.py")
m = importlib.util.module_from_spec(spec)
spec.loader.exec_module(m)
C = m.CFG
DOM = C.get("domain", C.get("situs"))
A = base64.b64encode(f"{C['user']}:{C['pass']}".encode()).decode()
H = {"Authorization": f"Basic {A}", "User-Agent": "Mozilla/5.0", "Content-Type": "application/json"}


def tombol(pesan, label):
    p = pesan.replace(" ", "%20").replace(",", "%2C")
    return ('<p style="text-align:center;margin:32px 0 8px"><a href="https://wa.me/6281909222026?text='
            + p + '" target="_blank" rel="noopener" style="display:inline-block;background-color:#1c2b4a;'
                  'color:#ffffff;padding:15px 34px;font-size:19px;font-weight:bold;text-decoration:none;'
                  'border-radius:6px;">' + label + "</a></p>")


SISIPAN = {
    3207: ("""<p>Kalau kontrak yang sedang Anda siapkan perlu diperiksa sebelum ditandatangani, tim kami bisa
membantu menelaah klausulnya lebih dulu, terutama bagian yang mengatur pembayaran, pengakhiran, dan
penyelesaian sengketa.</p>""",
           tombol("Halo TS Law, saya ingin konsultasi tentang kontrak bisnis", "Konsultasi via WhatsApp")),
    3205: ("""<p>Kalau Anda sedang menyiapkan pendirian PT dan ingin memastikan dokumen, struktur pemegang
saham, serta modalnya sudah sesuai ketentuan, tim kami bisa membantu memeriksanya sebelum diajukan.</p>""",
           tombol("Halo TS Law, saya ingin konsultasi tentang pendirian PT", "Konsultasi via WhatsApp")),
}


def rest(p, method="GET", data=None):
    body = json.dumps(data).encode() if data is not None else None
    r = urllib.request.Request(f"https://{DOM}{p}", data=body, headers=H, method=method)
    with urllib.request.urlopen(r, timeout=180) as x:
        return x.status, json.loads(x.read())


GO = "--go" in sys.argv
cadangan = {}
for pid, (pembuka, tom) in SISIPAN.items():
    st, x = rest(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=content,slug,status,link")
    isi = x["content"]["raw"]
    if "wa.me/6281909222026" in isi:
        print(f"   #{pid} sudah ada tombol, dilewati")
        continue
    akhir = re.sub(r"\s+", " ", re.sub("<[^>]+>", " ", isi[-200:])).strip()
    print(f"\n■ #{pid} [{x['status']}] {x['slug']}")
    print(f"   akhiran sekarang: …{akhir[-150:]}")
    baru = isi.rstrip() + "\n\n" + pembuka + "\n\n" + tom + "\n"
    print(f"   akan ditambah: pembuka {len(pembuka)} char + tombol ({len(tom)} char)")
    if GO:
        cadangan[str(pid)] = isi
        st2, d2 = rest(f"/wp-json/wp/v2/posts/{pid}", "POST", {"content": baru})
        print(f"   simpan: http={st2}")
        time.sleep(1)
        st3, v = rest(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=content")
        hm = "wa.me/6281909222026" in v["content"]["raw"]
        print(f"   baca balik: tombol {'ADA' if hm else 'TIDAK ADA'} · panjang {len(v['content']['raw'])} char")

if GO:
    json.dump(cadangan, open(f"{WS}/tslaw_backup_tombol_wa.json", "w"), ensure_ascii=False)
    print("\n✅ selesai · cadangan: tslaw_backup_tombol_wa.json")
else:
    print("\n(uji — pakai --go untuk memasang)")
