Add option to color svg file itself with GET argument
This commit is contained in:
@@ -174,10 +174,12 @@ for j in glob.iglob(os.path.join(config.resourcedir, "**","*"), recursive=True):
|
||||
#add svgs:
|
||||
@app.get(f"/svg/<name>.svg")
|
||||
async def get_svg(request, name):
|
||||
return response.text(svg.get(name), headers={"Content-Type": "image/svg+xml"})
|
||||
color = request.args.get("color")
|
||||
return response.text(svg.get(name, color), headers={"Content-Type": "image/svg+xml"})
|
||||
@app.get(f"/svg/<collection>/<name>.svg")
|
||||
async def get_svg(request, collection, name):
|
||||
return response.text(svg.get(os.path.join(collection, name)), headers={"Content-Type": "image/svg+xml"})
|
||||
color = request.args.get("color")
|
||||
return response.text(svg.get(os.path.join(collection, name), color), headers={"Content-Type": "image/svg+xml"})
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=8000)
|
||||
|
||||
@@ -17,13 +17,20 @@ def list_collections():
|
||||
if not i.endswith(".svg"):
|
||||
yield os.path.basename(i)
|
||||
|
||||
|
||||
|
||||
@memoize
|
||||
def get(name):
|
||||
def get(name, color=None):
|
||||
with open(os.path.join(config.svgdir, f"{name}.svg"), "r") as f:
|
||||
return f.read()
|
||||
|
||||
|
||||
if not color:
|
||||
return f.read()
|
||||
return (f.read() #EW!
|
||||
.replace("style=\"fill:#", f"style=\"fill:#{color};")
|
||||
.replace("style='fill:#", f"style='fill:#{color};")
|
||||
.replace("fill=\"#", f"fill=\"#{color}\" asdasd=\"")
|
||||
.replace("fill='#", f"fill='#{color}' asdasd='")
|
||||
.replace("<svg", f"<svg fill=\"#{color}\"")
|
||||
)
|
||||
|
||||
|
||||
def store(name, data):
|
||||
with open(os.path.join(config.svgdir, f"{name}.svg"), "wb" if type(data) is bytes else "w") as f:
|
||||
|
||||
Reference in New Issue
Block a user