|
# retoor <retoor@molodetz.nl>
|
|
|
|
import hashlib
|
|
import logging
|
|
from typing import Optional
|
|
|
|
from devplacepy.avatar import generate_avatar_svg
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def background_color(username: Optional[str]) -> str:
|
|
seed = username or "?"
|
|
return hashlib.md5(seed.encode("utf-8")).hexdigest()[:6]
|
|
|
|
|
|
def avatar_payload(username: Optional[str]) -> dict:
|
|
seed = username or "anonymous"
|
|
return {"b": background_color(seed), "i": f"u/{seed}.png"}
|
|
|
|
|
|
def render_png(username: str, size: int = 128) -> bytes:
|
|
import cairosvg
|
|
|
|
svg = generate_avatar_svg(username)
|
|
return cairosvg.svg2png(
|
|
bytestring=svg.encode("utf-8"), output_width=size, output_height=size
|
|
)
|