From ba11447da1be0c0e7eb47adaa62891b1434f8780 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=94=EB=83=A5?= Date: Sat, 8 Feb 2025 21:10:40 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=84=EC=8B=9C=20=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/library/lib.py | 25 +++++++++++++++++++++++++ app/library/schoolevent.json | 14 ++++++++++++++ app/library/skeleton_schoolevent.png | Bin 0 -> 18556 bytes app/run.py | 13 +++++++++++++ app/temp.py | 3 +++ 5 files changed, 55 insertions(+) create mode 100644 app/library/schoolevent.json create mode 100644 app/library/skeleton_schoolevent.png create mode 100644 app/temp.py diff --git a/app/library/lib.py b/app/library/lib.py index b98192b..0a51ec9 100644 --- a/app/library/lib.py +++ b/app/library/lib.py @@ -15,6 +15,7 @@ from PIL import ImageFont import library.vts as vts import os +from datetime import datetime with open('./config.json') as json_file: json_data = json.load(json_file) @@ -65,6 +66,30 @@ def ์–ป๊ธฐ(MLSV_YMD:str): print("๐Ÿฒ | Meal Info Image Saved") +def ํ•™์‚ฌ์ผ์ •_์–ป๊ธฐ(): + print("์„œ์ฝ”๊ฐ€๊ณ ์‹ถ๋‹ค๋ฐœ๋™") + ์˜ค๋Š˜ = datetime.now() + ํ•™์‚ฌ์ผ์ • = "" +# print(f"{ROOT}/library/skeleton.png") + ์‚ฌ์ง„ = Image.open(f"{ROOT}/library/skeleton_schoolevent.png") + + #if vts.get_vts_true_or_false() == True: ์‚ฌ์ง„ = Image.open(f'{ROOT}/library/skeleton-vts.png') + + ํ•™์‚ฌ์ผ์ •_ํฐํŠธ = ImageFont.truetype(font, 56) + ์„ธ๋ถ€_ํฐํŠธ = ImageFont.truetype(font, 24) + + ์ œ๋ชฉ์š”์†Œ = ImageDraw.Draw(์‚ฌ์ง„) + for i, line in enumerate(reversed(ํ•™์‚ฌ์ผ์ •.split('\n'))): + ์ œ๋ชฉ์š”์†Œ.text((75, 930 - i * 60), line, font=ํ•™์‚ฌ์ผ์ •_ํฐํŠธ, anchor="ls", fill=(255, 255, 255)) + + ์„ธ๋ถ€์š”์†Œ = ImageDraw.Draw(์‚ฌ์ง„) + ์„ธ๋ถ€์š”์†Œ.text((767, 80), f"{์˜ค๋Š˜.strftime("%Y")}๋…„ {์˜ค๋Š˜.strftime("%m")}์›”", font=์„ธ๋ถ€_ํฐํŠธ, fill=(255, 255, 255)) + #์„ธ๋ถ€์š”์†Œ.text((825, 200), f"{๊ธ‰์‹_์นผ๋กœ๋ฆฌ_์–ป๊ธฐ(MLSV_YMD)}", font=์„ธ๋ถ€_ํฐํŠธ, fill=(137, 202, 255)) + + ์‚ฌ์ง„.save(f'{ROOT}/temp/{์˜ค๋Š˜.strftime("%Y")}_{์˜ค๋Š˜.strftime("%m")}์›”.png') + + print("๐Ÿฒ | Meal Info Image Saved") + def ์Šคํ† ๋ฆฌ_์–ป๊ธฐ(MLSV_YMD:str): print("์ด๊ฑด ์™œ?") # 1:1 to 9:16 temp/{MLSV_YMD}.png diff --git a/app/library/schoolevent.json b/app/library/schoolevent.json new file mode 100644 index 0000000..d3082de --- /dev/null +++ b/app/library/schoolevent.json @@ -0,0 +1,14 @@ +{ + "1": { + "0": { + "start": 20250208, + "end": 20250302, + "data": "๊ฒจ์šธ๋ฐฉํ•™" + }, + "1": { + "start": 20250303, + "end": 20250303, + "data": "" + } + } +} \ No newline at end of file diff --git a/app/library/skeleton_schoolevent.png b/app/library/skeleton_schoolevent.png new file mode 100644 index 0000000000000000000000000000000000000000..b9606ed8c3e844f2dc6ca58011ffac751ec19a9c GIT binary patch literal 18556 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