#!/usr/bin/env python3
"""DMark Carousel — 10 Slide Listikel Tips v3
BG: #FFF2E9 (cream), Teks: #FF6A00 (orange)
Header: DMARK kiri + page number kanan
Footer: www.dmark.id kiri + hashtag kanan
Judul: Poppins Bold 120px
Body: Poppins Regular 36px
Margin 35px
"""

from PIL import Image, ImageDraw, ImageFont
import os

OUT_DIR = os.path.expanduser("~/.openclaw/workspace-atun/dmark_tips_listicle")
os.makedirs(OUT_DIR, exist_ok=True)

W, H = 1080, 1350
BG = (255, 255, 255)
TXT = (255, 106, 0)

FONT_DIR = os.path.expanduser("~/.fonts")
TITLE = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 120)
BODY = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 36)
BOLD24 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 24)
REG20 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 20)
REG22 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 22)
NUM = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 50)
SEMI = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-SemiBold.ttf"), 32)

M = 35
MR = 50  # margin kanan
MAX_W = W - M - MR  # 995px
NO = 75
JUDUL_START_Y = 170

def wrap_text(draw, text, font, max_w=MAX_W):
    lines = []
    for para in text.split("\n"):
        words = para.split()
        cur = ""
        for w in words:
            test = cur + " " + w if cur else w
            if draw.textbbox((0,0), test, font=font)[2] > max_w - 30 and cur:
                lines.append(cur)
                cur = w
            else:
                cur = test
        if cur: lines.append(cur)
    return lines

def draw_title(draw, texts, start_y, font=TITLE, fill=TXT, max_w=MAX_W, ls=1.3):
    all_lines = []
    for t in texts:
        all_lines.extend(wrap_text(draw, t, font, max_w))
    cy = start_y
    for line in all_lines:
        draw.text((M, cy), line, font=font, fill=fill)
        lh = draw.textbbox((0,0), line, font=font)[3] - draw.textbbox((0,0), line, font=font)[1]
        cy += int(lh * ls)
    return cy

def header(draw, page):
    draw.text((M, M), "DMARK", font=BOLD24, fill=TXT)
    draw.text((W - M, M), page, font=REG22, fill=TXT, anchor="rt")

def footer(draw, left="www.dmark.id", right=""):
    fy = H - 55
    draw.text((M, fy), left, font=REG20, fill=TXT)
    if right:
        draw.text((W - M, fy), right, font=REG20, fill=TXT, anchor="rt")

def new_slide():
    return Image.new("RGB", (W, H), BG)

titles_map = {
    "02/10": "kenali_audiens",
    "03/10": "konsistensi_branding",
    "04/10": "optimalkan_seo",
    "05/10": "konten_visual",
    "06/10": "iklan_berbayar",
    "07/10": "email_marketing",
    "08/10": "data_analitik",
    "09/10": "kolaborasi_influencer",
    "10/10": "evaluasi_optimasi",
}

# ===== SLIDE 1: COVER =====
COVER_FONT = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 160)
d = ImageDraw.Draw(new_slide())
header(d, "01/10")
ey = draw_title(d, ["10 TIPS DIGITAL", "MARKETING"], JUDUL_START_Y + 40, COVER_FONT)
cy = ey + 150
d.text((M, cy), "Ingin mengembangkan bisnis Anda di era digital?", font=BODY, fill=TXT)
cy += 48
d.text((M, cy), "Kami hadirkan 10 tips digital marketing yang bisa", font=BODY, fill=TXT)
cy += 48
d.text((M, cy), "langsung Anda terapkan. Dari DMARK untuk Anda.", font=BODY, fill=TXT)
footer(d, "www.dmark.id", "#10TipsDigital #DMARK")
d._image.save(os.path.join(OUT_DIR, "01_cover.png"))

