cust / app.py
Yaswanth56's picture
Update app.py
35209c8 verified
import gradio as gr
# Expanded recipe database with categories
recipes = [
{
"name": "Classic Frappuccino",
"description": "A refreshing blended coffee drink topped with whipped cream",
"ingredients": ["coffee", "milk", "ice cream", "sugar", "whipped cream"],
"image": "https://images.unsplash.com/photo-1461023058943-07fcbe16d735?auto=format&fit=crop&q=80&w=1000",
"category": "beverages"
},
{
"name": "Mocha Frappe",
"description": "Rich chocolate and coffee blend topped with chocolate drizzle",
"ingredients": ["coffee", "chocolate", "milk", "ice cream", "whipped cream"],
"image": "https://images.unsplash.com/photo-1572490122747-3968b75cc699?auto=format&fit=crop&q=80&w=1000",
"category": "beverages"
},
{
"name": "Cold Brew Coffee",
"description": "Smooth, less acidic cold coffee perfect for hot days",
"ingredients": ["coffee", "water", "ice"],
"image": "https://images.unsplash.com/photo-1461023058943-07fcbe16d735?auto=format&fit=crop&q=80&w=1000",
"category": "beverages"
},
{
"name": "Bellam Paysam",
"description": "A traditional sweet rice pudding made with jaggery",
"ingredients": ["rice", "milk", "jaggery", "cardamom", "cashews"],
"image": "https://images.unsplash.com/photo-1633383718081-22ac93e3db65?auto=format&fit=crop&q=80&w=1000",
"category": "desserts"
},
{
"name": "Rice Kheer",
"description": "Creamy rice pudding with cardamom and nuts",
"ingredients": ["rice", "milk", "sugar", "cardamom", "almonds", "raisins"],
"image": "https://images.unsplash.com/photo-1639461161574-c11f0d2cca49?auto=format&fit=crop&q=80&w=1000",
"category": "desserts"
},
{
"name": "Masala Dosa",
"description": "Crispy fermented crepe filled with spiced potatoes",
"ingredients": ["rice", "urad dal", "potatoes", "onions", "mustard seeds", "turmeric"],
"image": "https://images.unsplash.com/photo-1589301760014-d929f3979dbc?auto=format&fit=crop&q=80&w=1000",
"category": "main course"
},
{
"name": "Vegetable Biryani",
"description": "Aromatic rice dish with mixed vegetables and spices",
"ingredients": ["basmati rice", "mixed vegetables", "onions", "yogurt", "biryani masala", "saffron"],
"image": "https://images.unsplash.com/photo-1563379091339-03b21ab4a4f8?auto=format&fit=crop&q=80&w=1000",
"category": "main course"
}
]
# Function to find similar recipes based on user input
def find_similar_recipes(input_text):
ingredients = [i.strip().lower() for i in input_text.split('+')]
scored_recipes = []
for recipe in recipes:
matching_ingredients = [ri for ri in recipe['ingredients'] if any(i in ri.lower() for i in ingredients)]
score = len(matching_ingredients) / len(ingredients)
if score >= 0.3:
scored_recipes.append({**recipe, "matchScore": round(score * 100)})
scored_recipes.sort(key=lambda x: x["matchScore"], reverse=True)
return scored_recipes
# Function to format recipes into a message for display
def display_recipes(input_text):
similar_recipes = find_similar_recipes(input_text)
if similar_recipes:
result = "✨ Here are some recipes you might love based on your ingredients:\n"
result += "\n".join([f"{recipe['name']} ({recipe['matchScore']}% match)\n{recipe['description']}" for recipe in similar_recipes])
else:
result = "I couldn't find any recipes with those exact ingredients. Try some alternatives!"
return result
# Gradio interface setup
iface = gr.Interface(
fn=display_recipes,
inputs=gr.Textbox(label="Enter Ingredients (separated by '+')", placeholder="e.g., coffee + milk"),
outputs=gr.Textbox(label="Recipes"),
title="Recipe Assistant",
description="Enter ingredients you have, and I will suggest some recipes for you!"
)
if __name__ == "__main__":
iface.launch()