hoon1018 commited on
Commit
dadc3a2
ยท
verified ยท
1 Parent(s): b1cd3ac

Update apps/saju.py

Browse files
Files changed (1) hide show
  1. apps/saju.py +44 -5
apps/saju.py CHANGED
@@ -1,5 +1,7 @@
1
  import os
2
  import requests
 
 
3
  from datetime import datetime, timedelta
4
  from typing import Union
5
  from fastapi import APIRouter, Request
@@ -67,19 +69,19 @@ def analyze_saju(req: SajuRequest):
67
  1. **์ค‘์š”: ๋ชจ๋“  ๊ฐ•์กฐ(Bold) ์ฒ˜๋ฆฌ๋Š” ๋งˆํฌ๋‹ค์šด(**)์ด ์•„๋‹Œ HTML `<b>` ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.**
68
  2. ์ธ์‚ฌ๋ง: ๋ฐ˜๋“œ์‹œ `<div class="greeting">` ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์„œ ์ž‘์„ฑํ•˜์„ธ์š”.
69
  3. ์†Œ๊ฐœ ์ƒ๋žต: ์ž๊ธฐ์†Œ๊ฐœ๋Š” ํ•˜์ง€ ๋งˆ์„ธ์š”.
70
- 4. ํ˜•์‹: ๋ชจ๋“  ์„น์…˜('์˜ค๋Š˜์˜ ์‚ฌ์ฃผ ๋ถ„์„', '์˜ค๋Š˜์˜ ํ–‰์šด ์ปฌ๋Ÿฌ', '์˜ค๋Š˜์˜ ์ถ”์ฒœ ์ฝ”๋””', '์˜ค๋Š˜์˜ ๋งˆ์Œโผผ๊ฐ€์ง')์€ <details><summary>... [๋ณด๊ธฐ]</summary></details> ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์„œ ์ ‘์–ด๋‘์„ธ์š”.
71
- 5. ํ†ค์•ค๋งค๋„ˆ: ์ „๋ฌธ์ ์ด๊ณ  ์šฐ์•„ํ•œ ์–ด์กฐ.
 
 
72
  """
73
 
74
  last_error = None
75
 
76
- # [์ˆ˜์ • 2] api_keys -> GEMINI_API_KEYS ๋กœ ๋ณ€์ˆ˜๋ช… ์ˆ˜์ •
77
  if not GEMINI_API_KEYS:
78
  return JSONResponse(content={'result': "<div class='greeting'>์„œ๋ฒ„์— API ํ‚ค๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.</div>"})
79
 
80
  send_slack_message(f"๐Ÿ”ฎ [Theo] ๋ถ„์„ ์š”์ฒญ: {birth_info}")
81
 
82
- # [์ˆ˜์ • 3] api_keys -> GEMINI_API_KEYS ๋กœ ๋ณ€์ˆ˜๋ช… ์ˆ˜์ •
83
  for key_idx, current_key in enumerate(GEMINI_API_KEYS):
84
  key_alias = f"KEY_{key_idx+1}"
85
 
@@ -97,13 +99,50 @@ def analyze_saju(req: SajuRequest):
97
 
98
  if response.text:
99
  send_slack_message(f"โœ… [์„ฑ๊ณต] {key_alias} / {model_name}")
100
- return {"result": response.text}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
 
102
  except Exception as e:
103
  last_error = e
104
  continue
105
 
106
  error_msg = str(last_error)
 
107
  send_slack_message(f"๐Ÿšจ [์ „์ฒด ์‹คํŒจ] ์—๋Ÿฌ: {error_msg}")
108
 
109
  return JSONResponse(content={
 
1
  import os
2
  import requests
3
+ import re # ์ •๊ทœ์‹ ํŒŒ์‹ฑ์šฉ
4
+ import random
5
  from datetime import datetime, timedelta
6
  from typing import Union
7
  from fastapi import APIRouter, Request
 
69
  1. **์ค‘์š”: ๋ชจ๋“  ๊ฐ•์กฐ(Bold) ์ฒ˜๋ฆฌ๋Š” ๋งˆํฌ๋‹ค์šด(**)์ด ์•„๋‹Œ HTML `<b>` ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.**
70
  2. ์ธ์‚ฌ๋ง: ๋ฐ˜๋“œ์‹œ `<div class="greeting">` ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์„œ ์ž‘์„ฑํ•˜์„ธ์š”.
71
  3. ์†Œ๊ฐœ ์ƒ๋žต: ์ž๊ธฐ์†Œ๊ฐœ๋Š” ํ•˜์ง€ ๋งˆ์„ธ์š”.
72
+ 4. ํ˜•์‹: ๋ชจ๋“  ์„น์…˜('์˜ค๋Š˜์˜ ์‚ฌ์ฃผ ๋ถ„์„', '์˜ค๋Š˜์˜ ํ–‰์šด ์ปฌ๋Ÿฌ', '์˜ค๋Š˜์˜ ํ–‰์šด ๋ฒˆํ˜ธ', '์˜ค๋Š˜์˜ ์ถ”์ฒœ ์ฝ”๋””', '์˜ค๋Š˜์˜ ๋งˆ์Œโผผ๊ฐ€์ง')์€ <details><summary>... [๋ณด๊ธฐ]</summary></details> ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์„œ ์ ‘์–ด๋‘์„ธ์š”.
73
+ 5. **(ํ•„์ˆ˜)** '์˜ค๋Š˜์˜ ํ–‰์šด ๋ฒˆํ˜ธ' ์„น์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ 1๋ถ€ํ„ฐ 45 ์‚ฌ์ด์˜ ๊ฒน์น˜์ง€ ์•Š๋Š” ์ˆซ์ž 6๊ฐœ๋ฅผ ์ถ”์ฒœํ•ด ์ฃผ์„ธ์š”.
74
+ 6. **(์‹œ์Šคํ…œ ํŒŒ์‹ฑ์šฉ - ๋งค์šฐ ์ค‘์š”)** ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ ํŒŒ์‹ฑ์„ ์œ„ํ•ด ์‘๋‹ต ํ…์ŠคํŠธ ๋งจ ๋งˆ์ง€๋ง‰ ์ค„์— ๋ฐ˜๋“œ์‹œ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•์‹์˜ HTML ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. (์ˆซ์ž๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
75
+ 7. ํ†ค์•ค๋งค๋„ˆ: ์ „๋ฌธ์ ์ด๊ณ  ์šฐ์•„ํ•œ ์–ด์กฐ.
76
  """
