kim368882 commited on
Commit
77f7db7
·
verified ·
1 Parent(s): e58b3a5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +225 -145
app.py CHANGED
@@ -9,83 +9,85 @@ import json
9
  def exception_handler(exception_type, exception, traceback):
10
  print(f"{exception_type.__name__}: {exception}")
11
 
 
12
  sys.excepthook = exception_handler
13
  sys.tracebacklimit = 0
14
 
 
15
  def get_chinese_hour(birth_hour):
16
  hour = int(birth_hour[:2])
17
  chinese_hours = ['자', '축', '인', '묘', '진', '사', '오', '미', '신', '유', '술', '해']
18
  return chinese_hours[hour // 2 % 12]
19
 
 
20
  def calculate_siju(birth_hour, lunIljin):
21
  chinese_hour = get_chinese_hour(birth_hour) # 생시에 해당하는 지지
22
  lunIljin_first = lunIljin[0] # 일주의 첫 글자
23
-
24
  # 일주 첫 글자에 따른 시주 매핑
25
  siju_mapping = {
26
-
27
- ('갑', '자'): '갑자(甲子)', ('기', '자'): '갑자(甲子)',
28
- ('을', '자'): '병자(丙子)', ('경', '자'): '병자(丙子)',
29
- ('병', '자'): '무자(戊子)', ('신', '자'): '무자(戊子)',
30
- ('정', '자'): '경자(庚子)', ('임', '자'): '경자(庚子)',
31
- ('무', '자'): '임자(壬子)', ('계', '자'): '임자(壬子)',
32
- ('갑', '축'): '을축(乙丑)', ('기', '축'): '을축(乙丑)',
33
- ('을', '축'): '정축(丁丑)', ('경', '축'): '정축(丁丑)',
34
- ('병', '축'): '기축(己丑)', ('신', '축'): '기축(己丑)',
35
- ('정', '축'): '신축(辛丑)', ('임', '축'): '신축(辛丑)',
36
- ('무', '축'): '계축(癸丑)', ('계', '축'): '계축(癸丑)',
37
- ('갑', '인'): '병인(丙寅)', ('기', '인'): '병인(丙寅)',
38
- ('을', '인'): '무인(戊寅)', ('경', '인'): '무인(戊寅)',
39
- ('병', '인'): '경인(庚寅)', ('신', '인'): '경인(庚寅)',
40
- ('정', '인'): '임인(壬寅)', ('임', '인'): '임인(壬寅)',
41
- ('무', '인'): '갑인(甲寅)', ('계', '인'): '갑인(甲寅)',
42
- ('갑', '묘'): '정묘(丁卯)', ('기', '묘'): '정묘(丁卯)',
43
- ('을', '묘'): '기묘(己卯)', ('경', '묘'): '기묘(己卯)',
44
- ('병', '묘'): '신묘(辛卯)', ('신', '묘'): '신묘(辛卯)',
45
- ('정', '묘'): '계묘(癸卯)', ('임', '묘'): '계묘(癸卯)',
46
- ('무', '묘'): '을묘(乙卯)', ('계', '묘'): '을묘(乙卯)',
47
- ('갑', '진'): '무진(戊辰)', ('기', '진'): '무진(戊辰)',
48
- ('을', '진'): '경진(庚辰)', ('경', '진'): '경진(庚辰)',
49
- ('병', '진'): '임진(壬辰)', ('신', '진'): '임진(壬辰)',
50
- ('정', '진'): '갑진(甲辰)', ('임', '진'): '갑진(甲辰)',
51
- ('무', '진'): '병진(丙辰)', ('계', '진'): '병진(丙辰)',
52
- ('갑', '사'): '기사(己巳)', ('기', '사'): '기사(己巳)',
53
- ('을', '사'): '신사(辛巳)', ('경', '사'): '신사(辛巳)',
54
- ('병', '사'): '계사(癸巳)', ('신', '사'): '계사(癸巳)',
55
- ('정', '사'): '을사(乙巳)', ('임', '사'): '을사(乙巳)',
56
- ('무', '사'): '정사(丁巳)', ('계', '사'): '정사(丁巳)',
57
- ('갑', '오'): '경오(庚午)', ('기', '오'): '경오(庚午)',
58
- ('을', '오'): '임오(壬午)', ('경', '오'): '임오(壬午)',
59
- ('병', '오'): '갑오(甲午)', ('신', '오'): '갑오(甲午)',
60
- ('정', '오'): '병오(丙午)', ('임', '오'): '병오(丙午)',
61
- ('무', '오'): '무오(戊午)', ('계', '오'): '무오(戊午)',
62
- ('갑', '미'): '임미(壬未)', ('기', '미'): '임미(壬未)',
63
- ('을', '미'): '갑미(甲未)', ('경', '미'): '갑미(甲未)',
64
- ('병', '미'): '병미(丙未)', ('신', '미'): '병미(丙未)',
65
- ('정', '미'): '무미(戊未)', ('임', '미'): '무미(戊未)',
66
- ('무', '미'): '경미(庚未)', ('계', '미'): '경미(庚未)',
67
- ('갑', '신'): '임신(壬申)', ('기', '신'): '임신(壬申)',
68
- ('을', '신'): '갑신(甲申)', ('경', '신'): '갑신(甲申)',
69
- ('병', '신'): '병신(丙申)', ('신', '신'): '병신(丙申)',
70
- ('정', '신'): '무신(戊申)', ('임', '신'): '무신(戊申)',
71
- ('무', '신'): '경신(庚申)', ('계', '신'): '경신(庚申)',
72
- ('갑', '유'): '계유(癸酉)', ('기', '유'): '계유(癸酉)',
73
- ('을', '유'): '을유(乙酉)', ('경', '유'): '을유(乙酉)',
74
- ('병', '유'): '정유(丁酉)', ('신', '유'): '정유(丁酉)',
75
- ('정', '유'): '기유(己酉)', ('임', '유'): '기유(己酉)',
76
- ('무', '유'): '신유(辛酉)', ('계', '유'): '신유(辛酉)',
77
- ('갑', '술'): '갑술(甲戌) ', ('기', '술'): '갑술(甲戌)',
78
- ('을', '술'): '병술(丙戌) ', ('경', '술'): '병술(丙戌)',
79
- ('병', '술'): '무술(戊戌) ', ('신', '술'): '무술(戊戌)',
80
- ('정', '술'): '경술(庚戌) ', ('임', '술'): '경술(庚戌)',
81
- ('무', '술'): '임술(壬戌) ', ('계', '술'): '임술(壬戌)',
82
- ('갑', '해'): '을해(乙亥)', ('기', '해'): '을해(乙亥)',
83
- ('을', '해'): '정해(丁亥)', ('경', '해'): '정해(丁亥)',
84
- ('병', '해'): '기해(己亥)', ('신', '해'): '기해(己亥)',
85
- ('정', '해'): '신해(辛亥)', ('임', '해'): '신해(辛亥)',
86
- ('무', '해'): '계해(癸亥)', ('계', '해'): '계해(癸亥)',
87
- }
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
  # 시주 계산
91
  siju_key = (lunIljin_first, chinese_hour)
@@ -94,37 +96,57 @@ def calculate_siju(birth_hour, lunIljin):
94
  # 일주와 지지 조합에 대한 매핑이 없는 경우의 처리
95
  siju = f"일주 '{lunIljin_first}'와 지지 '{chinese_hour}'에 해당하는 시주를 찾을 수 없습니다."
96
 
97
- return siju
 
98
 
99
  def get_lunar_info(solYear, solMonth, solDay, solHour):
100
  base_url = "http://apis.data.go.kr/B090041/openapi/service/LrsrCldInfoService/getLunCalInfo"
101
  service_key = "EuBjt%2B2t0KzYt5Ri%2Bzs56oymt9kHJ8uPIOV7m6UMKnOV8cpwj02EiRqMEudX%2F%2FVTKdMnwaLH0igRwY57YUplEQ%3D%3D"
102
  url = f"{base_url}?solYear={solYear}&solMonth={solMonth}&solDay={solDay}&ServiceKey={service_key}"
103
-
104
-
105
  response = requests.get(url)
106
  if response.status_code == 200:
107
  root = ElementTree.fromstring(response.content)
108
-
109
  lunIljin = root.find(".//lunIljin").text if root.find(".//lunIljin") is not None else "정보 없음"
110
  lunWolgeon = root.find(".//lunWolgeon").text if root.find(".//lunWolgeon") is not None else "정보 없음"
111
  lunSecha = root.find(".//lunSecha").text if root.find(".//lunSecha") is not None else "정보 없음"
112
-
113
  siju = calculate_siju(solHour, lunIljin)
114
-
115
  # 사주 분석 결과를 HTML 형식으로 생성합니다.
116
  analysis_html = 사주_분석(lunSecha, lunWolgeon, lunIljin, siju)
117
-
118
  # JSON 결과, 일주 State, 그리고 HTML 분석 결과를 반환합니다.
119
  return {
120
- "년주": lunSecha,
121
- "월주": lunWolgeon,
122
- "일주": lunIljin,
123
- "시주": siju
124
- }, lunIljin, analysis_html
125
  else:
126
  return {"Error": "API 호출에 실패했습니다."}, "정보 없음", "<p>API 호출에 실패했습니다.</p>"
127
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  # B 데이터를 활용하는 함수 추가
129
  def get_famous_people(lunIljin):
130
  famous_people = {
@@ -142,10 +164,14 @@ def get_famous_people(lunIljin):
142
  "을묘": "문근영, 기우쌤, 화사, 염혜란, 규진[엔믹스], 효정, 장기용, 지성, 이근, 조용필, 리쌍, 루한, 타카하시 루미코[이누야샤]",
143
  "병인": "장현승, 손석구, 박지원[프미나], 라드뮤지엄, 김하온, 이홍기, 버벌진트, 혜리, 오은영, 강형욱, 백종원, 아라키 히로히코[죠죠의 기묘한 모험], 레오제이[유튜버], 히틀러",
144
  "병자": "신세휘, 홍승연[루트,댄서], 주우재, 필릭스[스키즈], 지호, 백지영, 김병만, 이노우에 다케히코[슬램덩크], 황의조, 풍자",
 
 
145
  }
146
- return famous_people.get(lunIljin, "해당 일주에 대한 유명인 정보가 없습니다.")
 
147
 
148
- def analyze_character(lunIljin, OPENAI_API_KEY):
 
149
  API_URL = "https://api.openai.com/v1/chat/completions"
150
  payload = {
151
  "model": "gpt-4-0125-preview", # 모델 이름 확인 필요
@@ -170,70 +196,97 @@ def analyze_character(lunIljin, OPENAI_API_KEY):
170
  # 오류 메시지 개선
171
  return f"오류가 발생했습니다. 상태 코드: {response.status_code}, 메시지: {response.json().get('error', {}).get('message', 'Unknown error')}", ""
172
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
 
174
  # 사주 분석 데이터 예시 (간소화된 버전)
175
  사주_데이터 = {
176
- '갑자(甲子)' : '새로운 시작의 상징, 리더십과 독립성이 특징이며, 호쾌하고 성실한 특성을 지닌다. ',
177
- '을축(乙丑)' : '인내심이 매우 강하며, 물질적 성취를 중요시하고 자상한 면모를 갖춘 사람이다. ',
178
- '병인(丙寅)' : '열정적이고 모험을 즐기며, 창의력이 뛰어나고 혁신적인 아이디어를 가진다. ',
179
- '정묘(丁卯)' : '예술적 감각이 뛰어나고 섬세한 성격으로, 관계에서의 충실함과 애정이 깊다. ',
180
- '무진(戊辰)' : '실용적이며 안정적인 기반을 중시하고, 꾸준한 노력을 통해 성장하는 타입이다. ',
181
- '기사(己巳)' : '유연성과 적응력이 뛰어나며, 다양한 상황에서도 잘 대처하는 능력을 가진다. ',
182
- '경오(庚午)' : '정의와 명예를 중시하며, 성실하고 진취적인 태도로 주변의 존경을 받는다. ',
183
- '신미(辛未)' : '세심하고 꼼꼼한 성격으로 완벽을 추구하며, 주변 사람들로부터 신뢰를 얻는다. ',
184
- '임신(壬申)' : '지혜와 균형이 잘 조화된 성격으로, 깊은 통찰력과 함께 인생을 이해하는 능력이 있다. ',
185
- '계유(癸酉)' : '외교적이고 조화를 중시하는 성향으로, 타인과의 관계에서 유연하고 다정다감하다. ',
186
- '갑술(甲戌)' : '미소를 띠며 주변 사람들에게 잘하고, 타고난 영업 능력으로 성공을 이끈다. ',
187
- '을해(乙亥)' : '시원시원한 인상과 모범생 같은 스타일로, 능력과 욕심을 겸비한 사람이다. ',
188
- '병자(丙子)' : '호방하고 까다롭지만, 일을 확실히 처리하고 은근한 매력을 가지고 있다. ',
189
- '정축(丁丑)' : '예술적 감각이 뛰어나며 따뜻하고 베풀 줄 아는 인간미 넘치는 사람이다. ',
190
- '무인(戊寅)' : '모험을 즐기고 자신감이 넘치며, 세상을 발아래 두고 싶어하는 야심 찬 사람이다. ',
191
- '기묘(己卯)' : '세심하고 예술적인 기질이 있으며, 깊은 생각과 함께 사람들과 조화롭게 지낸다. ',
192
- '경진(庚辰)' : '안정적이고 해학적인 성격을 가지며, 주변 사람들과의 조화를 중시한다. ',
193
- '신사(辛巳)' : '멋과 매력을 삶의 중심에 두며, 강한 사회적 능력을 지닌 사람이다. ',
194
- '임오(壬午)' : '지적 능력이 뛰어나고 심오한 생각을 하는, 깊이 있는 인물이다. ',
195
- '계미(癸未)' : '자신과 타인에게 친절하고 귀여운 면모를 지닌 사람으로, 사회적 상호작용에서 따스함과 배려를 보여준다. 자신의 사람들에게 잘 맞춰주며, 화합을 중요시한다. ',
196
- '갑신(甲申)' : '내면이 변화무쌍하나 겉으로는 드러내지 않고, 강인한 면모로 어려움을 극복한다.',
197
- '을유(乙酉)' : '타인의 비밀을 잘 지켜주는 신뢰할 수 있는 사람으로, 집중력과 생활력이 강하다. ',
198
- '병술(丙戌)' : '관대하면서도 세세한 부분에 까다로울 수 있으며, 생활력이 강하고 현명하다. ',
199
- '정해(丁亥)' : '포용력이 뛰어나고 삶에 대한 애착이 강하며, 진심으로 주변을 챙긴다. ',
200
- '무자(戊子)' : '신비로운 분위기와 재물을 중시하는 성향이 있으며, 속내를 잘 드러내지 않는다. ',
201
- '기축(己丑)' : '강인한 내면을 가지고 있으며, 자신만의 길을 걸어가는 확고한 신념을 지닌다. ',
202
- '경인(庚寅)' : '큰 포부와 국제적인 활동을 추구하며, 사업에서 큰 성공을 꿈꾸는 사람이다. ',
203
- '신묘(辛卯)' : '깐깐하고 날카로울 수 있지만, 기본적으로 마음이 착한 사람이다. ',
204
- '임진(壬辰)' : '인내심이 강하고, 한 번 마음먹은 일은 끝까지 밀고 나가는 강인한 의지의 사람이다. ',
205
- '계사(癸巳)' : '적절한 타이밍과 상황 판단력으로 눈에 띄는 성취를 이루는 사람이다. 똑똑하고 상황에 맞는 최선의 결정을 내릴 줄 알며, 삶에서의 여러 기회를 잘 살린다. ',
206
- '갑오(甲午)' : '조금 조급하고 실수할 수 있지만, 낭만적이�� 쾌활하여 주변을 밝게 만든다.',
207
- '을미(乙未)' : '애정이 많고 끈기가 있으며, 명확한 주관과 함께 사물의 이치를 잘 파악한다. ',
208
- '병신(丙申)' : '세련되고 맛과 멋을 추구하며, 사교적이면서도 내면의 갈등을 가진 사람이다. ',
209
- '정유(丁酉)' : '감각적이고 재치 있는 성격으로, 주변 사람들에게 즐거움을 주는 사람이다. ',
210
- '무술(戊戌)' : '실속을 중시하고 소박한 삶을 추구하며, 담백한 매력을 가진 실리주의자이다. ',
211
- '기해(己亥)' : '온화하고 명랑하며, 의지가 굳건하나 때로는 망설이는 경향이 있다. ',
212
- '경자(庚子)' : '차분하고 결단력이 있는 반면, 일의 장단점을 신중하게 판단하는 사람이다. ',
213
- '신축(辛丑)' : '겸손함과 함께 타인을 잘 판단하는 능력을 가진, 인간 관계에서의 조율자이다. ',
214
- '임인(壬寅)' : '안정감을 추구하며, 즐거움과 재미를 중요시하는 편안한 성격의 소유자이다. ',
215
- '계묘(癸卯)' : '친절하고 사람들에게 잘 맞춰주는 성격으로, 대단히 착하고 상대방을 편안하게 만드는 능력이 있다. 그의 존재만으로도 주변에 긍정적인 분위기를 만들어낸다. ',
216
- '갑진(甲辰)' : '호쾌한 성격 성실하면서 애교는 없는 무뚝뚝한 상남자 상여자 ',
217
- '을사(乙巳)' : '사람을 끌어당기는 매력이 넘치고, 어디서나 밝은 에너지를 발산한다. 다재다능하고 유연한 사고를 가지며, 새로운 만남과 경험에서 즐거움을 찾는다. ',
218
- '병오(丙午)' : '열정적이고 저돌적인 성격으로 주변을 이끄는 리더십과 솔선수범하는 태도를 지닌다. ',
219
- '정미(丁未)' : '부드럽고 자상하며 열정적인 성격으로, 다양한 사람들과 잘 어울린다. ',
220
- '무신(戊申)' : '따뜻한사람을 끌어당기는 매력이 넘치고, 어디서나 밝은 에너지를 발산한다. 다재다능하고 유연한 사고를 가지며, 새로운 만남과 경험에서 즐거움을 찾는다. 마음과 섬세한 감성을 가지고 있으며, 넓은 포용력으로 주변을 감싼다. ',
221
- '기유(己酉)' : '대담하고 삶에 대한 열정이 넘치지만, 때로는 우유부단한 모습을 보일 수 있다. ',
222
- '경술(庚戌)' : '냉정하고 신사적인 태도로 타인을 돕는 것을 즐기며, 때로는 까탈스러울 수 있다. ',
223
- '신해(辛亥)' : '자존심이 강하고 명확한 취향을 가지며, 낭만적인 감성을 소유한 사람이다. ',
224
- '임자(壬子)' : '조용하지만, 매력적이고 상황에 따라 강한 면모를 드러내는 신비한 인물이다. ',
225
- '계축(癸丑)' : '겉보기엔 차분하지만 내면에는 강한 의지와 신념을 지닌 사람으로, 정말 사람이 좋다는 느낌을 주는 따뜻함과 균형 잡힌 성격을 갖고 있다. 주변 사람들에게 믿음직스러운 존재다. ',
226
- '갑인(甲寅)' : '리더십이 있고 성정이 바르고 호방하다. 조직에 순응적인 사람이다.',
227
- '을묘(乙卯)' : '내면의 강인함에도 불구하고 부드러운 사교성으로 주변 사람들과 쉽게 어울린다. 직선적인 소통 방식 뒤에는 스며드는 영향력이 있어, 많은 이들에게 긍정적인 에너지를 전달한다. ',
228
- '병진(丙辰)' : '깔끔하고 단정한 외모에 도덕적이며, 상황을 교묘하게 조정하는 능력을 가진다. ',
229
- '정사(丁巳)' : '경쟁을 즐기고 다른 사람을 압도하려는 강한 의지와 사교적인 능력을 가졌다. ',
230
- '무오(戊午)' : '결코 굴하지 않는 정신력과 사업에서의 성공을 꿈꾸는, 야망 있는 사람이다. ',
231
- '기미(己未)' : '봉사정신이 투철하고 공동체 의식이 강하며, 공익을 위해 적극적으로 기여한다. ',
232
- '경신(庚申)' : '활동적이고 밖으로의 활동을 즐기며, 새로운 것에 도전하는 것을 두려워하지 않는다. ',
233
- '신유(辛酉)' : '고상하고 타인을 위하는 마음이 강하지만, 감정이 격해질 때는 상당히 무서울 수 있다. ',
234
- '임술(壬戌)' : '고집이 있지만 가족과 타인을 위해 헌신적으로 노력하는 강한 면모를 지닌다. ',
235
- '계해(癸亥)' : '그저 빠져들게 만드는 깊은 내면의 매력을 가진 사람으로, 의외의 깊은 생각과 감성을 지니고 있다. 자신만의 세계가 풍부해 타인과의 교류에서도 독특한 관점을 제공한다. ',
236
- }
 
237
 
238
  def 사주_분석(년주, 월주, 일주, 시주):
239
  # 각 주에 대한 설명을 HTML 형식으로 반환
@@ -250,6 +303,11 @@ def 사주_분석(년주, 월주, 일주, 시주):
250
 
251
 
252
  with gr.Blocks() as demo:
 
 
 
 
 
253
  with gr.Tab("AI 사주 운세 분석"):
254
  solYear = gr.Textbox(label="생년(예: 1990)")
255
  solMonth = gr.Textbox(label="생월(예: 01)")
@@ -261,20 +319,42 @@ with gr.Blocks() as demo:
261
  get_lunar_info_btn = gr.Button("분석하기")
262
 
263
  get_lunar_info_btn.click(
264
- fn=get_lunar_info,
265
- inputs=[solYear, solMonth, solDay, solHour],
266
  outputs=[output1, lunIljin_state, analysis_result]
267
  )
268
-
269
  with gr.Tab("나의 성격과 특징 분석"):
270
  OPENAI_API_KEY_input = gr.Textbox(label="OpenAI API 키", placeholder="여기에 OpenAI API 키를 입력하세요")
 
271
  character_output = gr.Textbox(label="성격과 특징")
272
-
273
  celebrity_output = gr.Textbox(label="���명인 이름")
274
-
275
  analyze_button = gr.Button("분석하기")
276
- analyze_button.click(fn=analyze_character, inputs=[lunIljin_state, OPENAI_API_KEY_input], outputs=[character_output, celebrity_output])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
277
 
278
-
 
 
 
 
279
 
280
  demo.launch()
 
9
  def exception_handler(exception_type, exception, traceback):
10
  print(f"{exception_type.__name__}: {exception}")
11
 
12
+
13
  sys.excepthook = exception_handler
14
  sys.tracebacklimit = 0
15
 
16
+
17
  def get_chinese_hour(birth_hour):
18
  hour = int(birth_hour[:2])
19
  chinese_hours = ['자', '축', '인', '묘', '진', '사', '오', '미', '신', '유', '술', '해']
20
  return chinese_hours[hour // 2 % 12]
21
 
22
+
23
  def calculate_siju(birth_hour, lunIljin):
24
  chinese_hour = get_chinese_hour(birth_hour) # 생시에 해당하는 지지
25
  lunIljin_first = lunIljin[0] # 일주의 첫 글자
26
+
27
  # 일주 첫 글자에 따른 시주 매핑
28
  siju_mapping = {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
+ ('갑', '자'): '갑자(甲子)', ('기', '자'): '갑자(甲子)',
31
+ ('을', '자'): '병자(丙子)', ('경', '자'): '병자(丙子)',
32
+ ('병', '자'): '무자(戊子)', ('신', '자'): '무자(戊子)',
33
+ ('정', '자'): '경자(庚子)', ('임', '자'): '경자(庚子)',
34
+ ('무', '자'): '임자(壬子)', ('계', '자'): '임자(壬子)',
35
+ ('갑', '축'): '을축(乙丑)', ('기', '축'): '을축(乙丑)',
36
+ ('을', '축'): '정축(丁丑)', ('경', '축'): '정축(丁丑)',
37
+ ('병', '축'): '기축(己丑)', ('신', '축'): '기축(己丑)',
38
+ ('정', '축'): '신축(辛丑)', ('임', '축'): '신축(辛丑)',
39
+ ('무', '축'): '계축(癸丑)', ('계', '축'): '계축(癸丑)',
40
+ ('갑', '인'): '병인(丙寅)', ('기', '인'): '병인(丙寅)',
41
+ ('을', '인'): '무인(戊寅)', ('경', '인'): '무인(戊寅)',
42
+ ('병', '인'): '경인(庚寅)', ('신', '인'): '경인(庚寅)',
43
+ ('정', '인'): '임인(壬寅)', ('임', '인'): '임인(壬寅)',
44
+ ('무', '인'): '갑인(甲寅)', ('계', '인'): '갑인(甲寅)',
45
+ ('갑', '묘'): '정묘(丁卯)', ('기', '묘'): '정묘(丁卯)',
46
+ ('을', '묘'): '기묘(己卯)', ('경', '묘'): '기묘(己卯)',
47
+ ('병', '묘'): '신묘(辛卯)', ('신', '묘'): '신묘(辛卯)',
48
+ ('정', '묘'): '계묘(癸卯)', ('임', '묘'): '계묘(癸卯)',
49
+ ('무', '묘'): '을묘(乙卯)', ('계', '묘'): '을묘(乙卯)',
50
+ ('갑', '진'): '무진(戊辰)', ('기', '진'): '무진(戊辰)',
51
+ ('을', '진'): '경진(庚辰)', ('경', '진'): '경진(庚辰)',
52
+ ('병', '진'): '임진(壬辰)', ('신', '진'): '임진(壬辰)',
53
+ ('정', '진'): '갑진(甲辰)', ('임', '진'): '갑진(甲辰)',
54
+ ('무', '진'): '병진(丙辰)', ('계', '진'): '병진(丙辰)',
55
+ ('갑', '사'): '기사(己巳)', ('기', '사'): '기사(己巳)',
56
+ ('을', '사'): '신사(辛巳)', ('경', '사'): '신사(辛巳)',
57
+ ('병', '사'): '계사(癸巳)', ('신', '사'): '계사(癸巳)',
58
+ ('정', '사'): '을사(乙巳)', ('임', '사'): '을사(乙巳)',
59
+ ('무', '사'): '정사(丁巳)', ('계', '사'): '정사(丁巳)',
60
+ ('갑', '오'): '경오(庚午)', ('기', '오'): '경오(庚午)',
61
+ ('을', '오'): '임오(壬午)', ('경', '오'): '임오(壬午)',
62
+ ('병', '오'): '갑오(甲午)', ('신', '오'): '갑오(甲午)',
63
+ ('정', '오'): '병오(丙午)', ('임', '오'): '병오(丙午)',
64
+ ('무', '오'): '무오(戊午)', ('계', '오'): '무오(戊午)',
65
+ ('갑', '미'): '임미(壬未)', ('기', '미'): '임미(壬未)',
66
+ ('을', '미'): '갑미(甲未)', ('경', '미'): '갑미(甲未)',
67
+ ('병', '미'): '병미(丙未)', ('신', '미'): '병미(丙未)',
68
+ ('정', '미'): '무미(戊未)', ('임', '미'): '무미(戊未)',
69
+ ('무', '미'): '경미(庚未)', ('계', '미'): '경미(庚未)',
70
+ ('갑', '신'): '임신(壬申)', ('기', '신'): '임신(壬申)',
71
+ ('을', '신'): '갑신(甲申)', ('경', '신'): '갑신(甲申)',
72
+ ('병', '신'): '병신(丙申)', ('신', '신'): '병신(丙申)',
73
+ ('정', '신'): '무신(戊申)', ('임', '신'): '무신(戊申)',
74
+ ('무', '신'): '경신(庚申)', ('계', '신'): '경신(庚申)',
75
+ ('갑', '유'): '계유(癸酉)', ('기', '유'): '계유(癸酉)',
76
+ ('을', '유'): '을유(乙酉)', ('경', '유'): '을유(乙酉)',
77
+ ('병', '유'): '정유(丁酉)', ('신', '유'): '정유(丁酉)',
78
+ ('정', '유'): '기유(己酉)', ('임', '유'): '기유(己酉)',
79
+ ('무', '유'): '신유(辛酉)', ('계', '유'): '신유(辛酉)',
80
+ ('갑', '술'): '갑술(甲戌) ', ('기', '술'): '갑술(甲戌)',
81
+ ('을', '술'): '병술(丙戌) ', ('경', '술'): '병술(丙戌)',
82
+ ('병', '술'): '무술(戊戌) ', ('신', '술'): '무술(戊戌)',
83
+ ('정', '술'): '경술(庚戌) ', ('임', '술'): '경술(庚戌)',
84
+ ('무', '술'): '임술(壬戌) ', ('계', '술'): '임술(壬戌)',
85
+ ('갑', '해'): '을해(乙亥)', ('기', '해'): '을해(乙亥)',
86
+ ('을', '해'): '정해(丁亥)', ('경', '해'): '정해(丁亥)',
87
+ ('병', '해'): '기해(己亥)', ('신', '해'): '기해(己亥)',
88
+ ('정', '해'): '신해(辛亥)', ('임', '해'): '신해(辛亥)',
89
+ ('무', '해'): '계해(癸亥)', ('계', '해'): '계해(癸亥)',
90
+ }
91
 
92
  # 시주 계산
93
  siju_key = (lunIljin_first, chinese_hour)
 
96
  # 일주와 지지 조합에 대한 매핑이 없는 경우의 처리
97
  siju = f"일주 '{lunIljin_first}'와 지지 '{chinese_hour}'에 해당하는 시주를 찾을 수 없습니다."
98
 
99
+ return siju
100
+
101
 
102
  def get_lunar_info(solYear, solMonth, solDay, solHour):
103
  base_url = "http://apis.data.go.kr/B090041/openapi/service/LrsrCldInfoService/getLunCalInfo"
104
  service_key = "EuBjt%2B2t0KzYt5Ri%2Bzs56oymt9kHJ8uPIOV7m6UMKnOV8cpwj02EiRqMEudX%2F%2FVTKdMnwaLH0igRwY57YUplEQ%3D%3D"
105
  url = f"{base_url}?solYear={solYear}&solMonth={solMonth}&solDay={solDay}&ServiceKey={service_key}"
106
+
 
107
  response = requests.get(url)
108
  if response.status_code == 200:
109
  root = ElementTree.fromstring(response.content)
110
+
111
  lunIljin = root.find(".//lunIljin").text if root.find(".//lunIljin") is not None else "정보 없음"
112
  lunWolgeon = root.find(".//lunWolgeon").text if root.find(".//lunWolgeon") is not None else "정보 없음"
113
  lunSecha = root.find(".//lunSecha").text if root.find(".//lunSecha") is not None else "정보 없음"
114
+
115
  siju = calculate_siju(solHour, lunIljin)
116
+
117
  # 사주 분석 결과를 HTML 형식으로 생성합니다.
118
  analysis_html = 사주_분석(lunSecha, lunWolgeon, lunIljin, siju)
119
+
120
  # JSON 결과, 일주 State, 그리고 HTML 분석 결과를 반환합니다.
121
  return {
122
+ "년주": lunSecha,
123
+ "월주": lunWolgeon,
124
+ "일주": lunIljin,
125
+ "시주": siju
126
+ }, lunIljin, analysis_html
127
  else:
128
  return {"Error": "API 호출에 실패했습니다."}, "정보 없음", "<p>API 호출에 실패했습니다.</p>"
129
 
130
+ def get_lunar_info_for_two_people(solYear, solMonth, solDay, solHour, solYear2, solMonth2, solDay2, solHour2):
131
+ print(solYear, solMonth, solDay, solHour, solYear2, solMonth2, solDay2, solHour2)
132
+
133
+ rst1 = get_lunar_info(solYear, solMonth, solDay, solHour)
134
+ rst2 = get_lunar_info(solYear2, solMonth2, solDay2, solHour2)
135
+
136
+ print(rst1[0], rst1[1], rst1[2], rst2[0], rst2[1], rst2[2])
137
+
138
+ #궁합
139
+ # 두 사람의 궁합 분석
140
+ compatibility = analyze_character_two(rst1[1], rst2[1])
141
+
142
+ return rst1[0], rst1[1], rst1[2], rst2[0], rst2[1], rst2[2], compatibility
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
  # B 데이터를 활용하는 함수 추가
151
  def get_famous_people(lunIljin):
152
  famous_people = {
 
164
  "을묘": "문근영, 기우쌤, 화사, 염혜란, 규진[엔믹스], 효정, 장기용, 지성, 이근, 조용필, 리쌍, 루한, 타카하시 루미코[이누야샤]",
165
  "병인": "장현승, 손석구, 박지원[프미나], 라드뮤지엄, 김하온, 이홍기, 버벌진트, 혜리, 오은영, 강형욱, 백종원, 아라키 히로히코[죠죠의 기묘한 모험], 레오제이[유튜버], 히틀러",
166
  "병자": "신세휘, 홍승연[루트,댄서], 주우재, 필릭스[스키즈], 지호, 백지영, 김병만, 이노우에 다케히코[슬램덩크], 황의조, 풍자",
167
+ "무신": "한소희, 이원정[우영우9회], 글렌 포웰[배우], 장도연, 박보영, 제시카, 온유, 안지영, 하연수, 박지민, 릴보이, 켄지[작곡가], 이미도[배우], 셰익스피어",
168
+ "병신": "시은[스테이씨], 고찬빈[배우], 키, 에단 코엔, 강동원, 타블로, 이민우, 윤남기[돌싱글즈2], 한서희, 허경영, 김건희, 남태현, 토리야마 아키라[드래곤볼], 아인슈타인, 고흐",
169
  }
170
+ print(lunIljin)
171
+ return famous_people.get(lunIljin[:2], "해당 일주에 대한 유명인 정보가 없습니다.")
172
 
173
+
174
+ def analyze_character(lunIljin, OPENAI_API_KEY="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"):
175
  API_URL = "https://api.openai.com/v1/chat/completions"
176
  payload = {
177
  "model": "gpt-4-0125-preview", # 모델 이름 확인 필요
 
196
  # 오류 메시지 개선
197
  return f"오류가 발생했습니다. 상태 코드: {response.status_code}, 메시지: {response.json().get('error', {}).get('message', 'Unknown error')}", ""
198
 
199
+ def analyze_character_two(lunIljin, lunIljin2, OPENAI_API_KEY="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"):
200
+ API_URL = "https://api.openai.com/v1/chat/completions"
201
+ payload = {
202
+ "model": "gpt-4-0125-preview", # 모델 이름 확인 필요
203
+ "messages": [{
204
+ "role": "system",
205
+ "content": "당신은 두사람의 궁합에 대해 설명하는 챗봇입니다."
206
+ }, {
207
+ "role": "user",
208
+ "content": f"다음의 두사람의 사주를 보고 궁합이 좋은지 안좋은지 성향이 맞는지 아닌지 여부를 알려주고 이것을 100% 대비 비율도 추가해서 표현해주세요 '{lunIljin}', '{lunIljin2}'"
209
+
210
+ }],
211
+ }
212
+ headers = {
213
+ "Content-Type": "application/json",
214
+ "Authorization": f"Bearer {OPENAI_API_KEY}"
215
+ }
216
+ response = requests.post(API_URL, headers=headers, json=payload)
217
+ if response.status_code == 200:
218
+ data = response.json()
219
+ # 대화형 API 응답에서 적절한 메시지 추출 및 유명인 이름 반환
220
+ return data["choices"][0]["message"]["content"]
221
+ else:
222
+ # 오류 메시지 개선
223
+ return f"오류가 발생했습니다. 상태 코드: {response.status_code}, 메시지: {response.json().get('error', {}).get('message', 'Unknown error')}", ""
224
+
225
 
226
  # 사주 분석 데이터 예시 (간소화된 버전)
227
  사주_데이터 = {
228
+ '갑자(甲子)': '새로운 시작의 상징, 리더십과 독립성이 특징이며, 호쾌하고 성실한 특성을 지닌다. ',
229
+ '을축(乙丑)': '인내심이 매우 강하며, 물���적 성취를 중요시하고 자상한 면모를 갖춘 사람이다. ',
230
+ '병인(丙寅)': '열정적이고 모험을 즐기며, 창의력이 뛰어나고 혁신적인 아이디어를 가진다. ',
231
+ '정묘(丁卯)': '예술적 감각이 뛰어나고 섬세한 성격으로, 관계에서의 충실함과 애정이 깊다. ',
232
+ '무진(戊辰)': '실용적이며 안정적인 기반을 중시하고, 꾸준한 노력을 통해 성장하는 타입이다. ',
233
+ '기사(己巳)': '유연성과 적응력이 뛰어나며, 다양한 상황에서도 잘 대처하는 능력을 가진다. ',
234
+ '경오(庚午)': '정의와 명예를 중시하며, 성실하고 진취적인 태도로 주변의 존경을 받는다. ',
235
+ '신미(辛未)': '세심하고 꼼꼼한 성격으로 완벽을 추구하며, 주변 사람들로부터 신뢰를 얻는다. ',
236
+ '임신(壬申)': '지혜와 균형이 잘 조화된 성격으로, 깊은 통찰력과 함께 인생을 이해하는 능력이 있다. ',
237
+ '계유(癸酉)': '외교적이고 조화를 중시하는 성향으로, 타인과의 관계에서 유연하고 다정다감하다. ',
238
+ '갑술(甲戌)': '미소를 띠며 주변 사람들에게 잘하고, 타고난 영업 능력으로 성공을 이끈다. ',
239
+ '을해(乙亥)': '시원시원한 인상과 모범생 같은 스타일로, 능력과 욕심을 겸비한 사람이다. ',
240
+ '병자(丙子)': '호방하고 까다롭지만, 일을 확실히 처리하고 은근한 매력을 가지고 있다. ',
241
+ '정축(丁丑)': '예술적 감각이 뛰어나며 따뜻하고 베풀 줄 아는 인간미 넘치는 사람이다. ',
242
+ '무인(戊寅)': '모험을 즐기고 자신감이 넘치며, 세상을 발아래 두고 싶어하는 야심 찬 사람이다. ',
243
+ '기묘(己卯)': '세심하고 예술적인 기질이 있으며, 깊은 생각과 함께 사람들과 조화롭게 지낸다. ',
244
+ '경진(庚辰)': '안정적이고 해학적인 성격을 가지며, 주변 사람들과의 조화를 중시한다. ',
245
+ '신사(辛巳)': '멋과 매력을 삶의 중심에 두며, 강한 사회적 능력을 지닌 사람이다. ',
246
+ '임오(壬午)': '지적 능력이 뛰어나고 심오한 생각을 하는, 깊이 있는 인물이다. ',
247
+ '계미(癸未)': '자신과 타인에게 친절하고 귀여운 면모를 지닌 사람으로, 사회적 상호작용에서 따스함과 배려를 보여준다. 자신의 사람들에게 잘 맞춰주며, 화합을 중요시한다. ',
248
+ '갑신(甲申)': '내면이 변화무쌍하나 겉으로는 드러내지 않고, 강인한 면모로 어려움을 극복한다.',
249
+ '을유(乙酉)': '타인의 비밀을 잘 지켜주는 신뢰할 수 있는 사람으로, 집중력과 생활력이 강하다. ',
250
+ '병술(丙戌)': '관대하면서도 세세한 부분에 까다로울 수 있으며, 생활력이 강하고 현명하다. ',
251
+ '정해(丁亥)': '포용력이 뛰어나고 삶에 대한 애착이 강하며, 진심으로 주변을 챙긴다. ',
252
+ '무자(戊子)': '신비로운 분위기와 재물을 중시하는 성향이 있으며, 속내를 잘 드러내지 않는다. ',
253
+ '기축(己丑)': '강인한 내면을 가지고 있으며, 자신만의 길을 걸어가는 확고한 신념을 지닌다. ',
254
+ '경인(庚寅)': '큰 포부와 국제적인 활동을 추구하며, 사업에서 큰 성공을 꿈꾸는 사람이다. ',
255
+ '신묘(辛卯)': '깐깐하고 날카로울 수 있지만, 기본적으로 마음이 착한 사람이다. ',
256
+ '임진(壬辰)': '인내심이 강하고, 한 번 마음먹은 일은 끝까지 밀고 나가는 강인한 의지의 사람이다. ',
257
+ '계사(癸巳)': '적절한 타이밍과 상황 판단력으로 눈에 띄는 성취를 이루는 사람이다. 똑똑하고 상황에 맞는 최선의 결정을 내릴 줄 알며, 삶에서의 여러 기회를 잘 살린다. ',
258
+ '갑오(甲午)': '조금 조급하고 실수할 수 있지만, 낭만적이고 쾌활하여 주변을 밝게 만든다.',
259
+ '을미(乙未)': '애정이 많고 끈기가 있으며, 명확한 주관과 함께 사물의 이치를 잘 파악한다. ',
260
+ '병신(丙申)': '세련되고 맛과 멋을 추구하며, 사교적이면서도 내면의 갈등을 가진 사람이다. ',
261
+ '정유(丁酉)': '감각적이고 재치 있는 성격으로, 주변 사람들에게 즐거움을 주는 사람이다. ',
262
+ '무술(戊戌)': '실속을 중시하고 소박한 삶을 추구하며, 담백한 매력을 가진 실리주의자이다. ',
263
+ '기해(己亥)': '온화하고 명랑하며, 의지가 굳건하나 때로는 망설이는 경향이 있다. ',
264
+ '경자(庚子)': '차분하고 결단력이 있는 반면, 일의 장단점을 신중하게 판단하는 사람이다. ',
265
+ '신축(辛丑)': '겸손���과 함께 타인을 잘 판단하는 능력을 가진, 인간 관계에서의 조율자이다. ',
266
+ '임인(壬寅)': '안정감을 추구하며, 즐거움과 재미를 중요시하는 편안한 성격의 소유자이다. ',
267
+ '계묘(癸卯)': '친절하고 사람들에게 잘 맞춰주는 성격으로, 대단히 착하고 상대방을 편안하게 만드는 능력이 있다. 그의 존재만으로도 주변에 긍정적인 분위기를 만들어낸다. ',
268
+ '갑진(甲辰)': '호쾌한 성격 성실하면서 애교는 없는 무뚝뚝한 상남자 상여자 ',
269
+ '을사(乙巳)': '사람을 끌어당기는 매력이 넘치고, 어디서나 밝은 에너지를 발산한다. 다재다능하고 유연한 사고를 가지며, 새로운 만남과 경험에서 즐거움을 찾는다. ',
270
+ '병오(丙午)': '열정적이고 저돌적인 성격으로 주변을 이끄는 리더십과 솔선수범하는 태도를 지닌다. ',
271
+ '정미(丁未)': '부드럽고 자상하며 열정적인 성격으로, 다양한 사람들과 잘 어울린다. ',
272
+ '무신(戊申)': '따뜻한사람을 끌어당기는 매력이 넘치고, 어디서나 밝은 에너지를 발산한다. 다재다능하고 유연한 사고를 가지며, 새로운 만남과 경험에서 즐거움을 찾는다. 마음과 섬세한 감성을 가지고 있으며, 넓은 포용력으로 주변을 감싼다. ',
273
+ '기유(己酉)': '대담하고 삶에 대한 열정이 넘치지만, 때로는 우유부단한 모습을 보일 수 있다. ',
274
+ '경술(庚戌)': '냉정하고 신사적인 태도로 타인을 돕는 것을 즐기며, 때로는 까탈스러울 수 있다. ',
275
+ '신해(辛亥)': '자존심이 강하고 명확한 취향을 가지며, 낭만적인 감성을 소유한 사람이다. ',
276
+ '임자(壬子)': '조용하지만, 매력적이고 상황에 따라 강한 면모를 드러내는 신비한 인물이다. ',
277
+ '계축(癸丑)': '겉보기엔 차분하지만 내면에는 강한 의지와 신념을 지닌 사람으로, 정말 사람이 좋다는 느낌을 주는 따뜻함과 균형 잡힌 성격을 갖고 있다. 주변 사람들에게 믿음직스러운 존재다. ',
278
+ '갑인(甲寅)': '리더십이 있고 성정이 바르고 호방하다. 조직에 순응적인 사람이다.',
279
+ '을묘(乙卯)': '내면의 강인함에도 불구하고 부드러운 사교성으로 주변 사람들과 쉽게 어울린다. 직선적인 소통 방식 뒤에는 스며드는 영향력이 있어, 많은 이들에게 긍정적인 에너지를 전달한다. ',
280
+ '병진(丙辰)': '깔끔하고 단정한 외모에 도덕적이며, 상황을 교묘하게 조정하는 능력을 가진다. ',
281
+ '정사(丁巳)': '경쟁을 즐기고 다른 사람을 압도하려는 강한 의지와 사교적인 능력을 가졌다. ',
282
+ '무오(戊午)': '결코 굴하지 않는 정신력과 사업에서의 성공을 꿈꾸는, 야망 있는 사람이다. ',
283
+ '기미(己未)': '봉사정신이 투철하고 공동체 의식이 강하며, 공익을 위해 적극적으로 기여한다. ',
284
+ '경신(庚申)': '활동적이고 밖으로의 활동을 즐기며, 새로운 것에 도전하는 것을 두려워하지 않는다. ',
285
+ '신유(辛酉)': '고상하고 타인을 위하는 마음이 강하지만, 감정이 격해질 때는 상당히 무서울 수 있다. ',
286
+ '임술(壬戌)': '고집이 있지만 가족과 타인을 위해 헌신적으로 노력하는 강한 면모를 지닌다. ',
287
+ '계해(癸亥)': '그저 빠져들게 만드는 깊은 내면의 매력을 가진 사람으로, 의외의 깊은 생각과 감성을 지니고 있다. 자신만의 세계가 풍부해 타인과의 교류에서도 독특한 관점을 제공한다. ',
288
+ }
289
+
290
 
291
  def 사주_분석(년주, 월주, 일주, 시주):
292
  # 각 주에 대한 설명을 HTML 형식으로 반환
 
303
 
304
 
305
  with gr.Blocks() as demo:
306
+ solYear =""
307
+ solMonth = ""
308
+ solDay = ""
309
+ solHour = ""
310
+
311
  with gr.Tab("AI 사주 운세 분석"):
312
  solYear = gr.Textbox(label="생년(예: 1990)")
313
  solMonth = gr.Textbox(label="생월(예: 01)")
 
319
  get_lunar_info_btn = gr.Button("분석하기")
320
 
321
  get_lunar_info_btn.click(
322
+ fn=get_lunar_info,
323
+ inputs=[solYear, solMonth, solDay, solHour],
324
  outputs=[output1, lunIljin_state, analysis_result]
325
  )
326
+
327
  with gr.Tab("나의 성격과 특징 분석"):
328
  OPENAI_API_KEY_input = gr.Textbox(label="OpenAI API 키", placeholder="여기에 OpenAI API 키를 입력하세요")
329
+
330
  character_output = gr.Textbox(label="성격과 특징")
331
+
332
  celebrity_output = gr.Textbox(label="���명인 이름")
333
+
334
  analyze_button = gr.Button("분석하기")
335
+ analyze_button.click(fn=analyze_character, inputs=[lunIljin_state, OPENAI_API_KEY_input],
336
+ outputs=[character_output, celebrity_output])
337
+
338
+
339
+ with gr.Tab("궁합"):
340
+ solYear = gr.Textbox(label="생년(예: 1990)")
341
+ solMonth = gr.Textbox(label="생월(예: 01)")
342
+ solDay = gr.Textbox(label="생일(예: 31)")
343
+ solHour = gr.Textbox(label="생시(예시: 1030)", placeholder="시간을 24시간 형식으로 입력하세요 (예: 2230)")
344
+ output1 = gr.JSON(label="결과")
345
+ solYear2 = gr.Textbox(label="생년(예: 1990)")
346
+ solMonth2 = gr.Textbox(label="생월(예: 01)")
347
+ solDay2 = gr.Textbox(label="생일(예: 31)")
348
+ solHour2 = gr.Textbox(label="생시(예시: 1030)", placeholder="시간을 24시간 형식으로 입력하세요 (예: 2230)")
349
+ output2 = gr.JSON(label="결과")
350
+ analysis_result = gr.HTML() # 사주 분석 결과를 출력할 HTML 컴포넌트
351
+ lunIljin_state = gr.State() # 일주를 저장할 State
352
+ get_lunar_info_btn = gr.Button("분석하기")
353
 
354
+ get_lunar_info_btn.click(
355
+ fn=get_lunar_info_for_two_people,
356
+ inputs=[solYear, solMonth, solDay, solHour, solYear2, solMonth2, solDay2, solHour2],
357
+ outputs=[output1, lunIljin_state, analysis_result, output2, lunIljin_state, analysis_result, analysis_result]
358
+ )
359
 
360
  demo.launch()