Files
nini-naderi/scripts/make-placeholders.py
Alireza HassaniandCursor 39d85512c5 Add replaceable images, category mega menu, and contact pages.
Give every placeholder a real img src, add FAQ and contact sections, and put categories first in the header.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 14:18:47 +03:30

88 lines
3.0 KiB
Python

#!/usr/bin/env python3
import struct
import zlib
from pathlib import Path
COLORS = {
"purple": (216, 198, 255),
"cyan": (165, 243, 252),
"rose": (254, 205, 211),
}
IMAGES = [
("slider-1.png", 960, 420, "purple"),
("slider-2.png", 960, 420, "rose"),
("slider-3.png", 960, 420, "cyan"),
("side-banner-1.png", 360, 200, "cyan"),
("side-banner-2.png", 360, 200, "rose"),
("category-1.png", 160, 160, "purple"),
("category-2.png", 160, 160, "rose"),
("category-3.png", 160, 160, "cyan"),
("category-4.png", 160, 160, "purple"),
("category-5.png", 160, 160, "cyan"),
("category-6.png", 160, 160, "rose"),
("category-7.png", 160, 160, "purple"),
("category-8.png", 160, 160, "rose"),
("sale-banner.png", 240, 400, "rose"),
("sale-1.png", 280, 340, "purple"),
("sale-2.png", 280, 340, "rose"),
("sale-3.png", 280, 340, "cyan"),
("sale-4.png", 280, 340, "purple"),
("sale-5.png", 280, 340, "cyan"),
("sale-6.png", 280, 340, "rose"),
("sale-7.png", 280, 340, "purple"),
("sale-8.png", 280, 340, "cyan"),
("banner-dual-1.png", 640, 280, "purple"),
("banner-dual-2.png", 640, 280, "cyan"),
("top-1.png", 280, 340, "purple"),
("top-2.png", 280, 340, "cyan"),
("top-3.png", 280, 340, "rose"),
("top-4.png", 280, 340, "purple"),
("top-5.png", 280, 340, "cyan"),
("top-6.png", 280, 340, "rose"),
("top-7.png", 280, 340, "purple"),
("top-8.png", 280, 340, "cyan"),
("banner-triple-1.png", 420, 240, "rose"),
("banner-triple-2.png", 420, 240, "cyan"),
("banner-triple-3.png", 420, 240, "purple"),
("yeganeh-1.png", 280, 340, "purple"),
("yeganeh-2.png", 280, 340, "rose"),
("yeganeh-3.png", 280, 340, "cyan"),
("yeganeh-4.png", 280, 340, "purple"),
("yeganeh-5.png", 280, 340, "rose"),
("yeganeh-6.png", 280, 340, "cyan"),
("about.png", 560, 400, "purple"),
("blog-1.png", 360, 220, "purple"),
("blog-2.png", 360, 220, "cyan"),
("blog-3.png", 360, 220, "rose"),
("blog-4.png", 360, 220, "purple"),
("enamad.png", 80, 80, "purple"),
("samandehi.png", 80, 80, "cyan"),
]
def chunk(tag: bytes, data: bytes) -> bytes:
return struct.pack(">I", len(data)) + tag + data + struct.pack(">I", zlib.crc32(tag + data) & 0xFFFFFFFF)
def write_png(path: Path, width: int, height: int, rgb: tuple[int, int, int]) -> None:
row = b"\x00" + bytes(rgb) * width
raw = row * height
with path.open("wb") as handle:
handle.write(b"\x89PNG\r\n\x1a\n")
handle.write(chunk(b"IHDR", struct.pack(">IIBBBBB", width, height, 8, 2, 0, 0, 0)))
handle.write(chunk(b"IDAT", zlib.compress(raw, 9)))
handle.write(chunk(b"IEND", b""))
def main() -> None:
out = Path(__file__).resolve().parents[1] / "public" / "images"
out.mkdir(parents=True, exist_ok=True)
for name, width, height, tone in IMAGES:
write_png(out / name, width, height, COLORS[tone])
print(name)
if __name__ == "__main__":
main()