#!/usr/bin/env python3
"""Bukti RITME warna feed IG SS (koreksi 3 Okt 2026): carousel 08:30 + reel 11:00 + reel 19:00 per tanggal."""
import os
import subprocess
from PIL import Image, ImageDraw, ImageFont

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
IMG = os.path.join(WS, "openclaw-img")
OUT = "/tmp/ss_ig_ritme_3-5okt.jpg"
TW, TH, PAD, HDR, LBL = 240, 300, 10, 40, 40

ROWS = [
    ("03 Okt 2026 (ganjil)", "ss_car10_manufaktur_01.jpg", "ss_reel_biru_09.mp4", "ss_reel_biru_19.mp4",
     "carousel: biru dulu", "11:00 BIRU (sudah tayang)", "19:00 BIRU (dibetulkan)"),
    ("04 Okt 2026 (genap)", "ss_car10_seoproperti_01.jpg", "ss_reel_biru_11.mp4", "ss_reel_putih_16.mp4",
     "carousel: putih dulu", "11:00 BIRU", "19:00 PUTIH"),
    ("05 Okt 2026 (ganjil)", "ss_car10_analitikproperti_01.jpg", "ss_reel_putih_18.mp4", "ss_reel_biru_13.mp4",
     "carousel: biru dulu", "11:00 PUTIH", "19:00 BIRU"),
    ("06 Okt 2026 (genap)", None, "ss_reel_biru_17.mp4", "ss_reel_putih_20.mp4",
     "carousel: putih dulu (cron)", "11:00 BIRU", "19:00 PUTIH"),
]


def font(sz, bold=False):
    p = "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf" if bold else \
        "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"
    return ImageFont.truetype(p, sz)


def frame(mp4, idx):
    dst = f"/tmp/_rf_{os.path.basename(mp4)}_{idx}.jpg"
    if not os.path.exists(dst):
        subprocess.run(["ffmpeg", "-y", "-v", "error", "-ss", "0.4", "-i", os.path.join(IMG, mp4),
                        "-frames:v", "1", "-vf", "scale=240:-2", dst], check=True)
    return Image.open(dst).convert("RGB")


W = PAD * 4 + TW * 3 + 320
H = PAD + HDR + len(ROWS) * (TH + LBL + PAD) + PAD
sheet = Image.new("RGB", (W, H), (236, 238, 242))
d = ImageDraw.Draw(sheet)
f, fb = font(16), font(17, True)
for c, judul in enumerate(["", "FEED 08:30 (slide 1)", "REEL 11:00", "REEL 19:00"]):
    if judul:
        x = PAD + 320 + PAD * c + TW * (c - 1)
        d.text((x, PAD + 10), judul, font=fb, fill=(18, 43, 99))
for r, (tgl, car, r11, r19, lab_car, lab_11, lab_19) in enumerate(ROWS):
    y = PAD + HDR + r * (TH + LBL + PAD)
    d.text((PAD, y + TH // 2 - 40), tgl, font=fb, fill=(18, 43, 99))
    if car:
        im = Image.open(os.path.join(IMG, car)).convert("RGB").resize((TW, TH))
        sheet.paste(im, (PAD + 320, y + LBL))
    d.text((PAD + 320, y + 6), lab_car, font=f, fill=(70, 80, 100))
    for i, (mp4, lab) in enumerate([(r11, lab_11), (r19, lab_19)]):
        x = PAD + 320 + PAD * (i + 1) + TW * (i + 1)
        fr = frame(mp4, f"{r}_{i}")
        k = min(TW / fr.width, TH / fr.height)
        fr = fr.resize((round(fr.width * k), round(fr.height * k)))
        sheet.paste(fr, (x + (TW - fr.width) // 2, y + LBL + (TH - fr.height) // 2))
        d.text((x, y + 6), lab, font=f, fill=(70, 80, 100))
sheet.save(OUT, quality=90)
print(OUT, sheet.size)
