#!/usr/bin/env python3
"""Generate FB image 1080x1350 for DAS — dark bg, orange accent"""
from PIL import Image, ImageDraw, ImageFont
import os, textwrap

W, H = 1080, 1350
BG = '#1a1a2e'
ORANGE = '#f97316'
WHITE = '#ffffff'

OUT = '/home/mantapman/.hermes/profiles/atun/workspace/das_fb_post.png'

def find_font(size, bold=False):
    home = os.path.expanduser('~')
    paths = [
        f'{home}/.local/share/fonts/Poppins-{"Bold" if bold else "Regular"}.ttf',
        f'{home}/.fonts/Poppins-{"Bold" if bold else "Regular"}.ttf',
        '/usr/share/fonts/truetype/poppins/Poppins-Bold.ttf' if bold else '/usr/share/fonts/truetype/poppins/Poppins-Regular.ttf',
        '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf' if bold else '/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf',
    ]
    for p in paths:
        if os.path.exists(p):
            return ImageFont.truetype(p, size)
    return ImageFont.load_default()

def draw_centered_text(draw, text, font, y, color=WHITE, max_width=W-120):
    lines = []
    for line in text.split('\n'):
        wrapped = textwrap.fill(line, width=int(max_width / (font.size * 0.55)))
        lines.extend(wrapped.split('\n'))
    
    for line in lines:
        bbox = draw.textbbox((0, 0), line, font=font)
        tw = bbox[2] - bbox[0]
        x = (W - tw) // 2
        draw.text((x, y), line, fill=color, font=font)
        y += font.size + 10
    return y

def draw_aligned_text(draw, text, font, y, color=WHITE, max_width=W-120, align='left'):
    x_start = 60 if align == 'left' else (W - max_width) // 2
    lines = []
    for line in text.split('\n'):
        wrapped = textwrap.fill(line, width=int(max_width / (font.size * 0.55)))
        lines.extend(wrapped.split('\n'))
    
    for line in lines:
        draw.text((x_start, y), line, fill=color, font=font)
        y += font.size + 8
    return y

img = Image.new('RGB', (W, H), BG)
draw = ImageDraw.Draw(img)

font_title = find_font(85, bold=True)
font_sub = find_font(38)
font_body = find_font(32)
font_small = find_font(28)
font_badge = find_font(22, bold=True)

# === ORANGE ACCENT BAR AT TOP ===
draw.rectangle([(0, 0), (W, 12)], fill=ORANGE)

# === DAS LOGO/TITLE ===
draw.text((60, 45), "DAS BENGKEL INDONESIA", fill=ORANGE, font=font_badge)
draw.text((60, 75), "Spesialis Engine Overhaul & Repair", fill='#aaaaaa', font=find_font(18))

# === BADGE: NEW ARTICLE ===
badge_x, badge_y = 60, 130
draw.rounded_rectangle([(badge_x, badge_y), (badge_x + 180, badge_y + 40)], fill=ORANGE, radius=6)
draw.text((badge_x + 12, badge_y + 6), "ARTIKEL BARU", fill='#1a1a2e', font=find_font(20, bold=True))

# === MAIN TITLE ===
title_text = "KAPAN MOBIL\nPERLU ENGINE\nOVERHAUL?"
y = draw_aligned_text(draw, title_text, font_title, 200, color=WHITE, max_width=960)

# === ORANGE DIVIDER ===
y += 15
draw.line([(60, y), (400, y)], fill=ORANGE, width=4)

# === SUBTITLE / HOOK ===
y += 40
hook = "6 Tanda Bahaya yang Wajib Anda Ketahui Sebelum Mesin Rusak Total"
y = draw_aligned_text(draw, hook, font_sub, y, color=ORANGE, max_width=960)

# === BODY ===
y += 25
body = (
    "Engine overhaul atau turun mesin bukan keputusan yang bisa diambil "
    "sembarangan. Tapi kalau mobil Anda sudah mulai menunjukkan gejala-gejala "
    "berikut, sebaiknya jangan ditunda-tunda lagi.\n\n"
    "• Konsumsi oli berlebihan (isi tiap 500-1000 km)\n"
    "• Asap knalpot biru — tanda oli terbakar di ruang bakar\n"
    "• Tenaga hilang dan akselerasi terasa lambat\n"
    "• Suara mesin kasar atau knocking\n"
    "• Oli bercampur air (warna susu/coklat)\n"
    "• Konsumsi BBM meningkat drastis tanpa sebab jelas"
)
y = draw_aligned_text(draw, body, font_body, y, color=WHITE, max_width=960)

# === CTA ===
y += 40
cta_bg_x, cta_bg_y = 60, y
cta_w, cta_h = 340, 55
draw.rounded_rectangle([(cta_bg_x, cta_bg_y), (cta_bg_x + cta_w, cta_bg_y + cta_h)], fill=ORANGE, radius=28)
draw.text((cta_bg_x + 20, cta_bg_y + 12), "BACA ARTIKEL LENGKAP →", fill='#1a1a2e', font=find_font(22, bold=True))

# === FOOTER ===
y = H - 45
draw.text((60, y), "dasindonesia.com", fill=ORANGE, font=find_font(20, bold=True))
draw.text((W - 60, y), "#DASIndonesia #EngineOverhaul", fill='#aaaaaa', font=find_font(18), anchor='rb')

img.save(OUT)
print(f'Image saved: {OUT}')
