# retoor import hashlib from functools import lru_cache from html import escape PALETTE = ( ("#1b1a17", "#e2a100"), ("#141414", "#c9c2b2"), ("#1d1b16", "#b98a2e"), ("#121417", "#8fa3a8"), ("#191512", "#d9b779"), ) @lru_cache(maxsize=4096) def render_avatar_svg(seed, size=64): size = max(16, min(int(size), 512)) try: digest = hashlib.sha256(seed.encode("utf-8")).digest() background, ink = PALETTE[digest[0] % len(PALETTE)] cells = [] unit = size / 5 for row in range(5): for col in range(3): if digest[1 + row * 3 + col] % 2 == 0: for mirrored in {col, 4 - col}: cells.append( f'' ) body = "".join(cells) except Exception: background, ink = PALETTE[0] letter = escape((seed or "?")[:1].upper()) body = f'{letter}' return ( f'' f'{body}' ) def avatar_url(seed, size=64): return f"/avatar/svg/{seed}?size={size}"