From 210d604b13a9e46348cfa208ac0bdd10bf938526 Mon Sep 17 00:00:00 2001 From: Niklas Marion Date: Sat, 30 Mar 2024 15:24:37 +0100 Subject: [PATCH] set font --- fonts/BebasNeue-Regular.ttf | Bin 0 -> 57676 bytes agency_fb.ttf => fonts/agency_fb.ttf | Bin server.py | 25 ++++++++++++++++++++----- 3 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 fonts/BebasNeue-Regular.ttf rename agency_fb.ttf => fonts/agency_fb.ttf (100%) diff --git a/fonts/BebasNeue-Regular.ttf b/fonts/BebasNeue-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d2190b5139486ecf8c655e1cc1d06e8df3ffe249 GIT binary patch literal 57676 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 z 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 Us93kVP`C3~$z=8;^`0dCFGySA_y7O^ literal 0 HcmV?d00001 diff --git a/agency_fb.ttf b/fonts/agency_fb.ttf similarity index 100% rename from agency_fb.ttf rename to fonts/agency_fb.ttf diff --git a/server.py b/server.py index 9c93d22..f3301bb 100644 --- a/server.py +++ b/server.py @@ -13,7 +13,7 @@ def headers(): header = [] - for (dirpath, dirnames, filenames) in walk("header"): + for (_, _, filenames) in walk("header"): filenames = [f for f in filenames if f.endswith( '.png') or f.endswith('.jpg')] header.extend(filenames) @@ -23,7 +23,7 @@ def headers(): def footers(): footer = [] - for (dirpath, dirnames, filenames) in walk("footer"): + for (_, _, filenames) in walk("footer"): filenames = [f for f in filenames if f.endswith( '.png') or f.endswith('.jpg')] footer.extend(filenames) @@ -31,6 +31,16 @@ def footers(): return footer +def fonts(): + fonts = [] + for (_, _, filenames) in walk("fonts"): + filenames = [f for f in filenames if f.endswith( + '.ttf')] + fonts.extend(filenames) + break + return fonts + + @app.get("/", responses={ 200: { "content": {"image/png": {}} @@ -40,15 +50,17 @@ def generate_bib( text: str, header: str, footer: str, + font: str, header_offset: Optional[int] = 60, ): - # check if header and footer are valid if header not in headers(): return {"error": "Header not found"} if footer not in footers(): return {"error": "Footer not found"} + if font not in fonts(): + return {"error": "Font not found"} image = generate_image(text, header, footer, - "agency_fb.ttf", header_offset) + font, header_offset) return Response(content=image, media_type="image/png", headers={"Content-Disposition": "filename=" + text + ".png"}) @@ -56,7 +68,10 @@ def generate_bib( def get_headers(): return headers() - @app.get("/footers") def get_footers(): return footers() + +@app.get("/fonts") +def get_fonts(): + return fonts()