from PIL import Image, ImageDraw, ImageFont

W, H = 1200, 675
CREAM = (244, 241, 234); INK = (14, 14, 14); BLUE = (42, 111, 219)
MUTE = (120, 116, 108)
BASE = "/workspace/vc_covers"
FP = BASE + "/fonts/Onest.ttf"
MONO_P = "/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf"


def onest(size, wght=400):
    f = ImageFont.truetype(FP, size)
    try:
        f.set_variation_by_axes([wght])
    except Exception:
        pass
    return f


def mono(s):
    return ImageFont.truetype(MONO_P, s)


img = Image.new("RGB", (W, H), CREAM)
d = ImageDraw.Draw(img)

bx = 800
d.rectangle([bx, 0, W, H], fill=INK)
for i, c in enumerate([(255, 95, 86), (255, 189, 46), (39, 201, 63)]):
    d.ellipse([bx + 34 + i * 26, 36, bx + 34 + i * 26 + 14, 50], fill=c)
tf = mono(20)
lines = [
    ("> agent: scan placements", (150, 150, 150)),
    ("  cut junk sources", BLUE),
    ("> bids: move +8% (corridor)", (150, 150, 150)),
    ("  budget lock: ON", BLUE),
    ("> conv keys: protected", (150, 150, 150)),
    ("  daily report ...  ok", (120, 220, 140)),
]
y = 92
for t, c in lines:
    d.text((bx + 34, y), t, font=tf, fill=c)
    y += 44

LX = 70
kf = onest(23, 700)
d.text((LX, 66), "М А Р К Е Т И Н Г   П О - Ч Е С Т Н О М У", font=kf, fill=BLUE)
d.line([LX + 2, 104, LX + 150, 104], fill=BLUE, width=4)

tf_big = onest(130, 800)
d.text((LX - 4, 152), "ДНЕВНИК", font=tf_big, fill=INK)
d.text((LX - 4, 292), "АГЕНТА", font=tf_big, fill=INK)

sf = onest(29, 500)
d.text((LX, 454), "AI-агент сам ведёт рекламу. На живых бюджетах.",
       font=sf, fill=(60, 58, 54))

pill = onest(29, 700)
pt = "ВЫПУСК 0"
tb = d.textbbox((0, 0), pt, font=pill)
pw, ph = tb[2] - tb[0], tb[3] - tb[1]
px, py, pad = LX, 518, 17
d.rounded_rectangle([px, py, px + pw + pad * 2, py + ph + pad * 2],
                    radius=13, fill=BLUE)
d.text((px + pad, py + pad - tb[1]), pt, font=pill, fill=CREAM)

ff = onest(23, 600)
d.text((LX, H - 56), "safronov-marketing.ru", font=ff, fill=MUTE)

img.save(BASE + "/cover_v0.png", "PNG")
print("saved", img.size)
