Spaces:
Sleeping
Sleeping
import streamlit as st | |
import os | |
# Set Page Configuration | |
st.set_page_config( | |
page_title="Emotion Prediction App", | |
page_icon="π", | |
layout="wide", | |
) | |
# Custom CSS for Background and Styling | |
def add_custom_styles(): | |
st.markdown(""" | |
<style> | |
/* Background Styling */ | |
.stApp { | |
background: linear-gradient(to right, #f2f7ff, #d9faff); | |
color: #333333; | |
font-family: Arial, sans-serif; | |
} | |
/* Header Styling */ | |
.main-title { | |
color: #1e88e5; | |
text-align: center; | |
font-size: 3rem; | |
margin-top: -20px; | |
margin-bottom: 30px; | |
font-weight: bold; | |
} | |
/* Section Headers */ | |
.section-header { | |
color: #0d47a1; | |
font-size: 1.8rem; | |
margin-top: 20px; | |
margin-bottom: 10px; | |
border-bottom: 2px solid #1e88e5; | |
} | |
/* Suggestions Styling */ | |
.suggestions { | |
font-size: 1.1rem; | |
line-height: 1.6; | |
} | |
/* Footer Styling */ | |
.footer { | |
text-align: center; | |
margin-top: 50px; | |
font-size: 0.9rem; | |
color: #555; | |
} | |
</style> | |
""", unsafe_allow_html=True) | |
add_custom_styles() | |
# Debugging Logger | |
def debug_log(message): | |
st.sidebar.text(f"DEBUG: {message}") | |
# Suggestion Database | |
suggestion_database = { | |
"sadness": { | |
"suggestions": ["Try guided meditation", "Take a walk in nature", "Connect with a friend"], | |
"articles": [ | |
{"title": "Overcoming Sadness", "url": "https://example.com/sadness1"}, | |
{"title": "Understanding Depression", "url": "https://example.com/sadness2"}, | |
], | |
"videos": [ | |
{"title": "Mindfulness for Sadness", "url": "https://www.youtube.com/watch?v=sadnessvideo1"}, | |
{"title": "Coping with Grief", "url": "https://www.youtube.com/watch?v=sadnessvideo2"}, | |
], | |
}, | |
"joy": { | |
"suggestions": ["Practice gratitude", "Engage in a hobby", "Spend time with loved ones"], | |
"articles": [ | |
{"title": "The Benefits of Joy", "url": "https://example.com/joy1"}, | |
{"title": "Maintaining Positive Emotions", "url": "https://example.com/joy2"}, | |
], | |
"videos": [ | |
{"title": "Boosting Your Happiness", "url": "https://www.youtube.com/watch?v=joyvideo1"}, | |
{"title": "Practicing Gratitude", "url": "https://www.youtube.com/watch?v=joyvideo2"}, | |
], | |
}, | |
"neutral": { | |
"suggestions": ["Take a break", "Engage in a relaxing activity", "Spend time in nature"], | |
"articles": [ | |
{"title": "Importance of Self-Care", "url": "https://example.com/selfcare1"}, | |
{"title": "Stress Management Techniques", "url": "https://example.com/stress1"}, | |
], | |
"videos": [ | |
{"title": "Relaxation Techniques", "url": "https://www.youtube.com/watch?v=relaxvideo1"}, | |
{"title": "Mindfulness Exercises", "url": "https://www.youtube.com/watch?v=mindfulnessvideo1"}, | |
], | |
}, | |
} | |
# Function to Fetch Relevant Suggestions | |
def get_relevant_resources(emotion): | |
return suggestion_database.get(emotion, suggestion_database["neutral"]) | |
# Placeholder for Model Loading | |
def load_emotion_model(model_path): | |
try: | |
if not os.path.exists(model_path): | |
raise FileNotFoundError(f"Model file not found at {model_path}") | |
debug_log("Model loaded successfully.") | |
return "Emotion Model Placeholder" | |
except Exception as e: | |
debug_log(str(e)) | |
return None | |
# Main Application Header | |
st.markdown('<div class="main-title">Emotion Prediction & Suggestions π</div>', unsafe_allow_html=True) | |
st.markdown(""" | |
This app is designed to help you discover activities, articles, and videos tailored to your emotional state. | |
Simply describe how you're feeling, and let us provide uplifting and insightful suggestions. | |
""") | |
# Sidebar for Model Path Input | |
st.sidebar.header("Emotion Model Configuration") | |
model_path = st.sidebar.text_input("Enter the Path to the Emotion Prediction Model", "path/to/model") | |
# Load Emotion Prediction Model | |
emotion_model = load_emotion_model(model_path) | |
if emotion_model is None: | |
st.sidebar.error("Model failed to load. Please check the path or contact support.") | |
# Emotion Analysis Section | |
st.markdown('<div class="section-header">How Are You Feeling Today?</div>', unsafe_allow_html=True) | |
user_response = st.text_input("Describe your current emotion (e.g., happy, sad, neutral):", "neutral") | |
# Display Suggestions | |
if user_response: | |
resources = get_relevant_resources(user_response.lower()) | |
st.markdown('<div class="section-header">Here Are Some Suggestions for You:</div>', unsafe_allow_html=True) | |
# Suggestions | |
st.markdown("#### Activities:") | |
st.markdown('<div class="suggestions">', unsafe_allow_html=True) | |
for suggestion in resources["suggestions"]: | |
st.write(f"- {suggestion}") | |
st.markdown('</div>', unsafe_allow_html=True) | |
# Articles | |
st.markdown("#### Articles:") | |
for article in resources["articles"]: | |
st.write(f"- [{article['title']}]({article['url']})") | |
# Videos | |
st.markdown("#### Videos:") | |
for video in resources["videos"]: | |
st.write(f"- [{video['title']}]({video['url']})") | |
# Footer | |
st.markdown('<div class="footer">Crafted with β€οΈ by Your Emotion App Team</div>', unsafe_allow_html=True) | |