ssboost commited on
Commit
644a519
·
verified ·
1 Parent(s): b5e4674

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +89 -77
app.py CHANGED
@@ -45,6 +45,80 @@ def load_backgrounds_from_env():
45
  backgrounds_code = os.environ.get("BACKGROUNDS_DATA", "")
46
  if not backgrounds_code:
47
  logger.warning("BACKGROUNDS_DATA environment variable is empty")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  with tempfile.NamedTemporaryFile(delete=False, suffix=suffix) as temp_file:
50
  temp_filename = temp_file.name
@@ -135,7 +209,7 @@ def api_check_password(password, image_file, bg_type, simple, studio, nature, in
135
  return result
136
  except Exception as e:
137
  logger.error(f"Error calling check_password API: {e}")
138
- return None, None, None, None, "", "", f"API 호출 오류: {str(e)}"
139
 
140
  # Gradio 인터페이스 구성 (완전히 동일한 UI)
141
  def create_gradio_interface():
@@ -223,8 +297,17 @@ def create_gradio_interface():
223
  interactive=True
224
  )
225
 
226
- # 드롭다운 변경 함수
227
  def update_dropdowns(bg_type):
 
 
 
 
 
 
 
 
 
228
  return {
229
  simple_dropdown: gr.update(visible=(bg_type == "심플 배경")),
230
  studio_dropdown: gr.update(visible=(bg_type == "스튜디오 배경")),
@@ -235,10 +318,12 @@ def create_gradio_interface():
235
  special_effects_dropdown: gr.update(visible=(bg_type == "특수효과"))
236
  }
237
 
 
238
  background_type.change(
239
  fn=update_dropdowns,
240
  inputs=[background_type],
241
- outputs=[simple_dropdown, studio_dropdown, nature_dropdown, indoor_dropdown, special_dropdown, jewelry_dropdown, special_effects_dropdown]
 
242
  )
243
 
244
  # 요청사항 입력
@@ -383,77 +468,4 @@ if __name__ == "__main__":
383
  app.launch(share=True)
384
  except Exception as e:
385
  logger.error(f"Error running app: {e}")
