background local helper script

This commit is contained in:
juvilius 2023-07-24 16:18:41 +02:00
parent b8011837e9
commit bfd1ecabeb
Signed by untrusted user who does not match committer: julius
GPG Key ID: 3EAC91A848E1D685
3 changed files with 52 additions and 13 deletions

39
background.py Normal file
View File

@ -0,0 +1,39 @@
import random
import json
from main import make_wallpaper
palettes = [
{"colours": ["#eee4ab", "#e5cb9f", "#99c4c8", "#68a7ad"], "votes": 100000},
{"colours": ["#e4d192", "#cba0ae", "#af7ab3", "#80558c"], "votes": 100000},
{"colours": ["#eeeeee", "#e1d4bb", "#cbb279", "#537188"], "votes": 100000},
{"colours": ["#c0dbea", "#ba90c6", "#e8a0bf", "#fdf4f5"], "votes": 100000},
{"colours": ["#f5ffc9", "#b3e5be", "#a86464", "#804674"], "votes": 100000},
{"colours": ["#ffde7d", "#f6416c", "#f8f3d4", "#00b8a9"], "votes": 100000},
{"colours": ["#53354a", "#903749", "#e84545", "#2b2e4a"], "votes": 100000},
{"colours": ["#967e76", "#d7c0ae", "#eee3cb", "#b7c4cf"], "votes": 100000},
{"colours": ["#fc5185", "#f5f5f5", "#3fc1c9", "#364f6b"], "votes": 100000},
{"colours": ["#eaeaea", "#ff2e63", "#252a34", "#08d9d6"], "votes": 100000},
{"colours": ["#eeeeee", "#00adb5", "#393e46", "#222831"], "votes": 100000},
{"colours": ["#2cd3e1", "#a459d1", "#f266ab", "#ffb84c"], "votes": 100000},
{"colours": ["#ffe194", "#e8f6ef", "#1b9c85", "#4c4c6d"], "votes": 100000},
{"colours": ["#146c94", "#19a7ce", "#b0daff", "#feff86"], "votes": 100000},
{"colours": ["#4c3d3d", "#c07f00", "#ffd95a", "#fff7d4"], "votes": 100000},
{"colours": ["#8bacaa", "#b04759", "#e76161", "#f99b7d"], "votes": 100000},
{"colours": ["#146c94", "#19a7ce", "#afd3e2", "#f6f1f1"], "votes": 100000},
{"colours": ["#9ba4b5", "#212a3e", "#394867", "#f1f6f9"], "votes": 100000},
{"colours": ["#00ffca", "#05bfdb", "#088395", "#0a4d68"], "votes": 100000},
{"colours": ["#7c9070", "#9ca777", "#fee8b0", "#f97b22"], "votes": 100000},
{"colours": ["#002a19", "#000000", "#ffffff", "#e0512f"], "votes": 100000},
]
with open("popular.json", "r") as f:
palettes += json.load(f)
palette = random.choice(palettes)
colours = ["black"] + palette["colours"]
with open("current_speckles.png", "wb") as f:
b = make_wallpaper(
",".join(colours), fileformat="png", size=2.1, density=0.3, local=True
)
# for body in b.body_iterator:
# print(body)

24
main.py
View File

@ -1,17 +1,12 @@
import io import io
import logging
import itertools import itertools
import json import logging
import random import random
from collections import Counter
from copy import deepcopy
from datetime import datetime
from pathlib import Path
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
import uvicorn import uvicorn
from fastapi import FastAPI, Response from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import StreamingResponse from fastapi.responses import StreamingResponse
@ -48,6 +43,7 @@ def make_wallpaper(
size: float | None = 3, size: float | None = 3,
fileformat: str = "svg", fileformat: str = "svg",
orientation: str | None = "landscape", orientation: str | None = "landscape",
local: bool = False,
): ):
if not fileformat in MEDIA_TYPES: if not fileformat in MEDIA_TYPES:
return return
@ -59,12 +55,12 @@ def make_wallpaper(
x, y = (1920, 1080) x, y = (1920, 1080)
elif "x" in orientation: elif "x" in orientation:
resolution = orientation.split("x") resolution = orientation.split("x")
if len(resolution) !=2 : if len(resolution) != 2:
logging.critical("input resolution has more or less than 2 dimensions") logging.critical("input resolution has more or less than 2 dimensions")
return return
x,y = resolution x, y = resolution
if all([x.isdigit(), y.isdigit()]): if all([x.isdigit(), y.isdigit()]):
x,y = int(x), int(y) x, y = int(x), int(y)
else: else:
return return
else: else:
@ -103,7 +99,13 @@ def make_wallpaper(
pad_inches=0, pad_inches=0,
) )
buf.seek(0) buf.seek(0)
return StreamingResponse(content=buf, media_type=MEDIA_TYPES[fileformat]) if local:
filename = f"speckles.{fileformat}"
with open(filename, "wb") as f:
f.write(buf.getbuffer())
return filename
else:
return StreamingResponse(content=buf, media_type=MEDIA_TYPES[fileformat])
buf.close() buf.close()

View File

@ -1,8 +1,6 @@
import itertools import itertools
import json import json
import random import random
from collections import Counter
from datetime import datetime
from pathlib import Path from pathlib import Path
import matplotlib.pyplot as plt import matplotlib.pyplot as plt