File size: 2,658 Bytes
32ed852
 
542a039
 
68331a9
 
542a039
32ed852
 
 
 
 
 
1ba9158
 
 
 
32ed852
68331a9
4f66dbd
 
 
 
 
 
1ba9158
4f66dbd
 
 
 
 
 
 
 
 
 
 
68331a9
4f66dbd
 
 
 
68331a9
4f66dbd
 
 
 
 
1ba9158
4f66dbd
542a039
 
1ba9158
542a039
 
 
1ba9158
 
 
 
 
 
542a039
32ed852
542a039
 
1ba9158
 
542a039
 
 
 
1ba9158
 
542a039
 
1ba9158
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from transformers import pipeline
from PIL import Image
import gradio as gr
import os
import requests
import json

model_name = "larimei/food-classification-ai"

classifier = pipeline("image-classification", model=model_name)

def predict_image(image):
    predictions = classifier(image)
    meal_name = predictions[0]['label']
    recipe_text = getRecipe(meal_name)
    meal_info = f"This is {meal_name.replace('_', ' ')}."
    return meal_info, recipe_text

def getRecipe(meal):
    url = "https://gustar-io-deutsche-rezepte.p.rapidapi.com/generateRecipe"
    payload = { "text": meal.replace("_"," ")}
    headers = {
        "x-rapidapi-key": "f2703cb7b0msh6f8e7a071e404d7p1e3f67jsnb8855a98ffce",
        "x-rapidapi-host": "gustar-io-deutsche-rezepte.p.rapidapi.com",
        "Content-Type": "application/json"
    }
    response = requests.post(url, json=payload, headers=headers)

    data = response.json()

    # Zutatenliste formatieren
    ingredients_list = "Zutaten:\n"
    for ingredient in data['ingredients']:
        amount = ingredient.get('amount', '')
        unit = ingredient.get('unit', '')
        name = ingredient['name']
        ingredients_list += f"- {amount} {unit} {name}\n".strip() + '\n'

    # Zubereitungsschritte formatieren
    instructions_list = "\nZubereitung:\n"
    for step in data['instructions']:
        instructions_list += f"{step}\n"

    # Gesamtes Rezept formatieren
    formatted_recipe = f"{data['title']}\n"
    formatted_recipe += f"Portionen: {data['portions']}\n"
    formatted_recipe += f"Gesamtzeit: {data['totalTime'] // 60} Minuten\n\n"
    formatted_recipe += ingredients_list + instructions_list

    return formatted_recipe

title = "Recipifier"
description = "Discover the world of recipes effortlessly with Recipifier, using advanced AI trained on the extensive Food-101 dataset. Simply upload a photo of any dish, and our application identifies it accurately, providing detailed recipes and cooking instructions sourced from a vast collection. Perfect for food enthusiasts and home chefs alike, Recipifier makes exploring new culinary creations intuitive and inspiring. Start transforming everyday ingredients into extraordinary meals today!"

example_list = [["examples/" + example] for example in os.listdir("examples")]

css = """
#component-13 {
    display: none;
}
"""

demo = gr.Interface(
    fn=predict_image,
    inputs=gr.Image(type="pil"),
    outputs=[
        gr.Textbox(label="Meal", elem_id="meal"),
        gr.Textbox(label="Recipe") 
    ],
    examples=example_list,
    title=title,
    description=description,
    css=css,
    flagging_options=None  
)

demo.launch()