77
 
78
  last_error = None
79
 
 
80
  if not GEMINI_API_KEYS:
81
  return JSONResponse(content={'result': "<div class='greeting'>์„œ๋ฒ„์— API ํ‚ค๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.</div>"})
82
 
83
  send_slack_message(f"๐Ÿ”ฎ [Theo] ๋ถ„์„ ์š”์ฒญ: {birth_info}")
84
 
 
85
  for key_idx, current_key in enumerate(GEMINI_API_KEYS):
86
  key_alias = f"KEY_{key_idx+1}"
87
 
 
99
 
100
  if response.text:
101
  send_slack_message(f"โœ… [์„ฑ๊ณต] {key_alias} / {model_name}")
102
+
103
+ # ==========================================
104
+ # ๐Ÿšจ [์ถ”๊ฐ€๋œ ๋กœ์ง] ํ–‰์šด ๋ฒˆํ˜ธ ์ถ”์ถœ (ํŒŒ์‹ฑ)
105
+ # ==========================================
106
+ text_result = response.text
107
+ lucky_numbers = []
108
+
109
+ # ์ œ๋ฏธ๋‚˜์ด๊ฐ€ ์ˆจ๊ฒจ๋‘” ์ฃผ์„()์—์„œ ๋ฒˆํ˜ธ๋งŒ ๋นผ์˜ค๊ธฐ
110
+ match = re.search(r'', text_result)
111
+ if match:
112
+ try:
113
+ num_str = match.group(1)
114
+ # "7, 14, 21" ๋ฌธ์ž๋ฅผ ์ˆซ์ž ๋ฆฌ์ŠคํŠธ [7, 14, 21]๋กœ ๋ณ€ํ™˜ ๋ฐ 1~45 ๋ฒ”์œ„ ์ฒดํฌ
115
+ lucky_numbers = [int(n.strip()) for n in num_str.split(',') if n.strip().isdigit()]
116
+ lucky_numbers = [n for n in lucky_numbers if 1 <= n <= 45]
117
+ lucky_numbers = list(set(lucky_numbers)) # ์ค‘๋ณต ์ œ๊ฑฐ
118
+ except Exception:
119
+ pass
120
+
121
+ # ๐Ÿ’ก [์•ˆ์ „์žฅ์น˜] ์ œ๋ฏธ๋‚˜์ด๊ฐ€ ์‹ค์ˆ˜๋กœ ๋ฒˆํ˜ธ๋ฅผ ์•ˆ ์คฌ๊ฑฐ๋‚˜ 6๊ฐœ๊ฐ€ ์•ˆ ๋  ๊ฒฝ์šฐ,
122
+ # ๋นˆ์ž๋ฆฌ๋Š” ํŒŒ์ด์ฌ์ด ์•Œ์•„์„œ ๋ฌด์ž‘์œ„ ํ–‰์šด๋ฒˆํ˜ธ๋กœ ์ฑ„์›Œ์ค๋‹ˆ๋‹ค! (์—๋Ÿฌ ๋ฐฉ์ง€)
123
+ while len(lucky_numbers) < 6:
124
+ rand_num = random.randint(1, 45)
125
+ if rand_num not in lucky_numbers:
126
+ lucky_numbers.append(rand_num)
127
+
128
+ # ๋”ฑ 6๊ฐœ๋งŒ ์ž๋ฅด๊ณ  ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
129
+ lucky_numbers = lucky_numbers[:6]
130
+ lucky_numbers.sort()
131
+
132
+ # ==========================================
133
+ # ํ”„๋ก ํŠธ์—”๋“œ๋กœ ํ…์ŠคํŠธ๋ฅผ ๋„˜๊ธฐ๊ธฐ ์ „์— ์ฃผ์„()์„ ์•„์˜ˆ ์ง€์›Œ๋ฒ„๋ฆผ!
134
+ text_result = re.sub(r'', '', text_result).strip()
135
+ # ==========================================
136
+
137
+ # ํ”„๋ก ํŠธ์—”๋“œ(main_saju.html)์—์„œ ์•ฝ์†ํ–ˆ๋˜ luckyNumbers ํ‚ค๊ฐ’์œผ๋กœ ์ด์ค๋‹ˆ๋‹ค!
138
+ return {"result": text_result, "luckyNumbers": lucky_numbers}
139
 
140
  except Exception as e:
141
  last_error = e
142
  continue
143
 
144
  error_msg = str(last_error)
145
+
146
  send_slack_message(f"๐Ÿšจ [์ „์ฒด ์‹คํŒจ] ์—๋Ÿฌ: {error_msg}")
147
 
148
  return JSONResponse(content={