Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -184,76 +184,7 @@ class ConceptAnalyzer:
|
|
184 |
|
185 |
concept_names.append(concept['name'])
|
186 |
|
187 |
-
return result, concept_names
|
188 |
-
|
189 |
-
def generate_trendy_copy(self, concept_name, month):
|
190 |
-
"""트렌디한 카피라이팅 생성 - 더 다양한 패턴 추가"""
|
191 |
-
|
192 |
-
trendy_copies = {
|
193 |
-
"미니멀": {
|
194 |
-
"sub1": "🌟 '나는 정리를 못하는 여자'는 이제 그만!",
|
195 |
-
"main": "미니멀은 '미'니로 '말'하는 거야, 작게 말해도 큰 변화! ✨",
|
196 |
-
"sub2": "올해는 진짜 '갓생'을 살아보자구요! 💪",
|
197 |
-
"hashtags": ["#갓생살기", "#미니멀", "#정리의신", "#새해정리"]
|
198 |
-
},
|
199 |
-
"셀프케어": {
|
200 |
-
"sub1": "💕 '나 자신과 연애 중'이라고 말할 수 있나요?",
|
201 |
-
"main": "셀프케어는 '셀프'로 '케어'하는 거 맞아! 💖",
|
202 |
-
"sub2": "오늘부터 내가 내 최고의 친구가 되는 거야 ✨",
|
203 |
-
"hashtags": ["#셀프케어", "#나를위한시간", "#힐링", "#자기사랑"]
|
204 |
-
},
|
205 |
-
"갓생": {
|
206 |
-
"sub1": "✨ 매일 똑같은 하루가 지겨우신가요?",
|
207 |
-
"main": "갓생은 '갓'처럼 살아보자는 거야! 너도 할 수 있어 🔥",
|
208 |
-
"sub2": "작은 변화가 큰 행복을 만들어요 💫",
|
209 |
-
"hashtags": ["#갓생살기", "#미라클모닝", "#자기계발", "#루틴만들기"]
|
210 |
-
},
|
211 |
-
"챌린지": {
|
212 |
-
"sub1": "🎯 혼자서는 어려워도 함께라면 가능해!",
|
213 |
-
"main": "챌린지는 '챌'만 해봐도 성공이야! 도전해볼까? 🚀",
|
214 |
-
"sub2": "우리 함께 새로운 나를 만나러 가요 ✨",
|
215 |
-
"hashtags": ["#챌린지", "#함께해요", "#새로운나", "#도전"]
|
216 |
-
},
|
217 |
-
"벚꽃": {
|
218 |
-
"sub1": "🌸 봄이 왔어요! 설레는 마음 준비되셨나요?",
|
219 |
-
"main": "벚꽃은 '벚'보다 '꽃'이 중요해! 꽃처럼 예쁘게 피어나요 🌺",
|
220 |
-
"sub2": "짧지만 아름다운 순간을 함께 만들어요 💕",
|
221 |
-
"hashtags": ["#벚꽃놀이", "#봄나들이", "#꽃구경", "#봄감성"]
|
222 |
-
},
|
223 |
-
"바캉스": {
|
224 |
-
"sub1": "🏖️ 더위는 싫어도 여름은 좋아하는 사람?",
|
225 |
-
"main": "바캉스는 '바'쁜 일상에서 '캉'스럽게 쉬는 거야! 🌊",
|
226 |
-
"sub2": "올여름 가장 핫한 추억을 만들어봐요 🔥",
|
227 |
-
"hashtags": ["#바캉스", "#여름휴가", "#힐링여행", "#여름추억"]
|
228 |
-
},
|
229 |
-
"카페": {
|
230 |
-
"sub1": "☕ 오늘도 카페인에 의존하며 살고 계신가요?",
|
231 |
-
"main": "카페는 '카'페인보다 '페'이스북 같은 소통공간! 📸",
|
232 |
-
"sub2": "따뜻한 커피 한 잔으로 시작하는 특별한 하루 ✨",
|
233 |
-
"hashtags": ["#카페투어", "#커피타임", "#감성카페", "#카페추천"]
|
234 |
-
},
|
235 |
-
"크리스마스": {
|
236 |
-
"sub1": "🎄 올해 크리스마스는 뭔가 특별하게 보내고 싶다면?",
|
237 |
-
"main": "크리스마스는 '크'게 '리'액션하며 '스'페셜하게! 🎅",
|
238 |
-
"sub2": "따뜻한 마음이 가득한 연말을 함께 만들어요 💝",
|
239 |
-
"hashtags": ["#크리스마스", "#연말파티", "#선물", "#따뜻한연말"]
|
240 |
-
}
|
241 |
-
}
|
242 |
-
|
243 |
-
# 기본 카피
|
244 |
-
default_copy = {
|
245 |
-
"sub1": "✨ 이런 특별한 순간을 놓칠 수 없죠!",
|
246 |
-
"main": "지금 이 순간이 바로 '찐'이야! 💫",
|
247 |
-
"sub2": "함께라면 뭐든 '레전드'가 될 수 있어요 🎉",
|
248 |
-
"hashtags": ["#찐이야", "#레전드순간", "#함께해요", "#특별한시간"]
|
249 |
-
}
|
250 |
-
|
251 |
-
# 컨셉명에서 키워드 찾기
|
252 |
-
for keyword, copy_data in trendy_copies.items():
|
253 |
-
if keyword in concept_name:
|
254 |
-
return copy_data
|
255 |
-
|
256 |
-
return default_copy False) else ""
|
257 |
result += f"## {i}. {concept['name']}{is_recommended_mark}\n"
|
258 |
result += f"**🏷️ 테마:** {concept['theme']}\n"
|
259 |
result += f"**⭐ 참여도 점수:** {concept['score']}/10점\n"
|
@@ -753,12 +684,16 @@ def create_interface():
|
|
753 |
return (
|
754 |
result,
|
755 |
gr.update(choices=concepts, visible=True, value=concepts[0] if concepts else ""),
|
|
|
756 |
concepts
|
757 |
)
|
758 |
|
759 |
def handle_concept_selection(concept):
|
760 |
return gr.update(value=concept)
|
761 |
|
|
|
|
|
|
|
762 |
def update_reward_ui(reward_type):
|
763 |
return (
|
764 |
gr.update(visible=(reward_type == "단일 상품")),
|
@@ -782,13 +717,34 @@ def create_interface():
|
|
782 |
else:
|
783 |
reward_structure = custom_reward
|
784 |
|
|
|
|
|
|
|
|
|
|
|
785 |
event_template = event_manager.generate_detailed_comment_event(
|
786 |
start_date, end_date, concept, reward_structure, kakao, phone
|
787 |
)
|
788 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
789 |
design_guide = event_manager.generate_design_advice(concept)
|
790 |
|
791 |
-
return
|
792 |
|
793 |
def toggle_api_inputs(instagram, analytics, chatgpt):
|
794 |
return (
|
@@ -814,7 +770,7 @@ def create_interface():
|
|
814 |
analyze_concept_btn.click(
|
815 |
handle_concept_analysis,
|
816 |
inputs=[concept_month],
|
817 |
-
outputs=[concept_result, selected_concept, concepts_state]
|
818 |
)
|
819 |
|
820 |
selected_concept.change(
|
@@ -823,6 +779,12 @@ def create_interface():
|
|
823 |
outputs=[event_concept_input]
|
824 |
)
|
825 |
|
|
|
|
|
|
|
|
|
|
|
|
|
826 |
reward_type_selector.change(
|
827 |
update_reward_ui,
|
828 |
inputs=[reward_type_selector],
|
|
|
184 |
|
185 |
concept_names.append(concept['name'])
|
186 |
|
187 |
+
return result, concept_names False) else ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
188 |
result += f"## {i}. {concept['name']}{is_recommended_mark}\n"
|
189 |
result += f"**🏷️ 테마:** {concept['theme']}\n"
|
190 |
result += f"**⭐ 참여도 점수:** {concept['score']}/10점\n"
|
|
|
684 |
return (
|
685 |
result,
|
686 |
gr.update(choices=concepts, visible=True, value=concepts[0] if concepts else ""),
|
687 |
+
gr.update(visible=True),
|
688 |
concepts
|
689 |
)
|
690 |
|
691 |
def handle_concept_selection(concept):
|
692 |
return gr.update(value=concept)
|
693 |
|
694 |
+
def handle_custom_concept_change(custom_concept):
|
695 |
+
return gr.update(value=custom_concept)
|
696 |
+
|
697 |
def update_reward_ui(reward_type):
|
698 |
return (
|
699 |
gr.update(visible=(reward_type == "단일 상품")),
|
|
|
717 |
else:
|
718 |
reward_structure = custom_reward
|
719 |
|
720 |
+
# 컨셉에 따른 트렌디한 카피 생성
|
721 |
+
month = concept_month.value if hasattr(concept_month, 'value') else "8월"
|
722 |
+
copy_data = concept_analyzer.generate_trendy_copy(concept, month)
|
723 |
+
|
724 |
+
# 기본 이벤트 템플릿 생성
|
725 |
event_template = event_manager.generate_detailed_comment_event(
|
726 |
start_date, end_date, concept, reward_structure, kakao, phone
|
727 |
)
|
728 |
|
729 |
+
# 트렌디한 카피를 템플릿 상단에 추가
|
730 |
+
trendy_intro = f"""{copy_data['sub1']}
|
731 |
+
|
732 |
+
💫 {copy_data['main']} 💫
|
733 |
+
|
734 |
+
{copy_data['sub2']}
|
735 |
+
|
736 |
+
{' '.join(copy_data['hashtags'])}
|
737 |
+
|
738 |
+
---
|
739 |
+
|
740 |
+
"""
|
741 |
+
|
742 |
+
final_template = trendy_intro + event_template
|
743 |
+
|
744 |
+
# 디자인 가이드 생성
|
745 |
design_guide = event_manager.generate_design_advice(concept)
|
746 |
|
747 |
+
return final_template, design_guide
|
748 |
|
749 |
def toggle_api_inputs(instagram, analytics, chatgpt):
|
750 |
return (
|
|
|
770 |
analyze_concept_btn.click(
|
771 |
handle_concept_analysis,
|
772 |
inputs=[concept_month],
|
773 |
+
outputs=[concept_result, selected_concept, custom_concept_input, concepts_state]
|
774 |
)
|
775 |
|
776 |
selected_concept.change(
|
|
|
779 |
outputs=[event_concept_input]
|
780 |
)
|
781 |
|
782 |
+
custom_concept_input.change(
|
783 |
+
handle_custom_concept_change,
|
784 |
+
inputs=[custom_concept_input],
|
785 |
+
outputs=[event_concept_input]
|
786 |
+
)
|
787 |
+
|
788 |
reward_type_selector.change(
|
789 |
update_reward_ui,
|
790 |
inputs=[reward_type_selector],
|