#!/usr/bin/env python3
"""Susun lembar kontak (grid) dari tangkapan 'Klinik DNI' + berkas pratinjau berisi usulan teks.

Tidak mengubah apa pun di situs. Hanya menyiapkan bahan untuk Bos.
"""
import json, os, textwrap

from PIL import Image, ImageDraw, ImageFont

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
DIR = f"{WS}/tsc_preview_klinikdni"
daftar = json.load(open(f"{DIR}/daftar.json"))

FONT = "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf"
try:
    font = ImageFont.truetype(FONT, 26)
    font2 = ImageFont.truetype(FONT, 20)
except Exception:
    font = font2 = ImageFont.load_default()

KELOMPOK = {}
for x in daftar:
    KELOMPOK.setdefault(x["halaman"], []).append(x)

lembar = []
for nama, isi in KELOMPOK.items():
    isi.sort(key=lambda y: y["nomor"])
    thumbs = []
    for x in isi:
        im = Image.open(x["berkas"]).convert("RGB")
        im.thumbnail((760, 520))
        thumbs.append((x, im))
    kolom = 2
    baris = (len(thumbs) + kolom - 1) // kolom
    W = kolom * 780 + 20
    H = baris * 600 + 70
    sheet = Image.new("RGB", (W, H), "white")
    d = ImageDraw.Draw(sheet)
    d.text((14, 14), f"Pratinjau 'Klinik DNI' — {nama} ({len(thumbs)} tangkapan)", fill="#111827", font=font)
    for i, (x, im) in enumerate(thumbs):
        cx = (i % kolom) * 780 + 10
        cy = (i // kolom) * 600 + 60
        sheet.paste(im, (cx, cy + 26))
        d.rectangle([cx, cy + 22, cx + im.width + 2, cy + im.height + 30], outline="#e11d48", width=3)
        d.text((cx + 6, cy + 2), f"#{x['nomor']}", fill="#e11d48", font=font2)
    keluar = f"{DIR}/lembar_{nama}.png"
    sheet.save(keluar, quality=92)
    lembar.append(keluar)
    print(f"lembar: {keluar} ({sheet.size})")

# berkas pratinjau teks
with open(f"{WS}/drafts/tsc_preview_klinik_dni.md", "w") as f:
    f.write("# Pratinjau teks \"Klinik DNI\" — belum ada yang diubah\n\n")
    f.write("Ditangkap 7 Oktober 2026 dari halaman live. Kotak merah pada gambar menandai bagiannya.\n")
    f.write("Kolom usulan disiapkan sebagai bahan keputusan, **belum dijalankan**.\n\n")
    for nama, isi in KELOMPOK.items():
        f.write(f"## {nama} ({len(isi)} kemunculan tertangkap)\n\n")
        f.write(f"Halaman: {isi[0]['url']}\n\n")
        for x in sorted(isi, key=lambda y: y["nomor"]):
            f.write(f"### Tangkapan #{x['nomor']} — `{os.path.basename(x['berkas'])}`\n\n")
            f.write(f"> {textwrap.shorten(x['teks'], 220, placeholder=' …')}\n\n")
        f.write("\n")
    f.write("## Usulan penggantian (belum dijalankan)\n\n")
    f.write("| Teks sekarang | Usulan |\n|---|---|\n")
    f.write("| Klinik DNI Krian Sidoarjo | The Skin Code Clinic |\n")
    f.write("| Klinik DNI Krian | The Skin Code Clinic |\n")
    f.write("| Klinik DNI | The Skin Code Clinic |\n")
    f.write("| Visi dan Misi Klinik DNI Krian | Visi dan Misi The Skin Code Clinic |\n")
    f.write("| #KlinikDNIKrian | #TheSkinCodeClinic |\n")
    f.write("| @klinikdnikrian | @theskincode_clinic (sudah dikerjakan) |\n\n")
    f.write("Catatan: mengubah nama di dalam kalimat perlu penyuntingan manual supaya kalimatnya tetap enak\n")
    f.write("dibaca, bukan sekadar cari-ganti.\n")
print(f"\npratinjau teks: {WS}/drafts/tsc_preview_klinik_dni.md")
