Update app.py
Browse files
app.py
CHANGED
@@ -10,111 +10,29 @@ GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY", "")
|
|
10 |
# Gemini API ์ด๊ธฐํ
|
11 |
genai.configure(api_key=GEMINI_API_KEY)
|
12 |
|
13 |
-
# ๋ฐฐ๊ฒฝ
|
14 |
-
|
15 |
-
SIMPLE_BACKGROUNDS = {
|
16 |
-
"ํ์ดํธ ๋ฐฐ๊ฒฝ": "white background",
|
17 |
-
"๋ธ๋ ๋ฐฐ๊ฒฝ": "black background",
|
18 |
-
"๊ทธ๋ผ๋ฐ์ด์
๋ฐฐ๊ฒฝ": "gradient background",
|
19 |
-
"๋ฒ ์ด์ง ๋ฐฐ๊ฒฝ": "beige background",
|
20 |
-
"๊ทธ๋ ์ด ๋ฐฐ๊ฒฝ": "gray background",
|
21 |
-
"ํ์คํ
๋ฐฐ๊ฒฝ": "pastel background",
|
22 |
-
"๊ทธ๋ฆฐ ๋ฐฐ๊ฒฝ": "green background",
|
23 |
-
"๋ธ๋ฃจ ๋ฐฐ๊ฒฝ": "blue background",
|
24 |
-
"ํํฌ ๋ฐฐ๊ฒฝ": "pink background",
|
25 |
-
"์๋ก์ฐ ๋ฐฐ๊ฒฝ": "yellow background",
|
26 |
-
"ํผํ ๋ฐฐ๊ฒฝ": "purple background",
|
27 |
-
"์ค๋ ์ง ๋ฐฐ๊ฒฝ": "orange background",
|
28 |
-
"๋ธ๋ผ์ด ๋ฐฐ๊ฒฝ": "brown background",
|
29 |
-
"๋ฏผํธ ๋ฐฐ๊ฒฝ": "mint background",
|
30 |
-
"๋ผ๋ฒค๋ ๋ฐฐ๊ฒฝ": "lavender background",
|
31 |
-
"์ฝ๋ ๋ฐฐ๊ฒฝ": "coral background",
|
32 |
-
"ํฐ์ฟผ์ด์ฆ ๋ฐฐ๊ฒฝ": "turquoise background",
|
33 |
-
"๋ค์ด๋น ๋ฐฐ๊ฒฝ": "navy background",
|
34 |
-
"์๋ ๋ฐฐ๊ฒฝ": "sand background",
|
35 |
-
"ํ์ดํผ ๋ฐฐ๊ฒฝ": "paper background"
|
36 |
-
}
|
37 |
|
38 |
-
#
|
39 |
-
|
40 |
-
|
41 |
-
"๋ฏธ๋๋ฉ ์คํ๋์ค": "minimal studio",
|
42 |
-
"ํ์ดํค ์คํ๋์ค": "high key studio",
|
43 |
-
"๋ก์ฐํค ์คํ๋์ค": "low key studio",
|
44 |
-
"์ํํธ๋ฐ์ค ์กฐ๋ช
": "softbox lighting studio",
|
45 |
-
"๋ง๋ผ์ดํธ ์คํ๋์ค": "ring light studio",
|
46 |
-
"๋ฆฌํ๋ ํฐ ์คํ๋์ค": "reflector studio",
|
47 |
-
"๊ทธ๋ฆผ์ ์คํ๋์ค": "shadow studio",
|
48 |
-
"๋ฐฑ๋ผ์ดํธ ์คํ๋์ค": "backlight studio",
|
49 |
-
"์ฌ์ด๋๋ผ์ดํธ ์คํ๋์ค": "sidelight studio",
|
50 |
-
"์คํฌํธ๋ผ์ดํธ ์คํ๋์ค": "spotlight studio",
|
51 |
-
"ํ
์ค์ฒ ๋ฐฐ๊ฒฝ ์คํ๋์ค": "textured background studio",
|
52 |
-
"๋๋ฆฌ์ ๋ฐฐ๊ฒฝ ์คํ๋์ค": "marble background studio",
|
53 |
-
"์ฝํฌ๋ฆฌํธ ๋ฐฐ๊ฒฝ ์คํ๋์ค": "concrete background studio",
|
54 |
-
"์ฐ๋ ๋ฐฐ๊ฒฝ ์คํ๋์ค": "wooden background studio",
|
55 |
-
"ํจ๋ธ๋ฆญ ๋ฐฐ๊ฒฝ ์คํ๋์ค": "fabric background studio",
|
56 |
-
"๊ธ๋์ค ํ๋ฉด ์คํ๋์ค": "glass surface studio",
|
57 |
-
"๋ฉํ ํ๋ฉด ์คํ๋์ค": "metal surface studio",
|
58 |
-
"๋ฐ์ฌ ํ๋ฉด ์คํ๋์ค": "reflective surface studio",
|
59 |
-
"๋งคํธ ํ๋ฉด ์คํ๋์ค": "matte surface studio"
|
60 |
-
}
|
61 |
|
62 |
-
#
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
"๊ฐ๊ฐ": "riverside",
|
72 |
-
"ํธ์๊ฐ": "lakeside",
|
73 |
-
"ํญํฌ": "waterfall",
|
74 |
-
"์ผ๋ชฐ ํ๊ฒฝ": "sunset landscape",
|
75 |
-
"์ผ์ถ ํ๊ฒฝ": "sunrise landscape",
|
76 |
-
"์๊ฐ ๋ ํ๊ฒฝ": "foggy landscape",
|
77 |
-
"๋ณ์ด ๋น๋๋ ํ๋": "starry sky",
|
78 |
-
"๋ ๋ฎ์ธ ํ๊ฒฝ": "snowy landscape"
|
79 |
-
}
|
80 |
-
|
81 |
-
# 4. ์ค๋ด ํ๊ฒฝ
|
82 |
-
INDOOR_BACKGROUNDS = {
|
83 |
-
"๋ชจ๋ ๋ฆฌ๋น๋ฃธ": "modern living room",
|
84 |
-
"๋ฏธ๋๋ฉ ์ฃผ๋ฐฉ": "minimal kitchen",
|
85 |
-
"๋ญ์
๋ฆฌ ์์ค": "luxury bathroom",
|
86 |
-
"์นจ์ค": "bedroom",
|
87 |
-
"ํ ์คํผ์ค": "home office",
|
88 |
-
"์นดํ": "cafe",
|
89 |
-
"๋ ์คํ ๋": "restaurant",
|
90 |
-
"ํธํ
๋ก๋น": "hotel lobby",
|
91 |
-
"์ํธ ๊ฐค๋ฌ๋ฆฌ": "art gallery",
|
92 |
-
"์์ฌ": "library",
|
93 |
-
"์คํ": "spa",
|
94 |
-
"์ผ๋ฃธ": "showroom",
|
95 |
-
"๋ถํฐํฌ": "boutique",
|
96 |
-
"ํธ์ง์ต": "concept store",
|
97 |
-
"์ผ๋ณธ์ ์ธํ
๋ฆฌ์ด": "japanese interior"
|
98 |
-
}
|
99 |
|
100 |
-
#
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
"๋ค์จ ์ถ์": "neon abstract",
|
107 |
-
"๊ฐ์ ํ๊ฒฝ": "virtual environment",
|
108 |
-
"ํํ์ง ์ธ๊ณ": "fantasy world",
|
109 |
-
"๊ณต์๊ณผํ ๋ฐฐ๊ฒฝ": "sci-fi background",
|
110 |
-
"๋์งํธ ์ธ๊ณ": "digital world",
|
111 |
-
"์ฐ์ฃผ ๊ณต๊ฐ": "outer space",
|
112 |
-
"๋ฏธ๋ ๋์": "future city",
|
113 |
-
"ํํ์ง ์์ฐ": "fantasy nature",
|
114 |
-
"๊ธ๋ฆฌ์น ํจ๊ณผ": "glitch effect",
|
115 |
-
"ํ๋ก๊ทธ๋จ ๋ฐฐ๊ฒฝ": "hologram background",
|
116 |
-
"์
์ ํจ๊ณผ": "particle effect"
|
117 |
-
}
|
118 |
|
119 |
def generate_system_instruction():
|
120 |
return """๋น์ ์ ์ํ ์ด๋ฏธ์ง์ ๋ฐฐ๊ฒฝ์ ๋ณ๊ฒฝํ๊ธฐ ์ํ ๊ณ ํ์ง ํ๋กฌํํธ๋ฅผ ์์ฑํ๋ ์ ๋ฌธ๊ฐ์
๋๋ค.
|
@@ -234,7 +152,7 @@ def create_app():
|
|
234 |
with gr.TabItem("์ฌํ ๋ฐฐ๊ฒฝ"):
|
235 |
simple_dropdown = gr.Dropdown(
|
236 |
choices=list(SIMPLE_BACKGROUNDS.keys()),
|
237 |
-
value=list(SIMPLE_BACKGROUNDS.keys())[0],
|
238 |
label="์ฌํ ๋ฐฐ๊ฒฝ ์ ํ",
|
239 |
interactive=True
|
240 |
)
|
@@ -242,7 +160,7 @@ def create_app():
|
|
242 |
with gr.TabItem("์คํ๋์ค ๋ฐฐ๊ฒฝ"):
|
243 |
studio_dropdown = gr.Dropdown(
|
244 |
choices=list(STUDIO_BACKGROUNDS.keys()),
|
245 |
-
value=list(STUDIO_BACKGROUNDS.keys())[0],
|
246 |
label="์คํ๋์ค ๋ฐฐ๊ฒฝ ์ ํ",
|
247 |
interactive=True
|
248 |
)
|
@@ -250,7 +168,7 @@ def create_app():
|
|
250 |
with gr.TabItem("์์ฐ ํ๊ฒฝ"):
|
251 |
nature_dropdown = gr.Dropdown(
|
252 |
choices=list(NATURE_BACKGROUNDS.keys()),
|
253 |
-
value=list(NATURE_BACKGROUNDS.keys())[0],
|
254 |
label="์์ฐ ํ๊ฒฝ ์ ํ",
|
255 |
interactive=True
|
256 |
)
|
@@ -258,7 +176,7 @@ def create_app():
|
|
258 |
with gr.TabItem("์ค๋ด ํ๊ฒฝ"):
|
259 |
indoor_dropdown = gr.Dropdown(
|
260 |
choices=list(INDOOR_BACKGROUNDS.keys()),
|
261 |
-
value=list(INDOOR_BACKGROUNDS.keys())[0],
|
262 |
label="์ค๋ด ํ๊ฒฝ ์ ํ",
|
263 |
interactive=True
|
264 |
)
|
@@ -266,7 +184,7 @@ def create_app():
|
|
266 |
with gr.TabItem("์ถ์/ํน์ ๋ฐฐ๊ฒฝ"):
|
267 |
abstract_dropdown = gr.Dropdown(
|
268 |
choices=list(ABSTRACT_BACKGROUNDS.keys()),
|
269 |
-
value=list(ABSTRACT_BACKGROUNDS.keys())[0],
|
270 |
label="์ถ์/ํน์ ๋ฐฐ๊ฒฝ ์ ํ",
|
271 |
interactive=True
|
272 |
)
|
|
|
10 |
# Gemini API ์ด๊ธฐํ
|
11 |
genai.configure(api_key=GEMINI_API_KEY)
|
12 |
|
13 |
+
# ๋ฐฐ๊ฒฝ JSON ํ์ผ ๊ฒฝ๋ก ์ค์
|
14 |
+
BACKGROUNDS_DIR = os.path.join(os.path.dirname(__file__), "background")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
+
# JSON ํ์ผ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ๋๋ ํ ๋ฆฌ ์์ฑ
|
17 |
+
if not os.path.exists(BACKGROUNDS_DIR):
|
18 |
+
os.makedirs(BACKGROUNDS_DIR)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
+
# JSON ํ์ผ ๋ก๋ ํจ์
|
21 |
+
def load_background_json(filename):
|
22 |
+
file_path = os.path.join(BACKGROUNDS_DIR, filename)
|
23 |
+
try:
|
24 |
+
with open(file_path, 'r', encoding='utf-8') as f:
|
25 |
+
return json.load(f)
|
26 |
+
except FileNotFoundError:
|
27 |
+
print(f"๊ฒฝ๊ณ : {filename} ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.")
|
28 |
+
return {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
+
# ๋ฐฐ๊ฒฝ ๋ฐ์ดํฐ ๋ก๋
|
31 |
+
SIMPLE_BACKGROUNDS = load_background_json("simple_backgrounds.json")
|
32 |
+
STUDIO_BACKGROUNDS = load_background_json("studio_backgrounds.json")
|
33 |
+
NATURE_BACKGROUNDS = load_background_json("nature_backgrounds.json")
|
34 |
+
INDOOR_BACKGROUNDS = load_background_json("indoor_backgrounds.json")
|
35 |
+
ABSTRACT_BACKGROUNDS = load_background_json("abstract_backgrounds.json")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
def generate_system_instruction():
|
38 |
return """๋น์ ์ ์ํ ์ด๋ฏธ์ง์ ๋ฐฐ๊ฒฝ์ ๋ณ๊ฒฝํ๊ธฐ ์ํ ๊ณ ํ์ง ํ๋กฌํํธ๋ฅผ ์์ฑํ๋ ์ ๋ฌธ๊ฐ์
๋๋ค.
|
|
|
152 |
with gr.TabItem("์ฌํ ๋ฐฐ๊ฒฝ"):
|
153 |
simple_dropdown = gr.Dropdown(
|
154 |
choices=list(SIMPLE_BACKGROUNDS.keys()),
|
155 |
+
value=list(SIMPLE_BACKGROUNDS.keys())[0] if SIMPLE_BACKGROUNDS else None,
|
156 |
label="์ฌํ ๋ฐฐ๊ฒฝ ์ ํ",
|
157 |
interactive=True
|
158 |
)
|
|
|
160 |
with gr.TabItem("์คํ๋์ค ๋ฐฐ๊ฒฝ"):
|
161 |
studio_dropdown = gr.Dropdown(
|
162 |
choices=list(STUDIO_BACKGROUNDS.keys()),
|
163 |
+
value=list(STUDIO_BACKGROUNDS.keys())[0] if STUDIO_BACKGROUNDS else None,
|
164 |
label="์คํ๋์ค ๋ฐฐ๊ฒฝ ์ ํ",
|
165 |
interactive=True
|
166 |
)
|
|
|
168 |
with gr.TabItem("์์ฐ ํ๊ฒฝ"):
|
169 |
nature_dropdown = gr.Dropdown(
|
170 |
choices=list(NATURE_BACKGROUNDS.keys()),
|
171 |
+
value=list(NATURE_BACKGROUNDS.keys())[0] if NATURE_BACKGROUNDS else None,
|
172 |
label="์์ฐ ํ๊ฒฝ ์ ํ",
|
173 |
interactive=True
|
174 |
)
|
|
|
176 |
with gr.TabItem("์ค๋ด ํ๊ฒฝ"):
|
177 |
indoor_dropdown = gr.Dropdown(
|
178 |
choices=list(INDOOR_BACKGROUNDS.keys()),
|
179 |
+
value=list(INDOOR_BACKGROUNDS.keys())[0] if INDOOR_BACKGROUNDS else None,
|
180 |
label="์ค๋ด ํ๊ฒฝ ์ ํ",
|
181 |
interactive=True
|
182 |
)
|
|
|
184 |
with gr.TabItem("์ถ์/ํน์ ๋ฐฐ๊ฒฝ"):
|
185 |
abstract_dropdown = gr.Dropdown(
|
186 |
choices=list(ABSTRACT_BACKGROUNDS.keys()),
|
187 |
+
value=list(ABSTRACT_BACKGROUNDS.keys())[0] if ABSTRACT_BACKGROUNDS else None,
|
188 |
label="์ถ์/ํน์ ๋ฐฐ๊ฒฝ ์ ํ",
|
189 |
interactive=True
|
190 |
)
|