# ===== SLIDE 2-10: Tips =====
tips_data = [
    ("02/10", ["KENALI AUDIENS ANDA"],
     [("Riset Audiens", "Pahami demografi, minat, dan kebiasaan target pasar."),
      ("Persona Buyer", "Buat profil pelanggan ideal untuk strategi yang lebih tepat."),
      ("Social Listening", "Pantau percakapan online tentang brand dan kompetitor.")],
     "#DMARK #RisetPasar"),
    
    ("03/10", ["KONSISTENSI BRANDING"],
     [("Identitas Visual", "Logo, warna, font yang seragam di semua platform."),
      ("Tone of Voice", "Pilih karakter brand: formal, santai, atau quirky."),
      ("Storytelling", "Cerita yang konsisten membangun kepercayaan pelanggan.")],
     "#DMARK #Branding"),
    
    ("04/10", ["OPTIMALKAN SEO"],
     [("Keyword Research", "Cari kata kunci yang relevan dengan bisnis Anda."),
      ("Konten Berkualitas", "Artikel dan halaman yang informatif dan bermanfaat."),
      ("Technical SEO", "Kecepatan situs, mobile friendly, struktur URL yang rapi.")],
     "#DMARK #SEO"),
    
    ("05/10", ["KONTEN VISUAL", "BERKUALITAS"],
     [("Desain Profesional", "Gunakan template yang rapi dan tipografi yang jelas."),
      ("Video Marketing", "Konten video pendek sangat efektif di media sosial."),
      ("Infografis", "Sajikan data kompleks dengan visual yang mudah dicerna.")],
     "#DMARK #KontenKreatif"),
    
    ("06/10", ["IKLAN BERBAYAR", "(PAID ADS)"],
     [("Google Ads", "Target audiens yang sedang mencari produk Anda."),
      ("Meta Ads", "Jangkau audiens potensial di IG dan Facebook."),
      ("Retargeting", "Kejar pengunjung yang sudah tertarik tapi belum membeli.")],
     "#DMARK #PaidAds"),
    
    ("07/10", ["EMAIL MARKETING"],
     [("Newsletter", "Kirim update rutin ke subscriber dengan konten bernilai."),
      ("Segmentasi", "Pisahkan audiens berdasarkan minat dan perilaku."),
      ("Automasi", "Kirim email otomatis di momen yang tepat (welcome, promo).")],
     "#DMARK #EmailMarketing"),
    
    ("08/10", ["MANFAATKAN DATA", "DAN ANALITIK"],
     [("Pantau KPI", "Analisa metrik seperti reach, engagement, dan konversi."),
      ("A/B Testing", "Uji dua versi konten untuk temukan yang paling efektif."),
      ("Dashboard", "Buat laporan berkala untuk evaluasi strategi marketing.")],
     "#DMARK #DataDriven"),
    
    ("09/10", ["COLLABORATION", "DAN INFLUENCER"],
     [("Pilih Influencer", "Cari yang relevan dengan niche dan audiens bisnis Anda."),
      ("Micro Influencer", "Engagement lebih tinggi, biaya lebih terjangkau."),
      ("User Generated", "Ajak pelanggan buat konten tentang brand Anda.")],
     "#DMARK #Influencer"),
    
    ("10/10", ["EVALUASI DAN", "OPTIMALISASI"],
     [("Review Rutin", "Evaluasi strategi setiap bulan, bukan setahun sekali."),
      ("Iterasi Cepat", "Jangan takut gagal — yang penting belajar dan adaptasi."),
      ("Tetap Update", "Ikuti tren digital marketing terbaru dan sesuaikan strategi.")],
     "#DMARK #Optimalisasi #Growth"),
]

for page, title, tips, htag in tips_data:
    d = ImageDraw.Draw(new_slide())
    header(d, page)
    ey = draw_title(d, title, JUDUL_START_Y)
    cy = ey + 120
    
    for i, (t, desc) in enumerate(tips):
        num = f"{i+1:02d}"
        d.text((M, cy + 5), num, font=NUM, fill=TXT)
        d.text((M + NO, cy + 2), t, font=SEMI, fill=TXT)
        cy += 55
        lines = wrap_text(d, desc, BODY, 1000)
        for line in lines:
            d.text((M + NO, cy), line, font=BODY, fill=TXT)
            cy += 44
        cy += 40
    
    footer(d, "www.dmark.id", htag)
    fname = titles_map.get(page, page.replace("/", "_")) + ".png"
    d._image.save(os.path.join(OUT_DIR, fname))

print(f"✅ 10 slide listikel tips v3 selesai! File di: {OUT_DIR}")
for f in sorted(os.listdir(OUT_DIR)):
    print(f"  {f}")