386
- logger.error(traceback.format_exc()), None, None, None, None, None, None
387
-
388
- try:
389
- # 환경변수에서 가져온 코드 실행하여 딕셔너리들 추출
390
- local_vars = {}
391
- exec(backgrounds_code, {}, local_vars)
392
-
393
- return (
394
- local_vars.get("SIMPLE_BACKGROUNDS", {}),
395
- local_vars.get("STUDIO_BACKGROUNDS", {}),
396
- local_vars.get("NATURE_BACKGROUNDS", {}),
397
- local_vars.get("INDOOR_BACKGROUNDS", {}),
398
- local_vars.get("SPECIAL_BACKGROUNDS", {}),
399
- local_vars.get("JEWELRY_BACKGROUNDS", {}),
400
- local_vars.get("SPECIAL_EFFECTS_BACKGROUNDS", {})
401
- )
402
- except Exception as e:
403
- logger.error(f"Failed to parse BACKGROUNDS_DATA: {e}")
404
- return {}, {}, {}, {}, {}, {}, {}
405
-
406
- # 환경변수에서 배경 딕셔너리들 로드
407
- (SIMPLE_BACKGROUNDS, STUDIO_BACKGROUNDS, NATURE_BACKGROUNDS,
408
- INDOOR_BACKGROUNDS, SPECIAL_BACKGROUNDS, JEWELRY_BACKGROUNDS,
409
- SPECIAL_EFFECTS_BACKGROUNDS) = load_backgrounds_from_env()
410
-
411
- # 만약 환경변수가 비어있다면 기본값 사용
412
- if not SIMPLE_BACKGROUNDS:
413
- SIMPLE_BACKGROUNDS = {
414
- "화이트 기본": "clean white background with soft lighting",
415
- "회색 투톤": "light gray background with minimal shadows",
416
- "라이트 그레이": "soft light gray backdrop with even illumination"
417
- }
418
-
419
- if not STUDIO_BACKGROUNDS:
420
- STUDIO_BACKGROUNDS = {
421
- "연녹색 장미 정원": "soft green background with rose garden elements",
422
- "연분홍 장미 대리석": "pink rose with marble surface backdrop"
423
- }
424
-
425
- if not NATURE_BACKGROUNDS:
426
- NATURE_BACKGROUNDS = {
427
- "작은 파도가 있는 해변": "serene beach with gentle waves",
428
- "열대해변": "tropical beach setting with palm trees"
429
- }
430
-
431
- if not INDOOR_BACKGROUNDS:
432
- INDOOR_BACKGROUNDS = {
433
- "기본 책상": "clean modern desk setup",
434
- "빛이 비치는 거실": "bright living room with natural light"
435
- }
436
-
437
- if not SPECIAL_BACKGROUNDS:
438
- SPECIAL_BACKGROUNDS = {
439
- "네이비 빈티지 플로럴 벽지": "navy vintage floral wallpaper background"
440
- }
441
-
442
- if not JEWELRY_BACKGROUNDS:
443
- JEWELRY_BACKGROUNDS = {
444
- "화이트 미러 스팟 라이트": "white mirror surface with spotlight"
445
- }
446
-
447
- if not SPECIAL_EFFECTS_BACKGROUNDS:
448
- SPECIAL_EFFECTS_BACKGROUNDS = {
449
- "블루블랙 큰 물방울 효과": "blue-black background with water droplet effects"
450
- }
451
-
452
- # 임시 파일 저장 함수
453
- def save_uploaded_file(uploaded_file, suffix='.png'):
454
- try:
455
- logger.info(f"Processing uploaded file: {type(uploaded_file)}")
456
-
457
- if uploaded_file is None:
458
- logger.warning("Uploaded file is None")
459
- return
 
45
  backgrounds_code = os.environ.get("BACKGROUNDS_DATA", "")
46
  if not backgrounds_code:
47
  logger.warning("BACKGROUNDS_DATA environment variable is empty")
