#!/usr/bin/env python3
"""Generate featured image 1000x567 untuk artikel AI Personal Assistant + upload ke WP + set featured_media."""
from PIL import Image, ImageDraw, ImageFont
import requests, urllib3, json, io
urllib3.disable_warnings()

W, H = 1000, 567
FONT = "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf"
FONT_REG = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"

def font(path, size):
    return ImageFont.truetype(path, size)

def lerp(c1, c2, t):
    return tuple(int(a + (b - a) * t) for a, b in zip(c1, c2))

def wrap(draw, text, f, max_w):
    words, lines, cur = text.split(), [], ""
    for w in words:
        test = (cur + " " + w).strip()
        if draw.textlength(test, font=f) <= max_w:
            cur = test
        else:
            if cur: lines.append(cur)
            cur = w
    if cur: lines.append(cur)
    return lines

# ── 1. Gambar background gradient ──
img = Image.new("RGB", (W, H))
d = ImageDraw.Draw(img)
top, bot = (13, 17, 38), (49, 46, 129)   # navy → indigo
for y in range(H):
    d.line([(0, y), (W, y)], fill=lerp(top, bot, y / H))

# dekorasi: lingkaran samar
overlay = Image.new("RGBA", (W, H), (0, 0, 0, 0))
od = ImageDraw.Draw(overlay)
for (cx, cy, r, alpha) in [(870, 90, 190, 28), (120, 500, 150, 20), (520, -60, 180, 16)]:
    od.ellipse([cx - r, cy - r, cx + r, cy + r], fill=(99, 102, 241, alpha))
img = Image.alpha_composite(img.convert("RGBA"), overlay).convert("RGB")
d = ImageDraw.Draw(img)

# garis aksen
d.rounded_rectangle([60, 0, 68, H], radius=4, fill=(34, 211, 238))

# ── 2. Teks ──
f_badge = font(FONT_REG, 24)
f_title = font(FONT, 42)
f_sub   = font(FONT, 30)
f_foot  = font(FONT_REG, 22)

badge = "PLOT TWIST: 50 AKUN ≠ 50 ADMIN"
bw = d.textlength(badge, font=f_badge)
d.rounded_rectangle([(W - bw) / 2 - 16, 80, (W + bw) / 2 + 16, 128], radius=24,
                    outline=(34, 211, 238), width=2)
d.text(((W - bw) / 2, 90), badge, font=f_badge, fill=(103, 232, 249))

title_lines = wrap(d, "Kelola Banyak Akun Media Sosial dengan AI Personal Assistant", f_title, W - 160)
ty = 165
for ln in title_lines:
    tw = d.textlength(ln, font=f_title)
    d.text(((W - tw) / 2, ty), ln, font=f_title, fill=(255, 255, 255))
    ty += 54

sub = "AI Personal Assistant untuk Bisnis"
sw = d.textlength(sub, font=f_sub)
d.text(((W - sw) / 2, H - 150), sub, font=f_sub, fill=(165, 243, 252))

d.line([(W/2 - 180, H - 95), (W/2 + 180, H - 95)], fill=(255, 255, 255, 70), width=2)
foot = "studiosoft.id  ·  Digital Marketing Agency"
fw = d.textlength(foot, font=f_foot)
d.text(((W - fw) / 2, H - 72), foot, font=f_foot, fill=(203, 213, 225))

out = "/tmp/featured_ai_personal_assistant.png"
img.save(out, "PNG")
print("gambar:", out, img.size)

# ── 3. Upload ke WP + set featured_media ──
WP = "https://studiosoft.id/wp-json/wp/v2"
AUTH = ("bambangbot", "q26r RePo BVy6 pwU2 F3z7 ouyl")
ALT = "AI personal assistant untuk bisnis"

with open(out, "rb") as f:
    r = requests.post(f"{WP}/media", auth=AUTH, verify=False, timeout=60,
                      files={"file": ("featured-ai-personal-assistant.png", f, "image/png")},
                      data={"alt_text": ALT, "caption": "Cara Kelola Banyak Akun Media Sosial dengan AI Personal Assistant"})
print("media:", r.status_code)
media = r.json()
mid = media.get("id")
print("media id:", mid, "| url:", media.get("source_url", "")[:80])

if mid:
    r2 = requests.post(f"{WP}/posts/7869", auth=AUTH, verify=False, timeout=40, json={"featured_media": mid})
    print("set featured:", r2.status_code)
    if r2.status_code == 200:
        p = r2.json()
        print("post:", p.get("link"))
        print("featured_media now:", p.get("featured_media"))
