from PIL import Image, ImageDraw, ImageFont, ImageFilter, ImageEnhance
from pathlib import Path
import zipfile, textwrap

OUT = Path('/root/agent_public/files/agilizer/daily/2026-08-19')
OUT.mkdir(parents=True, exist_ok=True)
base_path = Path('/root/.hermes/profiles/davinci/cache/images/openai_codex_gpt-image-2-high_20260819_080213_832b2325.png')
logo_path = Path('/root/agilizer_report/agilizer_site_logo.png')
final_path = OUT / 'agilizer_post_viral_2026-08-19_antes-nao-fazia-esse-barulho.png'
caption_path = OUT / 'legenda_agilizer_post_viral_2026-08-19.txt'
zip_path = OUT / 'pack_agilizer_post_viral_2026-08-19.zip'

W, H = 1080, 1350
DARK = (3, 20, 11)
GREEN = (0, 203, 67)
MINT = (124, 255, 208)
WHITE = (244, 248, 242)

# Load/crop base to exact 4:5. Source is already close; crop height slightly.
img = Image.open(base_path).convert('RGB')
sw, sh = img.size
# cover crop center-right subject preserved
scale = max(W/sw, H/sh)
resized = img.resize((int(sw*scale), int(sh*scale)), Image.Resampling.LANCZOS)
rw, rh = resized.size
# keep right-side mechanic and left negative space: crop a little from right if needed? centered works.
left = max(0, (rw - W)//2)
top = max(0, (rh - H)//2)
canvas = resized.crop((left, top, left+W, top+H)).convert('RGBA')

# Premium color grade: reduce forbidden warm hues slightly, boost contrast, darken for typography.
graded = ImageEnhance.Color(canvas.convert('RGB')).enhance(0.82)
graded = ImageEnhance.Contrast(graded).enhance(1.18)
graded = ImageEnhance.Brightness(graded).enhance(0.88).convert('RGBA')
canvas = graded

# Dark/green legibility gradient on left and top.
overlay = Image.new('RGBA', (W, H), (0,0,0,0))
pix = overlay.load()
for y in range(H):
    for x in range(W):
        left_alpha = int(max(0, 255 * (1 - x/720)) * 0.76)
        top_alpha = int(max(0, 255 * (1 - y/620)) * 0.30)
        bottom_alpha = int(max(0, 255 * ((y-950)/400)) * 0.28) if y > 950 else 0
        a = max(left_alpha, top_alpha, bottom_alpha)
        # dark green rather than pure black
        pix[x,y] = (DARK[0], DARK[1], DARK[2], min(210, a))
canvas = Image.alpha_composite(canvas, overlay)

d = ImageDraw.Draw(canvas)

# Subtle brand graphic elements
# vertical green rule and small mint line
d.rounded_rectangle((72, 112, 84, 382), radius=6, fill=GREEN)
d.rectangle((96, 122, 268, 126), fill=MINT+(180,))
# small editorial label, not sales CTA
font_med = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf', 28)
font_small = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf', 25)
d.text((96, 145), 'FRASES DE OFICINA', font=font_med, fill=MINT)

# Headline: heavy, dominant, 3-10 words. Highlight BARULHO.
font_big = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf', 102)
font_big2 = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf', 118)
lines = [
    ('ANTES NÃO', WHITE, font_big),
    ('FAZIA ESSE', WHITE, font_big),
    ('BARULHO', GREEN, font_big2),
]
y = 215
for text, color, font in lines:
    # shadow for editorial depth
    d.text((96+3, y+5), text, font=font, fill=(0,0,0,150))
    d.text((96, y), text, font=font, fill=color)
    bbox = d.textbbox((96, y), text, font=font)
    y += (bbox[3]-bbox[1]) + 4

# Quote/identification subline at bottom-left; not product/sales
font_sub = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf', 36)
sub = 'todo mecânico já ouviu no mínimo 1 vez'
d.rounded_rectangle((74, 1030, 622, 1092), radius=22, fill=(3,20,11,172), outline=(0,203,67,120), width=2)
d.text((101, 1044), sub.upper(), font=font_sub, fill=WHITE)

# Original logo asset, discreet bottom-left; use original colors/proportions.
logo = Image.open(logo_path).convert('RGBA')
# crop transparent bounds if any
bbox = logo.getbbox()
if bbox:
    logo = logo.crop(bbox)
target_w = 205
lh = int(logo.height * target_w / logo.width)
logo = logo.resize((target_w, lh), Image.Resampling.LANCZOS)
# place on darkened quiet area; no alteration to colors
canvas.alpha_composite(logo, (76, 1215))

# Export final
canvas.convert('RGB').save(final_path, quality=96)

caption = '''ANTES NÃO FAZIA ESSE BARULHO. 😅

Tem frase que ativa o modo investigação na hora.

Qual é a frase clássica que mais aparece aí na sua oficina?

#oficinamecanica #mecanico #autoeletrico #autocenter #donodeoficina #gestaodeoficina #mundomecanico #oficinabrasil #mecanicaautomotiva #empreendedorismoautomotivo
'''
caption_path.write_text(caption, encoding='utf-8')

with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as z:
    z.write(final_path, final_path.name)
    z.write(caption_path, caption_path.name)

print(final_path)
print(caption_path)
print(zip_path)
