Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from PIL import Image | |
| from image_classifier import classify_food_with_pipeline | |
| from recipe_fetcher import fetch_recipe, display_recipes | |
| from nutrition_fetcher import fetch_nutrition | |
| from pdf_generator import generate_pdf | |
| def main(): | |
| st.title("Food Classifier and Recipe Finder") | |
| st.write("Choose an option to get food recipes and nutrition details.") | |
| # Option selection | |
| option = st.radio("Choose an option", ("Search Food Recipe", "Upload Image to Predict Food")) | |
| # Search Food Recipe Option | |
| if option == "Search Food Recipe": | |
| query = st.text_input("Enter a food name", "") | |
| if query: | |
| try: | |
| # Fetch and display recipes | |
| recipes = fetch_recipe(query) | |
| recipe_text = display_recipes(recipes) | |
| st.text_area("Recipe Details", recipe_text, height=300) | |
| # Fetch and display nutrition details | |
| st.write("### Nutrition Details") | |
| nutrition_df = fetch_nutrition(query) | |
| if nutrition_df is not None: | |
| st.dataframe(nutrition_df) | |
| else: | |
| st.write("No nutrition details found.") | |
| # Generate PDF | |
| if "No recipes found." not in recipe_text: | |
| pdf_file = generate_pdf(recipe_text, query) | |
| with open(pdf_file, "rb") as f: | |
| st.download_button("Download Recipe as PDF", f, file_name=pdf_file) | |
| except Exception as e: | |
| st.error(f"An error occurred while fetching data: {e}") | |
| # Upload Image Option | |
| elif option == "Upload Image to Predict Food": | |
| image_file = st.file_uploader("Upload an image", type=["jpg", "jpeg", "png"]) | |
| if image_file is not None: | |
| try: | |
| # Display and process image | |
| image = Image.open(image_file).convert("RGB") | |
| st.image(image, caption="Uploaded Image", use_container_width=True) # Updated parameter | |
| # Predict Food | |
| label = classify_food_with_pipeline(image) | |
| st.write(f"**Predicted Food**: {label}") | |
| # Fetch and display recipes | |
| recipes = fetch_recipe(label) | |
| recipe_text = display_recipes(recipes) | |
| st.text_area("Recipe Details", recipe_text, height=300) | |
| # Fetch and display nutrition details | |
| st.write("### Nutrition Details") | |
| nutrition_df = fetch_nutrition(label) | |
| if nutrition_df is not None: | |
| st.dataframe(nutrition_df) | |
| else: | |
| st.write("No nutrition details found.") | |
| # Generate PDF | |
| if "No recipes found." not in recipe_text: | |
| pdf_file = generate_pdf(recipe_text, label) | |
| with open(pdf_file, "rb") as f: | |
| st.download_button("Download Recipe as PDF", f, file_name=pdf_file) | |
| except Exception as e: | |
| st.error(f"An error occurred while processing the image: {e}") | |
| st.markdown("<br><br><h5 style='text-align: center;'>Developed by M.Nabeel</h5>", unsafe_allow_html=True) | |
| if __name__ == "__main__": | |
| main() | |