#!/usr/bin/env python3
"""Tambah bagian berguna ke #7531 dan #7532 (artikel di bawah 900 kata)."""

import base64, html, json, re, time, urllib.request, urllib.error

S = "https://studiosoft.id"
AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()
ANCHOR = "<h2>Pertanyaan yang sering muncul</h2>"

TAMBAHAN = {
    7531: [
        "<h2>Mengukur kualitas konten berbantuan AI</h2>",
        "<p>Kualitas bukan soal terdengar canggih, tapi soal berguna. Tiga ukuran sederhana yang bisa dipakai: apakah ada satu angka atau rentang di dalamnya, apakah ada satu contoh yang spesifik, dan apakah pembaca bisa melakukan sesuatu setelah membacanya. Kalau ketiganya tidak ada, konten itu belum layak tayang.</p>",
        "<h2>Alur kerja 30 menit per artikel</h2>",
        "<p>Sepuluh menit untuk menyusun kerangka dari pertanyaan pelanggan, sepuluh menit menulis bagian inti sendiri, lima menit meminta AI merapikan kalimat, dan lima menit terakhir memeriksa fakta serta menambahkan gambar. Alur ini menjaga isi tetap berasal dari Anda, sementara mesin mengurus pekerjaan yang membosankan.</p>",
        "<h2>Yang perlu dilakukan setelah tayang</h2>",
        "<p>Pantau tiga hal selama dua pekan pertama: apakah halaman muncul di pencarian, pertanyaan apa yang ditanyakan pembaca, dan bagian mana yang paling banyak dibaca. Bahan perbaikan hampir selalu datang dari situ — bukan dari menambah artikel baru.</p>",
        "<h2>Bagaimana menjelaskan ke tim</h2>",
        "<p>Hindari aturan yang kaku seperti \"maksimal 30% AI\". Yang lebih mudah dipahami: setiap artikel harus punya minimal satu hal yang hanya bisa ditulis oleh orang dalam bisnis Anda — pengalaman, angka internal, atau kejadian nyata.</p>",
    ],
    7532: [
        "<h2>Empat pertanyaan sebelum memilih alat</h2>",
        "<p>Pekerjaan apa yang akan digantikan, siapa yang memakainya setiap hari, bagaimana hasilnya diperiksa, dan apa yang terjadi kalau alatnya berhenti dipakai. Kalau pertanyaan keempat tidak bisa dijawab, berarti alat itu belum benar-benar dibutuhkan.</p>",
        "<h2>Ritme mingguan tim kecil dengan alat</h2>",
        "<p>Senin: menyusun daftar pertanyaan pelanggan. Selasa sampai Rabu: menulis dan menyunting dua artikel. Kamis: mengunggah dan memeriksa tampilan. Jumat: membaca data dan mencatat pertanyaan baru. Satu alat masuk di dua titik: produksi dan pemeriksaan.</p>",
        "<h2>Biaya yang sering terlupa</h2>",
        "<p>Selain langganan bulanan, ada waktu belajar, waktu koordinasi, dan waktu memperbaiki hasil yang keliru. Untuk tim kecil, tiga biaya itu biasanya lebih besar daripada biaya langganannya. Karena itu, mulailah dari satu alat — bukan dari paket lengkap.</p>",
        "<h2>Kapan sebaiknya berhenti memakai alat</h2>",
        "<p>Kalau setelah sebulan pemakaian Anda masih memperbaiki hasilnya lebih lama daripada mengerjakannya sendiri, hentikan. Bukan karena alatnya buruk, tapi karena masalahnya mungkin di alur kerja yang belum rapi.</p>",
    ],
}


def api(path, data=None):
    h = {"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"}
    body = None
    if data is not None:
        body = json.dumps(data).encode(); h["Content-Type"] = "application/json"
    r = urllib.request.Request(S + path, data=body, headers=h, method="POST" if data else "GET")
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=200) as x:
                return x.status, json.loads(x.read())
        except urllib.error.HTTPError as e:
            if e.code in (404, 500, 502, 503, 504):
                time.sleep(3); continue
            return e.code, e.read().decode()[:200]
        except Exception as e:
            time.sleep(3); err = e
    return 0, str(err)[:150]


for pid, bagian in TAMBAHAN.items():
    st, p = api(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=content,title,status,date")
    raw = p["content"]["raw"]
    sebelum = len(html.unescape(re.sub(r"<[^>]+>", " ", raw)).split())
    if bagian[0] in raw:
        print(f"  #{pid} sudah pernah ditambah — skip"); continue
    baru = raw.replace(ANCHOR, "\n".join(bagian) + "\n" + ANCHOR, 1)
    if baru == raw:
        print(f"  #{pid} anchor FAQ tidak ketemu — dilewati"); continue
    st2, _ = api(f"/wp-json/wp/v2/posts/{pid}", {"content": baru})
    _, chk = api(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=content")
    sesudah = len(html.unescape(re.sub(r"<[^>]+>", " ", chk["content"]["raw"])).split())
    print(f"  #{pid} POST {st2} | {sebelum} → {sesudah} kata | status {p['status']} | tayang {p['date']}")
