MoodMusic / app.py
Chris4K's picture
Update app.py
bad907d verified
import gradio as gr
from deepface import DeepFace
import random
# Sample playlists for different moods
playlists = {
"happy": ["Happy - Pharrell Williams", "Can't Stop the Feeling - Justin Timberlake", "Good Vibrations - The Beach Boys"],
"sad": ["Someone Like You - Adele", "Fix You - Coldplay", "Stay With Me - Sam Smith"],
"angry": ["Break Stuff - Limp Bizkit", "Killing In The Name - Rage Against The Machine", "Duality - Slipknot"],
"surprise": ["Surprise Yourself - Jack Garratt", "Suddenly I See - KT Tunstall", "Unexpected - Anna Clendening"],
"fear": ["Fear of the Dark - Iron Maiden", "Disturbia - Rihanna", "Creep - Radiohead"],
"disgust": ["Dirty Laundry - Don Henley", "Toxic - Britney Spears", "Bad Blood - Taylor Swift"],
"neutral": ["Let It Be - The Beatles", "Imagine - John Lennon", "Bohemian Rhapsody - Queen"]
}
def analyze_mood(image):
try:
analysis = DeepFace.analyze(image, actions=['emotion'], enforce_detection=False)
dominant_emotion = analysis[0]['dominant_emotion']
recommended_playlist = playlists.get(dominant_emotion, playlists["neutral"])
return f"Detected Mood: {dominant_emotion.capitalize()}\n\nRecommended Playlist:\n- " + "\n- ".join(random.sample(recommended_playlist, 3))
except Exception as e:
return f"An error occurred: {str(e)}"
iface = gr.Interface(
fn=analyze_mood,
inputs=gr.Image(type="filepath", label="Upload Your Selfie"),
outputs="text",
title="MoodMuse 🎵",
description="Upload a selfie, and MoodMuse will analyze your facial expression to recommend a playlist that matches your mood."
)
iface.launch()