#!/usr/bin/env python3
"""Prepara a foto do Borrello pra capa YouTube:
- Recorta meio-busto (parte superior, cabeca + peito)
- Aplica leve dessaturacao + boost dourado
- Aplica vinheta gradient lateral pra mesclar com fundo azul-noite
"""
from PIL import Image, ImageEnhance, ImageDraw
import os

FONTE_DIR = "/opt/mia/workspace/clientes/francisco_borrello/criativos_francisco/fotos_borrello"

# Escolha v2: _MG_9314.jpg
# Borrello em terno cinza, camisa rosa clara, olhar direto, postura serena e autoritaria.
# Levemente virado pra direita (perfeito pra direcionar o olho do espectador pro Bagua a direita).
FOTO_ESCOLHIDA = "_MG_9314.jpg"

foto_path = os.path.join(FONTE_DIR, FOTO_ESCOLHIDA)
print(f"Lendo: {foto_path}")

img = Image.open(foto_path).convert("RGB")
print(f"Original: {img.size}")

w, h = img.size

# Recortar meio-busto: cabeca + ombros + parte do peito
# Foco horizontal: rosto esta no terco direito da imagem original. Vou recortar pegando
# a regiao do rosto + busto, centrando no rosto.
# Rosto aproximado em x=0.55 (centro da foto), y=0.20 (terco superior)
# Quero crop vertical (mais alto que largo) pra encaixar no terco esquerdo da capa.
crop_w = int(w * 0.58)
crop_h = int(h * 0.58)   # do topo ate ~58% da altura (cabeca + busto)
# Centralizar o crop no rosto: rosto na altura y=h*0.20
# Crop centro horizontal: x_centro = w*0.55
x_centro = int(w * 0.55)
crop_x = max(0, x_centro - crop_w // 2)
crop_y = 0  # do topo
if crop_x + crop_w > w:
    crop_x = w - crop_w

img_crop = img.crop((crop_x, crop_y, crop_x + crop_w, crop_y + crop_h))
print(f"Apos crop: {img_crop.size}")

# Redimensionar pra altura da capa YouTube (720px de altura)
target_h = 720
ratio = target_h / img_crop.height
target_w = int(img_crop.width * ratio)
img_crop = img_crop.resize((target_w, target_h), Image.LANCZOS)
print(f"Apos resize: {img_crop.size}")

# Tratamento de cor:
sat = ImageEnhance.Color(img_crop)
img_crop = sat.enhance(0.78)  # leve dessaturacao

con = ImageEnhance.Contrast(img_crop)
img_crop = con.enhance(1.12)

bri = ImageEnhance.Brightness(img_crop)
img_crop = bri.enhance(0.88)  # escurecer pra mood noturno

# Aplicar tint dourado nas highlights (multiplicar por (255, 240, 200) em areas claras)
# Simples: blend leve com cor dourada apenas nas highlights via overlay
overlay_gold = Image.new("RGB", img_crop.size, (255, 220, 150))
img_crop_blend = Image.blend(img_crop, overlay_gold, 0.05)
img_crop = img_crop_blend

img_rgba = img_crop.convert("RGBA")

# Vinheta gradient pra direita (mesclar com #1A1A2E azul-noite)
overlay = Image.new("RGBA", img_rgba.size, (0, 0, 0, 0))
draw = ImageDraw.Draw(overlay)
for x in range(img_rgba.width):
    progress = x / img_rgba.width
    if progress < 0.50:
        a = 0
    else:
        a = int(((progress - 0.50) / 0.50) ** 1.4 * 255)
        a = min(a, 255)
    draw.line([(x, 0), (x, img_rgba.height)], fill=(26, 26, 46, a))
img_rgba = Image.alpha_composite(img_rgba, overlay)

# Vinheta inferior (escurecer parte de baixo)
overlay2 = Image.new("RGBA", img_rgba.size, (0, 0, 0, 0))
draw2 = ImageDraw.Draw(overlay2)
for y in range(img_rgba.height):
    progress = y / img_rgba.height
    if progress < 0.65:
        a = 0
    else:
        a = int(((progress - 0.65) / 0.35) ** 1.4 * 200)
    draw2.line([(0, y), (img_rgba.width, y)], fill=(26, 26, 46, a))
img_rgba = Image.alpha_composite(img_rgba, overlay2)

# Vinheta esquerda sutil tambem pra "abracar" a borda
overlay3 = Image.new("RGBA", img_rgba.size, (0, 0, 0, 0))
draw3 = ImageDraw.Draw(overlay3)
for x in range(img_rgba.width):
    progress = 1 - (x / img_rgba.width)  # invertido
    if progress < 0.80:
        a = 0
    else:
        a = int(((progress - 0.80) / 0.20) * 120)
    draw3.line([(x, 0), (x, img_rgba.height)], fill=(26, 26, 46, a))
img_rgba = Image.alpha_composite(img_rgba, overlay3)

destino = "/opt/mia/workspace/clientes/francisco_borrello/live-02-06/visuais/temp/borrello_capa.png"
img_rgba.save(destino, "PNG")
print(f"OK: {destino} ({img_rgba.size})")
print(f"Foto usada: {FOTO_ESCOLHIDA}")
