#!/usr/bin/env python3
"""TSLaw 16 Okt: siapkan potongan 1000x567 untuk kandidat foto pilihan + cek pustaka media
supaya gambar tidak dipakai ganda."""
import base64, json, os, re, urllib.request, urllib.error
from PIL import Image, ImageDraw, ImageFont

UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}
OUT = "/home/mantapman/.hermes/profiles/atun/workspace/tslaw_listikel"
DOM = "tslaw.id"
AUTH = base64.b64encode(b"bambangbot:EFKm EYGx VQCP Y9go ncPr uM2Y").decode()

KANDIDAT = [("7567551", 0.5), ("6077665", 0.5), ("8441786", 0.5), ("10341357", 0.5), ("17739892", 0.5)]


def potong(pid, ybias):
    u = f"https://images.pexels.com/photos/{pid}/pexels-photo-{pid}.jpeg?auto=compress&cs=tinysrgb&w=1600"
    src = f"{OUT}/_k{pid}.jpg"
    if not os.path.exists(src):
        open(src, "wb").write(urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=90).read())
    im = Image.open(src).convert("RGB")
    w, h = im.size
    tw, th = 1000, 567
    r = tw / th
    if w / h > r:
        cw = int(h * r)
        x0 = (w - cw) // 2
        im = im.crop((x0, 0, x0 + cw, h))
    else:
        ch = int(w / r)
        y0 = int((h - ch) * ybias)
        im = im.crop((0, y0, w, y0 + ch))
    f = f"{OUT}/_coba_{pid}.webp"
    im.resize((tw, th), Image.LANCZOS).save(f, "WEBP", quality=80, method=6)
    return f


# lembar perbandingan potongan
lembar = []
for pid, yb in KANDIDAT:
    f = potong(pid, yb)
    print(f"  {pid} -> {f} ({os.path.getsize(f)//1024} KB) {Image.open(f).size}")
    lembar.append((pid, f))

c = Image.new("RGB", (1000, 567 * len(lembar) + 26 * len(lembar)), "white")
d = ImageDraw.Draw(c)
try:
    ft = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 20)
except Exception:
    ft = ImageFont.load_default()
y = 0
for pid, f in lembar:
    d.text((6, y + 2), f"kandidat {pid}", fill="black", font=ft)
    y += 26
    c.paste(Image.open(f), (0, y))
    y += 567
c.save(f"{OUT}/_banding18.jpg")
print(f"  lembar banding: {OUT}/_banding18.jpg {c.size}")

# pustaka media: file pexels yang mungkin masih bernama asli + media unggulan yang dipakai
h = {"Authorization": f"Basic {AUTH}", **UA}
semua = []
for off in (0, 100, 200):
    r = urllib.request.Request(f"https://{DOM}/wp-json/wp/v2/media?per_page=100&offset={off}&_fields=id,source_url,title", headers=h)
    try:
        with urllib.request.urlopen(r, timeout=180) as x:
            p = json.loads(x.read())
    except urllib.error.HTTPError as e:
        print(f"  media offset {off}: HTTP {e.code}")
        break
    if not p:
        break
    semua += p
print(f"\n  media pustaka: {len(semua)}")
for m in semua:
    if "pexels" in m["source_url"]:
        print("   nama asli pexels:", m["id"], m["source_url"])

r = urllib.request.Request(f"https://{DOM}/wp-json/wp/v2/posts?status=publish,future,draft&per_page=100"
                           "&_fields=id,slug,featured_media,title", headers=h)
with urllib.request.urlopen(r, timeout=180) as x:
    posts = json.loads(x.read())
pakai = {}
for p in posts:
    if p.get("featured_media"):
        pakai.setdefault(p["featured_media"], []).append(p["slug"])
ganda = {k: v for k, v in pakai.items() if len(v) > 1}
print(f"  artikel dicek: {len(posts)} | media id dipakai: {len(pakai)} | media ganda: {len(ganda)}")
for k, v in ganda.items():
    print("   ganda:", k, v)
