aliceblue11's picture
Update app.py
654a143 verified
raw
history blame
8.04 kB
import gradio as gr
import re
import datetime
import calendar
import requests
import json
from datetime import datetime
# ================== 컨셉 분석 모듈 ==================
class ConceptAnalyzer:
def __init__(self):
self.monthly_data = {
"1월": {
"special_days": ["미니멀 챌린지", "새해 리셋", "건강한 습관 만들기", "갓생 챌린지", "21일 습관 만들기"],
"trends": ["미니멀", "자기계발", "플래너", "정리정돈", "갓생살기", "건강한 루틴", "새해 결심", "미라클 모닝", "홈트", "독서"],
"colors": ["#FF6B6B", "#4ECDC4", "#45B7D1"],
"mood": "희망적이고 새로운 시작",
"female_appeal": ["미니멀", "자기계발", "셀프케어", "건강한 습관", "갓생"]
},
"2월": {
"special_days": ["갈렌타인데이", "셀프러브", "사랑의 달", "자기사랑 챌린지", "따뜻한 마음 나누기"],
"trends": ["셀프러브", "갈렌타인", "로맨스", "따뜻한 감성", "자기사랑", "친구사랑", "감성 카페", "겨울 데이트", "따뜻한 차", "아늑한 집콕"],
"colors": ["#FF69B4", "#FFB6C1", "#DC143C"],
"mood": "로맨틱하고 감성적",
"female_appeal": ["셀프러브", "우정", "로맨스", "자기사랑", "갈렌타인"]
},
"3월": {
"special_days": ["여성의 날", "봄의 시작", "새학기", "벚꽃 예보", "봄맞이 준비"],
"trends": ["봄맞이", "벚꽃 시즌", "봄 패션", "새출발", "봄 정리", "꽃구경", "봄 여행", "라이프스타일 변화", "새 시작", "봄 데이트"],
"colors": ["#FFB6C1", "#98FB98", "#87CEEB"],
"mood": "설렘가득하고 활기찬",
"female_appeal": ["봄 패션", "꽃구경", "새출발", "라이프스타일", "봄맞이"]
},
"4월": {
"special_days": ["벚꽃 시즌", "봄나들이", "피크닉", "야외 활동", "봄 여행"],
"trends": ["벚꽃축제", "봄피크닉", "아웃도어", "꽃놀이", "야외 운동", "캠핑", "등산", "자전거", "봄 축제", "꽃구경"],
"colors": ["#98FB98", "#F0E68C", "#DDA0DD"],
"mood": "생기발랄하고 즐거운",
"female_appeal": ["벚꽃놀이", "피크닉", "봄여행", "야외활동", "꽃구경"]
},
"5월": {
"special_days": ["로즈데이", "감사의 달", "어버이날", "가정의 달", "스승의 날"],
"trends": ["감사", "나들이", "로즈데이", "봄여행", "가족사랑", "효도", "감사표현", "선물", "힐링", "여행"],
"colors": ["#32CD32", "#FFB6C1", "#87CEEB"],
"mood": "따뜻하고 감사한",
"female_appeal": ["로즈데이", "감사표현", "힐링", "가족사랑", "선물"]
},
"6월": {
"special_days": ["키스데이", "여름 준비", "쿨링", "결혼 시즌", "초여름"],
"trends": ["여름준비", "쿨링", "바캉스준비", "여름패션", "다이어트", "여름 화장품", "시원한 음료", "여름 레시피", "휴가 계획", "웨딩"],
"colors": ["#00CED1", "#FFD700", "#FF6347"],
"mood": "시원하고 활동적인",
"female_appeal": ["여름준비", "쿨링케어", "바캉스", "다이어트", "여름패션"]
},
"7월": {
"special_days": ["실버데이", "여름휴가", "바캉스", "휴가철", "여름 축제"],
"trends": ["여름휴가", "바캉스", "휴가패션", "여행", "해변", "수영장", "페스티벌", "여름 액티비티", "서핑", "다이빙"],
"colors": ["#00BFFF", "#FFD700", "#FF6347"],
"mood": "역동적이고 자유로운",
"female_appeal": ["바캉스", "여행", "휴가패션", "여름축제", "해변"]
},
"8월": {
"special_days": ["여름 마무리", "휴가", "여름 추억", "페스티벌", "야외 파티"],
"trends": ["여름휴가", "바다여행", "축제", "여름추억", "페스티벌", "야외 파티", "캠핑", "글램핑", "워터파크", "여름 간식"],
"colors": ["#00BFFF", "#FF6347", "#FFD700"],
"mood": "열정적이고 추억가득한",
"female_appeal": ["여름추억", "힐링", "여행", "페스티벌", "야외활동"]
},
"9월": {
"special_days": ["포토데이", "뮤직데이", "가을시작", "독서의 계절", "문화생활"],
"trends": ["가을패션", "독서", "문화생활", "감성", "카페", "전시회", "공연", "예술", "취미", "자기계발"],
"colors": ["#FF8C00", "#DC143C", "#B8860B"],
"mood": "감성적이고 성숙한",
"female_appeal": ["가을패션", "카페", "독서", "문화생활", "취미"]
},
"10월": {
"special_days": ["와인데이", "커피데이", "독서의 달", "할로윈", "가을 여행"],
"trends": ["가을단풍", "독서", "카페문화", "와인", "할로윈", "단풍구경", "등산", "가을 여행", "코스모스", "감성 사진"],
"colors": ["#FF8C00", "#DC143C", "#B8860B"],
"mood": "감성적이고 여유로운",
"female_appeal": ["단풍구경", "카페", "와인", "가을여행", "할로윈"]
},
"11월": {
"special_days": ["무비데이", "오렌지데이", "연말준비", "빼빼로데이", "추수감사"],
"trends": ["빼빼로데이", "연말준비", "겨울패션", "따뜻함", "영화", "독서", "겨울 준비", "연말 모임", "따뜻한 차", "홈파티"],
"colors": ["#8B4513", "#A0522D", "#CD853F"],
"mood": "포근하고 준비하는",
"female_appeal": ["빼빼로데이", "겨울패션", "연말모임", "영화감상", "홈파티"]
},
"12월": {
"special_days": ["허그데이", "연말파티", "송년", "크리스마스", "연말 결산"],
"trends": ["크리스마스", "연말파티", "선물", "송년회", "연말 결산", "한 해 마무리", "감사", "새해 계획", "겨울 데이트", "홈파티"],
"colors": ["#DC143C", "#228B22", "#FFD700"],
"mood": "축제같고 따뜻한",
"female_appeal": ["크리스마스", "연말모임", "선물", "한해마무리", "감사"]
}
}
def extract_month_from_period(self, period_text):
if not period_text or period_text.strip() == "":
return None
date_patterns = [
r'(\d{4})\.(\d{1,2})\.(\d{1,2})',
r'(\d{1,2})\.(\d{1,2})',
r'(\d{1,2})월',
]
for pattern in date_patterns:
matches = re.findall(pattern, period_text)
if matches:
if len(matches[0]) == 3:
month = int(matches[0][1])
elif len(matches[0]) == 2:
month = int(matches[0][0])
else:
month = int(matches[0])
if 1 <= month <= 12:
return f"{month}월"
return None
def analyze_concepts(self, month):
data = self.monthly_data.get(month, {})
concepts = []
# 10개의 다양한 컨셉 생성
special_days = data.get("special_days", [])
trends = data.get("trends", [])
female_appeal = data.get("female_appeal", [])
for i in range(min(10, len