48
+ return {}, {}, {}, {}, {}, {}, {}
49
+
50
+ try:
51
+ # 환경변수에서 가져온 코드 실행하여 딕셔너리들 추출
52
+ local_vars = {}
53
+ exec(backgrounds_code, {}, local_vars)
54
+
55
+ return (
56
+ local_vars.get("SIMPLE_BACKGROUNDS", {}),
57
+ local_vars.get("STUDIO_BACKGROUNDS", {}),
58
+ local_vars.get("NATURE_BACKGROUNDS", {}),
59
+ local_vars.get("INDOOR_BACKGROUNDS", {}),
60
+ local_vars.get("SPECIAL_BACKGROUNDS", {}),
61
+ local_vars.get("JEWELRY_BACKGROUNDS", {}),
62
+ local_vars.get("SPECIAL_EFFECTS_BACKGROUNDS", {})
63
+ )
64
+ except Exception as e:
65
+ logger.error(f"Failed to parse BACKGROUNDS_DATA: {e}")
66
+ return {}, {}, {}, {}, {}, {}, {}
67
+
68
+ # 환경변수에서 배경 딕셔너리들 로드
69
+ (SIMPLE_BACKGROUNDS, STUDIO_BACKGROUNDS, NATURE_BACKGROUNDS,
70
+ INDOOR_BACKGROUNDS, SPECIAL_BACKGROUNDS, JEWELRY_BACKGROUNDS,
71
+ SPECIAL_EFFECTS_BACKGROUNDS) = load_backgrounds_from_env()
72
+
73
+ # 만약 환경변수가 비어있다면 기본값 사용
74
+ if not SIMPLE_BACKGROUNDS:
75
+ SIMPLE_BACKGROUNDS = {
76
+ "화이트 기본": "clean white background with soft lighting",
77
+ "회색 투톤": "light gray background with minimal shadows",
78
+ "라이트 그레이": "soft light gray backdrop with even illumination"
79
+ }
80
+
81
+ if not STUDIO_BACKGROUNDS:
82
+ STUDIO_BACKGROUNDS = {
83
+ "연녹색 장미 정원": "soft green background with rose garden elements",
84
+ "연분홍 장미 대리석": "pink rose with marble surface backdrop"
85
+ }
86
+
87
+ if not NATURE_BACKGROUNDS:
88
+ NATURE_BACKGROUNDS = {
89
+ "작은 파도가 있는 해변": "serene beach with gentle waves",
90
+ "열대해변": "tropical beach setting with palm trees"
91
+ }
92
+
93
+ if not INDOOR_BACKGROUNDS:
94
+ INDOOR_BACKGROUNDS = {
95
+ "기본 책상": "clean modern desk setup",
96
+ "빛이 비치는 거실": "bright living room with natural light"
97
+ }
98
+
99
+ if not SPECIAL_BACKGROUNDS:
100
+ SPECIAL_BACKGROUNDS = {
101
+ "네이비 빈티지 플로럴 벽지": "navy vintage floral wallpaper background"
102
+ }
103
+
104
+ if not JEWELRY_BACKGROUNDS:
105
+ JEWELRY_BACKGROUNDS = {
106
+ "화이트 미러 스팟 라이트": "white mirror surface with spotlight"
107
+ }
108
+
109
+ if not SPECIAL_EFFECTS_BACKGROUNDS:
110
+ SPECIAL_EFFECTS_BACKGROUNDS = {
111
+ "블루블랙 큰 물방울 효과": "blue-black background with water droplet effects"
112
+ }
113
+
114
+ # 임시 파일 저장 함수
115
+ def save_uploaded_file(uploaded_file, suffix='.png'):
116
+ try:
117
+ logger.info(f"Processing uploaded file: {type(uploaded_file)}")
118
+
119
+ if uploaded_file is None:
120
+ logger.warning("Uploaded file is None")
121
+ return None
122
 
123
  with tempfile.NamedTemporaryFile(delete=False, suffix=suffix) as temp_file:
124
  temp_filename = temp_file.name
 
209
  return result
210
  except Exception as e:
211
  logger.error(f"Error calling check_password API: {e}")
212
+ return [], None, [], None, "", "", f"API 호출 오류: {str(e)}"
213
 
214
  # Gradio 인터페이스 구성 (완전히 동일한 UI)
215
  def create_gradio_interface():
 
297
  interactive=True
298
  )
299
 
300
+ # 드롭다운 변경 함수 (원본과 동일한 엔드포인트)
301
  def update_dropdowns(bg_type):
302
+ # API 호출하여 원본 동작 유지
303
+ try:
304
+ result = api_update_dropdowns(bg_type)
305
+ if result:
306
+ return result
307
+ except:
308
+ pass
309
+
310
+ # 백업용 로컬 로직
311
  return {
312
  simple_dropdown: gr.update(visible=(bg_type == "심플 배경")),
313
  studio_dropdown: gr.update(visible=(bg_type == "스튜디오 배경")),
 
318
  special_effects_dropdown: gr.update(visible=(bg_type == "특수효과"))
319
  }
320
 
321
+ # 원본과 동일한 엔드포인트 생성
322
  background_type.change(
323
  fn=update_dropdowns,
324
  inputs=[background_type],
325
+ outputs=[simple_dropdown, studio_dropdown, nature_dropdown, indoor_dropdown, special_dropdown, jewelry_dropdown, special_effects_dropdown],
326
+ api_name="update_dropdowns" # 원본과 동일한 API 이름
327
  )
328
 
329
  # 요청사항 입력
 
468
  app.launch(share=True)
469
  except Exception as e:
470
  logger.error(f"Error running app: {e}")
471
+ logger.error(traceback.format_exc())