Spaces:
Runtime error
Runtime error
Upload 11 files
Browse files- Dockerfile +18 -0
- app.py +186 -0
- data/Dishes Information and DV values V1.csv +251 -0
- data/Nutrition Ingredient Database- Version 1.csv +144 -0
- models/best_yolo_s.pt +3 -0
- models/best_yolo_x.pt +3 -0
- requirements.txt +9 -0
- static/css/styles.css +97 -0
- static/eathstartup.png +0 -0
- static/index.html +183 -0
- static/js/script.js +189 -0
Dockerfile
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Use an official Python runtime as a parent image
|
| 2 |
+
FROM python:3.10-slim
|
| 3 |
+
|
| 4 |
+
# Set the working directory in the container
|
| 5 |
+
WORKDIR /app
|
| 6 |
+
|
| 7 |
+
# Copy requirements and install them securely
|
| 8 |
+
COPY requirements.txt .
|
| 9 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
| 10 |
+
|
| 11 |
+
# Copy the rest of the workspace
|
| 12 |
+
COPY . .
|
| 13 |
+
|
| 14 |
+
# Expose port 7860 (Hugging Face default)
|
| 15 |
+
EXPOSE 7860
|
| 16 |
+
|
| 17 |
+
# Command to run the FastAPI server
|
| 18 |
+
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
|
app.py
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# ==============================================================================
|
| 2 |
+
# EATHVISION API SERVER (Production Version)
|
| 3 |
+
# Description: High-performance FastAPI server running native YOLO (.pt) models.
|
| 4 |
+
# Integrates dual USDA databases for macros and ingredients.
|
| 5 |
+
# ==============================================================================
|
| 6 |
+
|
| 7 |
+
import os
|
| 8 |
+
import io
|
| 9 |
+
import pandas as pd
|
| 10 |
+
from fastapi import FastAPI, File, UploadFile, Form, HTTPException
|
| 11 |
+
from fastapi.responses import JSONResponse, FileResponse
|
| 12 |
+
from fastapi.staticfiles import StaticFiles
|
| 13 |
+
from fastapi.middleware.cors import CORSMiddleware
|
| 14 |
+
from ultralytics import YOLO
|
| 15 |
+
from PIL import Image
|
| 16 |
+
import warnings
|
| 17 |
+
|
| 18 |
+
warnings.filterwarnings('ignore')
|
| 19 |
+
|
| 20 |
+
# --- 1. Server Configuration ---
|
| 21 |
+
app = FastAPI(
|
| 22 |
+
title="eath API",
|
| 23 |
+
description="Production endpoint for dish classification and advanced nutrition tracking.",
|
| 24 |
+
version="1.0.0"
|
| 25 |
+
)
|
| 26 |
+
|
| 27 |
+
# Enable CORS for external frontend requests if needed
|
| 28 |
+
app.add_middleware(
|
| 29 |
+
CORSMiddleware,
|
| 30 |
+
allow_origins=["*"],
|
| 31 |
+
allow_credentials=True,
|
| 32 |
+
allow_methods=["*"],
|
| 33 |
+
allow_headers=["*"],
|
| 34 |
+
)
|
| 35 |
+
|
| 36 |
+
# Mount the static directory to serve HTML, CSS, JS, and Images
|
| 37 |
+
app.mount("/static", StaticFiles(directory="static"), name="static")
|
| 38 |
+
|
| 39 |
+
# --- 2. Global Variables & Resource Loading ---
|
| 40 |
+
MODELS_DIR = "models"
|
| 41 |
+
DATA_DIR = "data"
|
| 42 |
+
|
| 43 |
+
# File paths for both databases
|
| 44 |
+
MACROS_CSV_PATH = os.path.join(DATA_DIR, "Dishes Information and DV values V1.csv")
|
| 45 |
+
INGREDIENTS_CSV_PATH = os.path.join(DATA_DIR, "Nutrition Ingredient Database- Version 1.csv")
|
| 46 |
+
|
| 47 |
+
loaded_models = {}
|
| 48 |
+
macros_db = None
|
| 49 |
+
ingredients_db = None
|
| 50 |
+
|
| 51 |
+
def load_resources():
|
| 52 |
+
"""
|
| 53 |
+
Loads YOLO .pt models into memory and parses both nutrition CSVs.
|
| 54 |
+
"""
|
| 55 |
+
global loaded_models, macros_db, ingredients_db
|
| 56 |
+
print("[INIT] Loading AI Models into memory...")
|
| 57 |
+
|
| 58 |
+
# Load YOLO-X (High Precision)
|
| 59 |
+
yolo_x_path = os.path.join(MODELS_DIR, "best_yolo_x.pt")
|
| 60 |
+
if os.path.exists(yolo_x_path):
|
| 61 |
+
loaded_models["yolo_x"] = YOLO(yolo_x_path, task="classify")
|
| 62 |
+
print(" -> YOLO-X Loaded Successfully.")
|
| 63 |
+
|
| 64 |
+
# Load YOLO-S (High Speed)
|
| 65 |
+
yolo_s_path = os.path.join(MODELS_DIR, "best_yolo_s.pt")
|
| 66 |
+
if os.path.exists(yolo_s_path):
|
| 67 |
+
loaded_models["yolo_s"] = YOLO(yolo_s_path, task="classify")
|
| 68 |
+
print(" -> YOLO-S Loaded Successfully.")
|
| 69 |
+
|
| 70 |
+
# Load Databases
|
| 71 |
+
print("[INIT] Loading Databases...")
|
| 72 |
+
try:
|
| 73 |
+
macros_db = pd.read_csv(MACROS_CSV_PATH)
|
| 74 |
+
macros_db.columns = macros_db.columns.str.strip()
|
| 75 |
+
print(f" -> Macros DB Loaded: {len(macros_db)} entries.")
|
| 76 |
+
except Exception as e:
|
| 77 |
+
print(f"[ERROR] Failed to load Macros CSV: {e}")
|
| 78 |
+
|
| 79 |
+
try:
|
| 80 |
+
ingredients_db = pd.read_csv(INGREDIENTS_CSV_PATH)
|
| 81 |
+
ingredients_db.columns = ingredients_db.columns.str.strip()
|
| 82 |
+
print(f" -> Ingredients DB Loaded: {len(ingredients_db)} entries.")
|
| 83 |
+
except Exception as e:
|
| 84 |
+
print(f"[ERROR] Failed to load Ingredients CSV: {e}")
|
| 85 |
+
|
| 86 |
+
# Initialize resources on startup
|
| 87 |
+
load_resources()
|
| 88 |
+
|
| 89 |
+
# --- 3. API Endpoints ---
|
| 90 |
+
|
| 91 |
+
@app.get("/")
|
| 92 |
+
async def serve_frontend():
|
| 93 |
+
"""Serves the main HTML interface from the root URL."""
|
| 94 |
+
return FileResponse("static/index.html")
|
| 95 |
+
|
| 96 |
+
@app.post("/api/predict")
|
| 97 |
+
async def predict_dish(
|
| 98 |
+
file: UploadFile = File(...),
|
| 99 |
+
model_type: str = Form("yolo_x"),
|
| 100 |
+
portion_g: int = Form(100)
|
| 101 |
+
):
|
| 102 |
+
"""
|
| 103 |
+
Core prediction endpoint.
|
| 104 |
+
Returns AI prediction, calculated macros, and ingredient list.
|
| 105 |
+
"""
|
| 106 |
+
if model_type not in loaded_models:
|
| 107 |
+
raise HTTPException(status_code=400, detail=f"Model '{model_type}' is currently unavailable.")
|
| 108 |
+
|
| 109 |
+
# Read and convert image
|
| 110 |
+
try:
|
| 111 |
+
image_bytes = await file.read()
|
| 112 |
+
image = Image.open(io.BytesIO(image_bytes)).convert("RGB")
|
| 113 |
+
except Exception:
|
| 114 |
+
raise HTTPException(status_code=400, detail="Invalid image file format.")
|
| 115 |
+
|
| 116 |
+
# 1. AI Inference
|
| 117 |
+
try:
|
| 118 |
+
model = loaded_models[model_type]
|
| 119 |
+
results = model(image, imgsz=320, verbose=False)
|
| 120 |
+
|
| 121 |
+
top1_idx = results[0].probs.top1
|
| 122 |
+
raw_class_name = results[0].names[top1_idx]
|
| 123 |
+
confidence = float(results[0].probs.top1conf)
|
| 124 |
+
|
| 125 |
+
formatted_dish_name = raw_class_name.replace('_', ' ').title()
|
| 126 |
+
except Exception as e:
|
| 127 |
+
raise HTTPException(status_code=500, detail=f"Inference failed: {str(e)}")
|
| 128 |
+
|
| 129 |
+
# 2. Extract Macros
|
| 130 |
+
nutrition_data = {"status": "not_found", "message": "Macros not found."}
|
| 131 |
+
if macros_db is not None:
|
| 132 |
+
# Assuming the column is 'FoodName' or similar. Adjust if your CSV differs.
|
| 133 |
+
# Using a flexible search to avoid exact match case issues
|
| 134 |
+
match = macros_db[macros_db.iloc[:, 0].astype(str).str.contains(formatted_dish_name, case=False, na=False)]
|
| 135 |
+
|
| 136 |
+
if not match.empty:
|
| 137 |
+
base_data = match.iloc[0]
|
| 138 |
+
multiplier = portion_g / 100.0
|
| 139 |
+
|
| 140 |
+
def safe_calc(col_name):
|
| 141 |
+
try:
|
| 142 |
+
# Fetch by exact name if exists, else return 0
|
| 143 |
+
if col_name in base_data:
|
| 144 |
+
val = float(base_data[col_name])
|
| 145 |
+
else:
|
| 146 |
+
val = 0.0
|
| 147 |
+
return round(val * multiplier, 1)
|
| 148 |
+
except:
|
| 149 |
+
return 0.0
|
| 150 |
+
|
| 151 |
+
nutrition_data = {
|
| 152 |
+
"status": "success",
|
| 153 |
+
"portion_g": portion_g,
|
| 154 |
+
"base_data": {
|
| 155 |
+
"energy_kcal": safe_calc("Energy_kcal"),
|
| 156 |
+
"protein_g": safe_calc("Protein_g"),
|
| 157 |
+
"fat_g": safe_calc("Fat_g"),
|
| 158 |
+
"carbs_g": safe_calc("Carbs_g")
|
| 159 |
+
}
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
# 3. Extract Ingredients
|
| 163 |
+
ingredients_list = []
|
| 164 |
+
if ingredients_db is not None:
|
| 165 |
+
# Assuming first column is the dish name and the second contains ingredients
|
| 166 |
+
ing_match = ingredients_db[ingredients_db.iloc[:, 0].astype(str).str.contains(formatted_dish_name, case=False, na=False)]
|
| 167 |
+
if not ing_match.empty:
|
| 168 |
+
# Convert the matched row's ingredient column to a string
|
| 169 |
+
raw_ingredients = str(ing_match.iloc[0, 1])
|
| 170 |
+
# Split by comma to create a clean list for the frontend
|
| 171 |
+
ingredients_list = [ing.strip() for ing in raw_ingredients.split(',') if ing.strip()]
|
| 172 |
+
|
| 173 |
+
# 4. Final Response Payload
|
| 174 |
+
return JSONResponse(content={
|
| 175 |
+
"ai_prediction": {
|
| 176 |
+
"model_used": model_type,
|
| 177 |
+
"dish_name": formatted_dish_name,
|
| 178 |
+
"confidence": round(confidence * 100, 2)
|
| 179 |
+
},
|
| 180 |
+
"nutrition_insights": nutrition_data,
|
| 181 |
+
"ingredients": ingredients_list
|
| 182 |
+
})
|
| 183 |
+
|
| 184 |
+
if __name__ == "__main__":
|
| 185 |
+
import uvicorn
|
| 186 |
+
uvicorn.run("app:app", host="0.0.0.0", port=8000, reload=True)
|
data/Dishes Information and DV values V1.csv
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FoodName,Basis,Energy_kcal,Protein_g,Fat_g,Fiber_g,Calcium_mg,Iron_mg,VitaminA_mcg,VitaminC_mg,VitaminD_mcg,DV_Energy_%,DV_Protein_%,DV_Fat_%,DV_Fiber_%,DV_Calcium_%,DV_Iron_%,DV_VitA_%,DV_VitC_%,DV_VitD_%,Cuisine,Food_Category
|
| 2 |
+
White Rice,Per 100g,505,33.7,33.0,9.6,227,8.6,320,91.2,7.95,25.2,67.4,42.3,34.3,17.5,47.8,35.6,101.3,39.8,Global,Rice Dish
|
| 3 |
+
Brown Rice,Per 100g,109,28.8,30.1,8.7,152,5.9,364,51.8,3.92,5.5,57.6,38.6,31.1,11.7,32.8,40.4,57.6,19.6,Global,Rice Dish
|
| 4 |
+
Basmati Rice,Per 100g,150,33.6,28.2,2.7,90,6.0,127,12.5,4.31,7.5,67.2,36.2,9.6,6.9,33.3,14.1,13.9,21.5,Global,Rice Dish
|
| 5 |
+
Jasmine Rice,Per 100g,245,8.1,2.3,11.0,74,1.2,202,21.9,7.57,12.2,16.2,2.9,39.3,5.7,6.7,22.4,24.3,37.9,Global,Rice Dish
|
| 6 |
+
Wild Rice,Per 100g,455,25.8,4.5,6.7,161,7.3,470,80.7,9.82,22.8,51.6,5.8,23.9,12.4,40.6,52.2,89.7,49.1,Global,Rice Dish
|
| 7 |
+
Quinoa,Per 100g,249,16.3,2.7,9.0,129,8.6,857,89.4,0.53,12.4,32.6,3.5,32.1,9.9,47.8,95.2,99.3,2.7,Global,Other
|
| 8 |
+
Bulgur,Per 100g,277,26.6,20.1,10.5,110,3.8,755,52.9,1.45,13.9,53.2,25.8,37.5,8.5,21.1,83.9,58.8,7.2,Global,Other
|
| 9 |
+
Couscous,Per 100g,516,19.3,39.5,2.3,39,9.8,353,72.9,5.08,25.8,38.6,50.6,8.2,3.0,54.4,39.2,81.0,25.4,Global,Other
|
| 10 |
+
Barley,Per 100g,442,19.7,30.6,5.6,224,6.3,704,13.7,7.04,22.1,39.4,39.2,20.0,17.2,35.0,78.2,15.2,35.2,Global,Other
|
| 11 |
+
Oats,Per 100g,58,32.9,16.2,10.0,214,3.7,689,22.3,6.68,2.9,65.8,20.8,35.7,16.5,20.6,76.6,24.8,33.4,Global,Other
|
| 12 |
+
Polenta,Per 100g,563,26.7,5.0,3.9,226,5.4,54,44.7,5.67,28.1,53.4,6.4,13.9,17.4,30.0,6.0,49.7,28.3,Global,Other
|
| 13 |
+
Millet,Per 100g,518,1.6,18.4,4.2,260,8.2,483,71.0,5.33,25.9,3.2,23.6,15.0,20.0,45.6,53.7,78.9,26.7,Global,Other
|
| 14 |
+
Sorghum,Per 100g,420,4.0,7.0,11.8,236,3.4,110,30.8,8.0,21.0,8.0,9.0,42.1,18.2,18.9,12.2,34.2,40.0,Global,Other
|
| 15 |
+
Buckwheat,Per 100g,240,33.0,14.7,13.6,290,8.2,233,89.9,2.82,12.0,66.0,18.8,48.6,22.3,45.6,25.9,99.9,14.1,Global,Other
|
| 16 |
+
Pasta,Per 100g,262,13.9,36.8,6.2,284,6.6,340,3.1,4.3,13.1,27.8,47.2,22.1,21.8,36.7,37.8,3.4,21.5,Western / European,Other
|
| 17 |
+
Whole Wheat Pasta,Per 100g,600,31.7,39.2,0.9,99,8.0,175,53.6,3.07,30.0,63.4,50.3,3.2,7.6,44.4,19.4,59.6,15.3,Western / European,Other
|
| 18 |
+
Lasagna,Per 100g,124,25.3,38.3,9.7,22,4.5,5,20.3,6.68,6.2,50.6,49.1,34.6,1.7,25.0,0.6,22.6,33.4,Western / European,Other
|
| 19 |
+
Risotto,Per 100g,322,4.9,37.0,11.8,26,3.7,618,54.5,0.28,16.1,9.8,47.4,42.1,2.0,20.6,68.7,60.6,1.4,Western / European,Rice Dish
|
| 20 |
+
Fried Rice,Per 100g,492,8.6,1.9,10.8,272,6.3,124,50.2,4.11,24.6,17.2,2.4,38.6,20.9,35.0,13.8,55.8,20.6,Global,Rice Dish
|
| 21 |
+
Vegetable Pulao,Per 100g,460,5.4,32.7,0.7,234,6.6,236,33.8,7.72,23.0,10.8,41.9,2.5,18.0,36.7,26.2,37.6,38.6,Global,Rice Dish
|
| 22 |
+
Chicken Biryani,Per 100g,424,28.8,24.9,14.9,292,5.3,222,30.5,1.86,21.2,57.6,31.9,53.2,22.5,29.4,24.7,33.9,9.3,Indian / South Asian,Rice Dish
|
| 23 |
+
Mutton Biryani,Per 100g,170,11.7,32.3,7.4,181,0.9,284,11.2,5.3,8.5,23.4,41.4,26.4,13.9,5.0,31.6,12.4,26.5,Indian / South Asian,Rice Dish
|
| 24 |
+
Khichdi,Per 100g,111,18.4,27.9,5.4,300,6.0,174,48.6,5.25,5.5,36.8,35.8,19.3,23.1,33.3,19.3,54.0,26.2,Indian / South Asian,Other
|
| 25 |
+
Upma,Per 100g,460,13.9,12.2,8.8,55,2.4,141,16.6,4.07,23.0,27.8,15.6,31.4,4.2,13.3,15.7,18.4,20.4,Indian / South Asian,Other
|
| 26 |
+
Poha,Per 100g,83,19.1,9.1,11.5,27,3.4,380,80.3,0.27,4.2,38.2,11.7,41.1,2.1,18.9,42.2,89.2,1.4,Indian / South Asian,Other
|
| 27 |
+
Idli,Per 100g,600,12.9,32.9,11.4,137,4.6,834,68.0,0.38,30.0,25.8,42.2,40.7,10.5,25.6,92.7,75.6,1.9,Indian / South Asian,Other
|
| 28 |
+
Dosa,Per 100g,352,12.1,12.1,2.5,87,1.6,129,89.5,3.18,17.6,24.2,15.5,8.9,6.7,8.9,14.3,99.4,15.9,Indian / South Asian,Other
|
| 29 |
+
Rava Dosa,Per 100g,169,10.0,1.8,9.9,41,5.4,718,78.1,3.44,8.5,20.0,2.3,35.4,3.2,30.0,79.8,86.8,17.2,Indian / South Asian,Other
|
| 30 |
+
Uttapam,Per 100g,145,21.1,21.3,14.9,142,0.6,893,88.8,3.28,7.2,42.2,27.3,53.2,10.9,3.3,99.2,98.7,16.4,Global,Other
|
| 31 |
+
Chapati,Per 100g,168,24.2,17.8,7.4,96,4.1,896,65.2,6.62,8.4,48.4,22.8,26.4,7.4,22.8,99.6,72.4,33.1,Global,Bread
|
| 32 |
+
Paratha,Per 100g,93,1.1,22.1,9.0,144,4.4,374,98.1,0.41,4.7,2.2,28.3,32.1,11.1,24.4,41.6,109.0,2.0,Indian / South Asian,Bread
|
| 33 |
+
Naan,Per 100g,122,11.8,39.1,8.5,99,4.7,384,14.0,1.74,6.1,23.6,50.1,30.4,7.6,26.1,42.7,15.6,8.7,Indian / South Asian,Bread
|
| 34 |
+
Pita Bread,Per 100g,439,5.0,34.3,6.1,164,8.9,172,75.6,4.04,21.9,10.0,44.0,21.8,12.6,49.4,19.1,84.0,20.2,Global,Bread
|
| 35 |
+
Arabic Bread,Per 100g,61,29.1,35.6,10.7,139,1.2,681,38.0,1.98,3.0,58.2,45.6,38.2,10.7,6.7,75.7,42.2,9.9,Global,Bread
|
| 36 |
+
Whole Wheat Bread,Per 100g,172,14.4,37.6,1.8,185,3.2,17,65.3,8.89,8.6,28.8,48.2,6.4,14.2,17.8,1.9,72.6,44.5,Global,Bread
|
| 37 |
+
White Bread,Per 100g,596,19.1,1.7,10.5,264,4.4,732,72.1,2.98,29.8,38.2,2.2,37.5,20.3,24.4,81.3,80.1,14.9,Global,Bread
|
| 38 |
+
Bagel,Per 100g,504,4.7,4.1,14.6,256,5.6,181,3.4,2.05,25.2,9.4,5.3,52.1,19.7,31.1,20.1,3.8,10.2,Western / European,Bread
|
| 39 |
+
Croissant,Per 100g,50,20.6,24.5,1.8,57,4.0,4,35.7,3.73,2.5,41.2,31.4,6.4,4.4,22.2,0.4,39.7,18.6,Western / European,Bread
|
| 40 |
+
Garlic Bread,Per 100g,525,25.6,12.8,14.5,252,8.9,664,86.0,1.58,26.2,51.2,16.4,51.8,19.4,49.4,73.8,95.6,7.9,Global,Bread
|
| 41 |
+
Pizza Margherita,Per 100g,151,29.4,25.1,5.7,221,7.4,222,73.6,1.19,7.5,58.8,32.2,20.4,17.0,41.1,24.7,81.8,5.9,Western / European,Other
|
| 42 |
+
Chicken Shawarma,Per 100g,317,6.6,32.0,9.3,72,2.2,786,29.6,5.32,15.8,13.2,41.0,33.2,5.5,12.2,87.3,32.9,26.6,Middle Eastern / Gulf,Meat
|
| 43 |
+
Shawarma Plate,Per 100g,98,26.8,29.2,9.0,152,1.3,547,9.0,9.78,4.9,53.6,37.4,32.1,11.7,7.2,60.8,10.0,48.9,Middle Eastern / Gulf,Other
|
| 44 |
+
Beef Shawarma,Per 100g,397,0.6,19.1,11.6,56,4.8,31,9.3,9.74,19.9,1.2,24.5,41.4,4.3,26.7,3.4,10.3,48.7,Middle Eastern / Gulf,Meat
|
| 45 |
+
Falafel,Per 100g,300,32.8,31.4,9.0,290,4.4,229,28.1,4.31,15.0,65.6,40.3,32.1,22.3,24.4,25.4,31.2,21.5,Global,Other
|
| 46 |
+
Hummus,Per 100g,597,10.4,31.6,3.5,170,4.4,174,7.2,0.78,29.8,20.8,40.5,12.5,13.1,24.4,19.3,8.0,3.9,Global,Other
|
| 47 |
+
Baba Ganoush,Per 100g,46,14.6,7.6,13.2,161,0.3,111,84.6,2.5,2.3,29.2,9.7,47.1,12.4,1.7,12.3,94.0,12.5,Global,Other
|
| 48 |
+
Mutabbal,Per 100g,190,27.6,27.3,11.3,28,5.1,659,21.6,6.92,9.5,55.2,35.0,40.4,2.2,28.3,73.2,24.0,34.6,Global,Other
|
| 49 |
+
Tabbouleh,Per 100g,116,33.8,37.1,2.9,146,3.4,483,12.6,2.1,5.8,67.6,47.6,10.4,11.2,18.9,53.7,14.0,10.5,Middle Eastern / Gulf,Other
|
| 50 |
+
Fattoush,Per 100g,400,11.9,7.1,9.8,199,0.9,887,89.2,5.11,20.0,23.8,9.1,35.0,15.3,5.0,98.6,99.1,25.6,Middle Eastern / Gulf,Other
|
| 51 |
+
Kibbeh,Per 100g,299,26.1,0.5,8.9,129,2.6,687,24.2,0.35,14.9,52.2,0.6,31.8,9.9,14.4,76.3,26.9,1.7,Middle Eastern / Gulf,Other
|
| 52 |
+
Kibbeh Nayeh,Per 100g,310,7.6,31.3,1.4,295,0.6,120,95.1,5.82,15.5,15.2,40.1,5.0,22.7,3.3,13.3,105.7,29.1,Middle Eastern / Gulf,Other
|
| 53 |
+
Manakish Zaatar,Per 100g,321,27.7,25.4,0.5,90,4.2,894,33.6,7.63,16.1,55.4,32.6,1.8,6.9,23.3,99.3,37.3,38.1,Middle Eastern / Gulf,Bread
|
| 54 |
+
Manakish Cheese,Per 100g,376,2.8,17.8,12.0,64,7.8,239,87.6,6.72,18.8,5.6,22.8,42.9,4.9,43.3,26.6,97.3,33.6,Middle Eastern / Gulf,Bread
|
| 55 |
+
Cheese Sambousek,Per 100g,74,1.4,12.1,2.0,154,7.2,123,48.9,3.79,3.7,2.8,15.5,7.1,11.8,40.0,13.7,54.3,18.9,Middle Eastern / Gulf,Dairy
|
| 56 |
+
Meat Sambousek,Per 100g,296,3.0,4.5,12.6,280,4.6,800,97.5,6.73,14.8,6.0,5.8,45.0,21.5,25.6,88.9,108.3,33.7,Middle Eastern / Gulf,Other
|
| 57 |
+
Warak Enab,Per 100g,323,7.3,29.3,13.8,119,8.4,219,19.7,8.96,16.2,14.6,37.6,49.3,9.2,46.7,24.3,21.9,44.8,Global,Other
|
| 58 |
+
Mahshi,Per 100g,74,10.8,10.9,7.5,132,7.9,731,60.9,2.98,3.7,21.6,14.0,26.8,10.2,43.9,81.2,67.7,14.9,Global,Other
|
| 59 |
+
Molokhia,Per 100g,556,21.9,5.4,0.3,115,1.5,496,76.0,2.7,27.8,43.8,6.9,1.1,8.8,8.3,55.1,84.4,13.5,Global,Other
|
| 60 |
+
Chicken Machboos,Per 100g,573,29.6,34.3,10.7,38,7.3,242,1.3,1.76,28.6,59.2,44.0,38.2,2.9,40.6,26.9,1.4,8.8,Middle Eastern / Gulf,Rice Dish
|
| 61 |
+
Lamb Machboos,Per 100g,388,16.3,7.4,5.7,59,2.6,215,45.8,8.81,19.4,32.6,9.5,20.4,4.5,14.4,23.9,50.9,44.0,Middle Eastern / Gulf,Rice Dish
|
| 62 |
+
Kabsa,Per 100g,499,23.6,20.2,9.6,105,5.0,356,37.8,1.29,24.9,47.2,25.9,34.3,8.1,27.8,39.6,42.0,6.5,Middle Eastern / Gulf,Rice Dish
|
| 63 |
+
Mandi,Per 100g,588,10.3,7.5,10.0,248,2.5,579,11.4,0.43,29.4,20.6,9.6,35.7,19.1,13.9,64.3,12.7,2.1,Middle Eastern / Gulf,Rice Dish
|
| 64 |
+
Harees,Per 100g,490,1.3,28.9,7.1,212,7.1,487,72.6,5.76,24.5,2.6,37.1,25.4,16.3,39.4,54.1,80.7,28.8,Middle Eastern / Gulf,Other
|
| 65 |
+
Jareesh,Per 100g,328,29.1,6.7,8.5,121,5.2,667,73.3,5.47,16.4,58.2,8.6,30.4,9.3,28.9,74.1,81.4,27.3,Middle Eastern / Gulf,Other
|
| 66 |
+
Thareed,Per 100g,249,8.5,25.7,8.2,300,7.3,680,24.4,9.7,12.4,17.0,32.9,29.3,23.1,40.6,75.6,27.1,48.5,Middle Eastern / Gulf,Other
|
| 67 |
+
Luqaimat,Per 100g,241,30.3,27.1,0.4,263,5.9,779,62.7,9.91,12.0,60.6,34.7,1.4,20.2,32.8,86.6,69.7,49.5,Middle Eastern / Gulf,Other
|
| 68 |
+
Umm Ali,Per 100g,104,8.8,36.8,1.6,30,0.3,181,76.3,9.12,5.2,17.6,47.2,5.7,2.3,1.7,20.1,84.8,45.6,Global,Other
|
| 69 |
+
Basbousa,Per 100g,48,20.9,22.5,10.0,171,2.8,170,49.7,3.51,2.4,41.8,28.8,35.7,13.2,15.6,18.9,55.2,17.5,Global,Dessert
|
| 70 |
+
Kunafa,Per 100g,85,33.0,17.3,12.1,241,0.9,467,28.7,7.27,4.2,66.0,22.2,43.2,18.5,5.0,51.9,31.9,36.4,Middle Eastern / Gulf,Dessert
|
| 71 |
+
Baklava,Per 100g,441,7.4,36.6,11.9,284,5.4,188,25.4,7.01,22.1,14.8,46.9,42.5,21.8,30.0,20.9,28.2,35.0,Middle Eastern / Gulf,Dessert
|
| 72 |
+
Date Maamoul,Per 100g,157,26.8,24.2,4.2,205,8.9,667,16.3,2.59,7.8,53.6,31.0,15.0,15.8,49.4,74.1,18.1,13.0,Global,Other
|
| 73 |
+
Date Syrup,Per 100g,70,0.7,15.2,8.3,29,7.3,276,92.2,2.79,3.5,1.4,19.5,29.6,2.2,40.6,30.7,102.4,14.0,Global,Other
|
| 74 |
+
Arabic Coffee,Per 100g,511,31.9,7.9,5.8,188,8.5,600,50.1,5.8,25.6,63.8,10.1,20.7,14.5,47.2,66.7,55.7,29.0,Global,Beverage
|
| 75 |
+
Karak Tea,Per 100g,597,27.8,36.9,0.4,126,5.1,673,16.7,8.05,29.8,55.6,47.3,1.4,9.7,28.3,74.8,18.6,40.2,Global,Beverage
|
| 76 |
+
Labneh,Per 100g,152,33.4,7.7,14.5,15,6.8,822,74.8,8.36,7.6,66.8,9.9,51.8,1.2,37.8,91.3,83.1,41.8,Middle Eastern / Gulf,Dairy
|
| 77 |
+
Halloumi,Per 100g,564,34.6,20.4,14.3,159,7.9,522,95.3,7.93,28.2,69.2,26.2,51.1,12.2,43.9,58.0,105.9,39.6,Middle Eastern / Gulf,Dairy
|
| 78 |
+
Shish Tawook,Per 100g,357,16.8,26.9,10.5,284,3.4,521,2.3,8.7,17.8,33.6,34.5,37.5,21.8,18.9,57.9,2.6,43.5,Global,Other
|
| 79 |
+
Kofta Kebab,Per 100g,569,19.1,26.3,9.5,155,2.1,686,76.0,0.2,28.4,38.2,33.7,33.9,11.9,11.7,76.2,84.4,1.0,Global,Meat
|
| 80 |
+
Lamb Kebab,Per 100g,522,9.1,2.0,3.7,12,0.9,780,41.4,5.9,26.1,18.2,2.6,13.2,0.9,5.0,86.7,46.0,29.5,Global,Meat
|
| 81 |
+
Grilled Hammour,Per 100g,42,33.8,11.4,11.4,251,6.6,221,5.0,4.25,2.1,67.6,14.6,40.7,19.3,36.7,24.6,5.6,21.2,Middle Eastern / Gulf,Seafood
|
| 82 |
+
Sayadiyah,Per 100g,332,24.0,22.8,8.7,75,7.7,133,79.8,0.06,16.6,48.0,29.2,31.1,5.8,42.8,14.8,88.7,0.3,Middle Eastern / Gulf,Other
|
| 83 |
+
Balaleet,Per 100g,115,11.0,32.0,2.4,62,3.8,49,11.1,4.1,5.8,22.0,41.0,8.6,4.8,21.1,5.4,12.3,20.5,Middle Eastern / Gulf,Other
|
| 84 |
+
Saloona,Per 100g,259,14.8,6.0,12.9,12,2.4,658,35.7,4.87,13.0,29.6,7.7,46.1,0.9,13.3,73.1,39.7,24.3,Middle Eastern / Gulf,Other
|
| 85 |
+
Freekeh,Per 100g,243,25.7,24.2,1.2,197,8.1,431,66.1,9.96,12.2,51.4,31.0,4.3,15.2,45.0,47.9,73.4,49.8,Middle Eastern / Gulf,Rice Dish
|
| 86 |
+
Foul Medames,Per 100g,212,21.9,8.1,1.4,252,3.8,755,17.1,5.83,10.6,43.8,10.4,5.0,19.4,21.1,83.9,19.0,29.1,Middle Eastern / Gulf,Other
|
| 87 |
+
Adas Soup,Per 100g,411,27.9,15.7,8.6,234,6.9,352,72.2,8.98,20.5,55.8,20.1,30.7,18.0,38.3,39.1,80.2,44.9,Middle Eastern / Gulf,Other
|
| 88 |
+
Lentil Soup,Per 100g,244,25.4,4.2,3.2,221,2.6,347,78.6,8.7,12.2,50.8,5.4,11.4,17.0,14.4,38.6,87.3,43.5,Global,Other
|
| 89 |
+
Turkish Doner,Per 100g,33,6.6,3.1,7.1,43,3.8,44,95.5,3.71,1.7,13.2,4.0,25.4,3.3,21.1,4.9,106.1,18.6,Global,Other
|
| 90 |
+
Pide,Per 100g,22,4.9,36.0,13.3,253,5.8,784,89.8,7.38,1.1,9.8,46.2,47.5,19.5,32.2,87.1,99.8,36.9,Global,Bread
|
| 91 |
+
Lahmacun,Per 100g,342,27.4,13.6,13.3,256,8.4,118,54.4,9.08,17.1,54.8,17.4,47.5,19.7,46.7,13.1,60.4,45.4,Global,Bread
|
| 92 |
+
Grilled Chicken,Per 100g,52,23.0,13.4,8.7,245,9.3,583,94.7,7.47,2.6,46.0,17.2,31.1,18.8,51.7,64.8,105.2,37.4,Global,Meat
|
| 93 |
+
Fried Chicken,Per 100g,339,21.6,7.1,3.0,289,8.6,697,15.2,2.65,17.0,43.2,9.1,10.7,22.2,47.8,77.4,16.9,13.2,Global,Meat
|
| 94 |
+
Chicken Nuggets,Per 100g,502,11.5,22.9,5.8,214,8.7,428,13.0,5.61,25.1,23.0,29.4,20.7,16.5,48.3,47.6,14.4,28.1,Global,Meat
|
| 95 |
+
Beef Steak,Per 100g,336,16.9,38.4,6.0,269,4.6,385,32.4,2.63,16.8,33.8,49.2,21.4,20.7,25.6,42.8,36.0,13.2,Global,Meat
|
| 96 |
+
Ribeye Steak,Per 100g,302,25.9,2.2,2.4,185,2.9,192,48.3,1.77,15.1,51.8,2.8,8.6,14.2,16.1,21.3,53.7,8.8,Global,Meat
|
| 97 |
+
Lamb Chop,Per 100g,156,33.2,18.7,3.7,257,2.4,776,87.9,3.85,7.8,66.4,24.0,13.2,19.8,13.3,86.2,97.7,19.2,Global,Meat
|
| 98 |
+
Salmon,Per 100g,339,27.6,37.4,8.2,10,8.8,562,15.6,8.45,17.0,55.2,47.9,29.3,0.8,48.9,62.4,17.3,42.2,Global,Seafood
|
| 99 |
+
Tuna,Per 100g,169,3.7,0.0,6.4,155,2.5,579,11.5,1.47,8.5,7.4,0.0,22.9,11.9,13.9,64.3,12.8,7.3,Global,Seafood
|
| 100 |
+
Sardines,Per 100g,499,29.8,35.9,5.2,158,8.7,858,50.5,3.18,24.9,59.6,46.0,18.6,12.2,48.3,95.3,56.1,15.9,Global,Seafood
|
| 101 |
+
Shrimp,Per 100g,112,15.4,31.9,3.6,53,6.7,118,26.2,1.41,5.6,30.8,40.9,12.9,4.1,37.2,13.1,29.1,7.0,Global,Seafood
|
| 102 |
+
Crab,Per 100g,439,12.3,38.3,13.5,149,0.5,721,50.7,3.62,21.9,24.6,49.1,48.2,11.5,2.8,80.1,56.3,18.1,Global,Seafood
|
| 103 |
+
Lobster,Per 100g,562,33.7,3.9,6.1,182,2.8,302,68.9,3.79,28.1,67.4,5.0,21.8,14.0,15.6,33.6,76.6,18.9,Global,Seafood
|
| 104 |
+
Boiled Egg,Per 100g,224,29.1,35.7,10.5,64,7.1,144,85.1,7.17,11.2,58.2,45.8,37.5,4.9,39.4,16.0,94.6,35.9,Global,Other
|
| 105 |
+
Omelette,Per 100g,217,29.0,9.0,2.5,95,5.9,64,35.4,1.35,10.8,58.0,11.5,8.9,7.3,32.8,7.1,39.3,6.8,Global,Other
|
| 106 |
+
Paneer,Per 100g,350,27.4,29.5,0.7,246,0.5,166,6.9,7.88,17.5,54.8,37.8,2.5,18.9,2.8,18.4,7.7,39.4,Indian / South Asian,Other
|
| 107 |
+
Tofu,Per 100g,141,18.5,2.1,11.5,110,7.9,372,28.2,9.69,7.0,37.0,2.7,41.1,8.5,43.9,41.3,31.3,48.4,Global,Other
|
| 108 |
+
Tempeh,Per 100g,337,8.1,10.1,7.2,52,9.7,195,65.0,8.1,16.9,16.2,12.9,25.7,4.0,53.9,21.7,72.2,40.5,Global,Other
|
| 109 |
+
Seitan,Per 100g,99,10.7,25.6,8.8,259,4.6,464,76.8,2.86,5.0,21.4,32.8,31.4,19.9,25.6,51.6,85.3,14.3,Global,Other
|
| 110 |
+
Chickpeas,Per 100g,43,7.4,15.8,12.2,109,6.0,234,52.7,8.99,2.1,14.8,20.3,43.6,8.4,33.3,26.0,58.6,45.0,Global,Legume
|
| 111 |
+
Kidney Beans,Per 100g,370,7.7,16.1,0.5,42,3.9,862,42.3,1.96,18.5,15.4,20.6,1.8,3.2,21.7,95.8,47.0,9.8,Global,Legume
|
| 112 |
+
Black Beans,Per 100g,465,1.5,32.4,3.1,111,3.3,352,10.2,0.0,23.2,3.0,41.5,11.1,8.5,18.3,39.1,11.3,0.0,Global,Legume
|
| 113 |
+
Pinto Beans,Per 100g,307,24.5,6.0,7.4,16,2.4,733,81.7,3.52,15.3,49.0,7.7,26.4,1.2,13.3,81.4,90.8,17.6,Global,Legume
|
| 114 |
+
Lentils,Per 100g,234,5.1,10.4,1.1,287,3.8,888,5.8,5.52,11.7,10.2,13.3,3.9,22.1,21.1,98.7,6.4,27.6,Global,Legume
|
| 115 |
+
Edamame,Per 100g,109,25.9,24.2,6.0,175,5.9,157,27.0,9.49,5.5,51.8,31.0,21.4,13.5,32.8,17.4,30.0,47.5,Global,Legume
|
| 116 |
+
Protein Shake,Per 100g,228,14.3,15.4,14.6,194,2.0,691,54.8,1.54,11.4,28.6,19.7,52.1,14.9,11.1,76.8,60.9,7.7,Global,Other
|
| 117 |
+
Whey Protein,Per 100g,27,23.7,13.8,2.2,152,4.9,411,68.9,8.76,1.4,47.4,17.7,7.9,11.7,27.2,45.7,76.6,43.8,Global,Other
|
| 118 |
+
Greek Yogurt,Per 100g,47,1.7,12.3,1.9,202,0.5,546,62.4,9.31,2.4,3.4,15.8,6.8,15.5,2.8,60.7,69.3,46.6,Global,Dairy
|
| 119 |
+
Cottage Cheese,Per 100g,459,26.0,17.7,2.4,19,6.0,321,3.8,3.33,22.9,52.0,22.7,8.6,1.5,33.3,35.7,4.2,16.7,Global,Dairy
|
| 120 |
+
Turkey Breast,Per 100g,226,22.0,18.7,12.6,168,10.0,541,91.7,3.65,11.3,44.0,24.0,45.0,12.9,55.6,60.1,101.9,18.2,Global,Other
|
| 121 |
+
Duck,Per 100g,454,9.8,30.2,3.6,292,6.7,829,95.6,8.52,22.7,19.6,38.7,12.9,22.5,37.2,92.1,106.2,42.6,Global,Other
|
| 122 |
+
Sausage,Per 100g,123,0.5,20.9,8.8,44,1.4,397,62.8,2.26,6.2,1.0,26.8,31.4,3.4,7.8,44.1,69.8,11.3,Global,Other
|
| 123 |
+
Hot Dog,Per 100g,436,18.2,8.9,3.9,72,9.4,812,85.0,6.11,21.8,36.4,11.4,13.9,5.5,52.2,90.2,94.4,30.6,Global,Other
|
| 124 |
+
Pepperoni,Per 100g,469,13.2,36.2,7.9,203,4.4,32,73.7,0.29,23.4,26.4,46.4,28.2,15.6,24.4,3.6,81.9,1.4,Global,Other
|
| 125 |
+
Meatballs,Per 100g,334,3.1,35.8,10.4,208,7.6,694,56.3,6.04,16.7,6.2,45.9,37.1,16.0,42.2,77.1,62.6,30.2,Global,Other
|
| 126 |
+
Beef Burger Patty,Per 100g,203,26.4,30.5,2.7,292,6.8,70,19.9,0.91,10.2,52.8,39.1,9.6,22.5,37.8,7.8,22.1,4.5,Global,Meat
|
| 127 |
+
Chicken Burger Patty,Per 100g,424,13.7,21.4,3.9,186,3.2,281,1.5,7.23,21.2,27.4,27.4,13.9,14.3,17.8,31.2,1.7,36.2,Global,Meat
|
| 128 |
+
Fish Fillet,Per 100g,596,34.2,5.6,8.8,281,2.8,213,44.2,5.96,29.8,68.4,7.2,31.4,21.6,15.6,23.7,49.1,29.8,Global,Other
|
| 129 |
+
Chicken Tikka,Per 100g,482,30.9,35.6,10.5,131,1.5,192,27.7,7.77,24.1,61.8,45.6,37.5,10.1,8.3,21.3,30.8,38.8,Indian / South Asian,Meat
|
| 130 |
+
Butter Chicken,Per 100g,516,21.3,26.5,7.0,16,3.4,475,16.1,0.23,25.8,42.6,34.0,25.0,1.2,18.9,52.8,17.9,1.1,Global,Meat
|
| 131 |
+
Paneer Butter Masala,Per 100g,122,23.4,34.7,10.5,180,5.5,853,6.3,3.72,6.1,46.8,44.5,37.5,13.8,30.6,94.8,7.0,18.6,Indian / South Asian,Dairy
|
| 132 |
+
Dal Makhani,Per 100g,486,21.2,38.2,7.2,59,7.2,405,20.6,7.03,24.3,42.4,49.0,25.7,4.5,40.0,45.0,22.9,35.2,Indian / South Asian,Legume
|
| 133 |
+
Rajma,Per 100g,542,7.0,14.8,14.2,15,3.5,234,51.7,8.54,27.1,14.0,19.0,50.7,1.2,19.4,26.0,57.4,42.7,Indian / South Asian,Legume
|
| 134 |
+
Chole,Per 100g,296,10.4,12.5,9.4,39,4.6,67,94.7,5.8,14.8,20.8,16.0,33.6,3.0,25.6,7.4,105.2,29.0,Indian / South Asian,Legume
|
| 135 |
+
Egg Curry,Per 100g,282,11.8,24.8,14.6,148,2.2,462,60.7,4.86,14.1,23.6,31.8,52.1,11.4,12.2,51.3,67.4,24.3,Global,Meat
|
| 136 |
+
Chicken Korma,Per 100g,95,2.4,21.6,3.7,62,2.9,40,4.5,0.15,4.8,4.8,27.7,13.2,4.8,16.1,4.4,5.0,0.8,Indian / South Asian,Meat
|
| 137 |
+
Beef Curry,Per 100g,474,4.9,29.4,5.6,144,6.9,301,87.5,9.8,23.7,9.8,37.7,20.0,11.1,38.3,33.4,97.2,49.0,Global,Meat
|
| 138 |
+
Nihari,Per 100g,425,16.8,6.2,5.9,125,3.6,37,18.8,0.8,21.2,33.6,7.9,21.1,9.6,20.0,4.1,20.9,4.0,Indian / South Asian,Meat
|
| 139 |
+
Haleem,Per 100g,90,23.5,24.5,0.3,55,7.6,554,10.2,8.78,4.5,47.0,31.4,1.1,4.2,42.2,61.6,11.3,43.9,Indian / South Asian,Meat
|
| 140 |
+
Seekh Kebab,Per 100g,344,15.7,33.7,12.1,149,9.3,767,26.4,2.92,17.2,31.4,43.2,43.2,11.5,51.7,85.2,29.3,14.6,Global,Meat
|
| 141 |
+
Shami Kebab,Per 100g,409,5.9,29.7,14.3,225,1.9,817,25.4,9.1,20.4,11.8,38.1,51.1,17.3,10.6,90.8,28.2,45.5,Global,Meat
|
| 142 |
+
Broccoli,Per 100g,580,17.2,23.7,4.6,61,5.3,526,92.4,7.76,29.0,34.4,30.4,16.4,4.7,29.4,58.4,102.7,38.8,Global,Vegetable
|
| 143 |
+
Carrot,Per 100g,259,11.5,36.4,10.5,84,0.2,805,52.2,0.27,13.0,23.0,46.7,37.5,6.5,1.1,89.4,58.0,1.4,Global,Vegetable
|
| 144 |
+
Spinach,Per 100g,350,4.4,26.9,0.8,37,6.3,616,8.8,0.2,17.5,8.8,34.5,2.9,2.8,35.0,68.4,9.8,1.0,Global,Vegetable
|
| 145 |
+
Kale,Per 100g,413,10.5,28.7,5.3,133,6.7,597,67.5,6.85,20.6,21.0,36.8,18.9,10.2,37.2,66.3,75.0,34.2,Global,Vegetable
|
| 146 |
+
Zucchini,Per 100g,193,18.5,14.2,7.0,242,4.1,382,3.2,3.69,9.7,37.0,18.2,25.0,18.6,22.8,42.4,3.6,18.4,Global,Vegetable
|
| 147 |
+
Eggplant,Per 100g,47,26.8,13.1,2.6,161,2.6,685,58.3,4.81,2.4,53.6,16.8,9.3,12.4,14.4,76.1,64.8,24.1,Global,Vegetable
|
| 148 |
+
Okra,Per 100g,143,22.1,7.9,10.7,55,9.9,463,75.0,8.9,7.1,44.2,10.1,38.2,4.2,55.0,51.4,83.3,44.5,Global,Vegetable
|
| 149 |
+
Cabbage,Per 100g,453,33.6,12.1,5.0,234,8.7,224,25.3,6.75,22.7,67.2,15.5,17.9,18.0,48.3,24.9,28.1,33.8,Global,Vegetable
|
| 150 |
+
Cauliflower,Per 100g,375,29.4,17.8,0.6,271,5.9,567,13.0,7.92,18.8,58.8,22.8,2.1,20.8,32.8,63.0,14.4,39.6,Global,Vegetable
|
| 151 |
+
Bell Pepper,Per 100g,359,28.8,24.5,1.1,162,5.5,247,2.6,2.7,17.9,57.6,31.4,3.9,12.5,30.6,27.4,2.9,13.5,Global,Vegetable
|
| 152 |
+
Cucumber,Per 100g,162,26.9,20.5,5.9,187,6.5,314,2.2,0.33,8.1,53.8,26.3,21.1,14.4,36.1,34.9,2.4,1.7,Global,Vegetable
|
| 153 |
+
Tomato,Per 100g,328,12.0,29.5,8.2,53,8.8,867,63.8,2.34,16.4,24.0,37.8,29.3,4.1,48.9,96.3,70.9,11.7,Global,Vegetable
|
| 154 |
+
Corn,Per 100g,80,25.5,11.2,13.5,243,5.3,201,80.0,7.06,4.0,51.0,14.4,48.2,18.7,29.4,22.3,88.9,35.3,Global,Vegetable
|
| 155 |
+
Sweet Potato,Per 100g,384,14.0,13.7,3.5,135,8.9,18,24.8,7.02,19.2,28.0,17.6,12.5,10.4,49.4,2.0,27.6,35.1,Global,Vegetable
|
| 156 |
+
Potato,Per 100g,45,13.0,31.8,3.5,64,6.2,360,28.8,3.7,2.2,26.0,40.8,12.5,4.9,34.4,40.0,32.0,18.5,Global,Vegetable
|
| 157 |
+
Avocado,Per 100g,340,15.6,8.5,10.7,223,9.9,631,67.9,4.28,17.0,31.2,10.9,38.2,17.2,55.0,70.1,75.4,21.4,Global,Other
|
| 158 |
+
Pumpkin,Per 100g,244,14.4,7.5,10.4,9,2.1,650,43.0,5.33,12.2,28.8,9.6,37.1,0.7,11.7,72.2,47.8,26.7,Global,Vegetable
|
| 159 |
+
Beetroot,Per 100g,104,28.1,26.6,9.6,15,3.6,269,92.3,5.32,5.2,56.2,34.1,34.3,1.2,20.0,29.9,102.6,26.6,Global,Vegetable
|
| 160 |
+
Green Beans,Per 100g,102,32.3,13.8,12.6,26,8.2,623,65.9,7.19,5.1,64.6,17.7,45.0,2.0,45.6,69.2,73.2,36.0,Global,Legume
|
| 161 |
+
Peas,Per 100g,64,18.2,15.1,9.7,128,9.2,516,69.6,6.26,3.2,36.4,19.4,34.6,9.8,51.1,57.3,77.3,31.3,Global,Vegetable
|
| 162 |
+
Apple,Per 100g,41,13.1,37.2,5.9,193,9.1,98,41.2,3.1,2.1,26.2,47.7,21.1,14.8,50.6,10.9,45.8,15.5,Global,Fruit
|
| 163 |
+
Banana,Per 100g,528,33.9,31.4,13.3,173,4.0,785,86.7,4.55,26.4,67.8,40.3,47.5,13.3,22.2,87.2,96.3,22.7,Global,Fruit
|
| 164 |
+
Mango,Per 100g,98,34.2,22.7,3.0,262,4.8,49,35.6,5.35,4.9,68.4,29.1,10.7,20.2,26.7,5.4,39.6,26.7,Global,Fruit
|
| 165 |
+
Pineapple,Per 100g,562,19.6,23.5,6.1,18,7.1,603,25.0,1.77,28.1,39.2,30.1,21.8,1.4,39.4,67.0,27.8,8.8,Global,Fruit
|
| 166 |
+
Orange,Per 100g,81,28.6,29.9,13.4,277,7.7,197,26.0,8.97,4.0,57.2,38.3,47.9,21.3,42.8,21.9,28.9,44.9,Global,Fruit
|
| 167 |
+
Grapes,Per 100g,512,4.1,10.7,7.0,105,1.2,516,71.8,6.53,25.6,8.2,13.7,25.0,8.1,6.7,57.3,79.8,32.6,Global,Fruit
|
| 168 |
+
Watermelon,Per 100g,73,6.2,24.3,2.9,67,8.9,464,28.8,8.83,3.6,12.4,31.2,10.4,5.2,49.4,51.6,32.0,44.1,Global,Fruit
|
| 169 |
+
Papaya,Per 100g,513,0.0,30.2,13.1,128,5.7,883,75.3,1.17,25.7,0.0,38.7,46.8,9.8,31.7,98.1,83.7,5.8,Global,Fruit
|
| 170 |
+
Kiwi,Per 100g,130,6.8,27.6,13.0,250,5.4,527,20.2,6.16,6.5,13.6,35.4,46.4,19.2,30.0,58.6,22.4,30.8,Global,Fruit
|
| 171 |
+
Pomegranate,Per 100g,355,21.4,2.8,9.0,169,7.7,522,20.3,6.17,17.8,42.8,3.6,32.1,13.0,42.8,58.0,22.6,30.9,Global,Fruit
|
| 172 |
+
Dates,Per 100g,133,2.6,13.5,3.3,290,3.8,894,2.6,8.28,6.7,5.2,17.3,11.8,22.3,21.1,99.3,2.9,41.4,Global,Fruit
|
| 173 |
+
Fig,Per 100g,258,28.4,3.4,11.9,158,3.9,524,68.5,8.03,12.9,56.8,4.4,42.5,12.2,21.7,58.2,76.1,40.1,Global,Fruit
|
| 174 |
+
Pear,Per 100g,559,16.9,23.9,6.4,99,8.7,623,62.2,7.85,28.0,33.8,30.6,22.9,7.6,48.3,69.2,69.1,39.2,Global,Fruit
|
| 175 |
+
Peach,Per 100g,529,12.2,13.5,4.6,269,7.4,435,53.6,2.03,26.5,24.4,17.3,16.4,20.7,41.1,48.3,59.6,10.1,Global,Fruit
|
| 176 |
+
Plum,Per 100g,383,15.0,10.7,12.4,19,4.8,416,28.7,1.03,19.1,30.0,13.7,44.3,1.5,26.7,46.2,31.9,5.2,Global,Fruit
|
| 177 |
+
Blueberries,Per 100g,66,23.0,2.5,12.5,274,2.2,723,74.6,6.52,3.3,46.0,3.2,44.6,21.1,12.2,80.3,82.9,32.6,Global,Fruit
|
| 178 |
+
Strawberries,Per 100g,112,22.4,8.0,14.5,16,2.1,643,11.9,6.08,5.6,44.8,10.3,51.8,1.2,11.7,71.4,13.2,30.4,Global,Fruit
|
| 179 |
+
Raspberries,Per 100g,477,21.5,19.2,5.5,180,1.2,529,81.0,7.52,23.8,43.0,24.6,19.6,13.8,6.7,58.8,90.0,37.6,Global,Fruit
|
| 180 |
+
Coconut,Per 100g,63,34.8,29.8,13.7,199,9.4,178,67.3,5.6,3.1,69.6,38.2,48.9,15.3,52.2,19.8,74.8,28.0,Global,Fruit
|
| 181 |
+
Guava,Per 100g,444,1.6,1.2,0.3,274,4.1,4,52.5,7.66,22.2,3.2,1.5,1.1,21.1,22.8,0.4,58.3,38.3,Global,Fruit
|
| 182 |
+
Lychee,Per 100g,346,33.1,19.5,6.0,151,9.4,77,25.9,3.0,17.3,66.2,25.0,21.4,11.6,52.2,8.6,28.8,15.0,Global,Fruit
|
| 183 |
+
Passion Fruit,Per 100g,223,29.5,6.7,5.1,300,4.1,580,29.6,9.09,11.2,59.0,8.6,18.2,23.1,22.8,64.4,32.9,45.5,Global,Fruit
|
| 184 |
+
Apricot,Per 100g,112,17.8,24.4,14.6,170,4.4,726,13.2,1.6,5.6,35.6,31.3,52.1,13.1,24.4,80.7,14.7,8.0,Global,Fruit
|
| 185 |
+
Dragon Fruit,Per 100g,516,17.3,11.7,4.2,283,2.5,588,57.0,3.69,25.8,34.6,15.0,15.0,21.8,13.9,65.3,63.3,18.4,Global,Fruit
|
| 186 |
+
Mulberries,Per 100g,149,28.7,12.7,8.2,244,6.2,793,24.9,7.96,7.4,57.4,16.3,29.3,18.8,34.4,88.1,27.7,39.8,Global,Fruit
|
| 187 |
+
Custard Apple,Per 100g,164,6.9,2.0,4.1,63,9.2,167,13.7,3.52,8.2,13.8,2.6,14.6,4.8,51.1,18.6,15.2,17.6,Global,Fruit
|
| 188 |
+
Jackfruit,Per 100g,404,29.1,26.3,7.0,83,0.2,470,93.7,3.46,20.2,58.2,33.7,25.0,6.4,1.1,52.2,104.1,17.3,Global,Fruit
|
| 189 |
+
Sapodilla,Per 100g,276,32.6,0.7,3.6,238,5.0,673,70.5,4.73,13.8,65.2,0.9,12.9,18.3,27.8,74.8,78.3,23.7,Global,Fruit
|
| 190 |
+
Olives,Per 100g,234,5.0,7.9,4.5,61,2.7,47,50.1,9.98,11.7,10.0,10.1,16.1,4.7,15.0,5.2,55.7,49.9,Global,Fruit
|
| 191 |
+
Pickles,Per 100g,50,28.5,22.2,8.2,160,2.0,585,3.5,2.45,2.5,57.0,28.5,29.3,12.3,11.1,65.0,3.9,12.3,Global,Other
|
| 192 |
+
French Fries,Per 100g,418,25.0,25.0,12.2,224,5.4,396,85.9,9.56,20.9,50.0,32.1,43.6,17.2,30.0,44.0,95.4,47.8,Global,Other
|
| 193 |
+
Potato Chips,Per 100g,274,1.4,26.5,13.4,272,2.6,24,39.4,3.3,13.7,2.8,34.0,47.9,20.9,14.4,2.7,43.8,16.5,Global,Other
|
| 194 |
+
Nachos,Per 100g,342,21.5,21.4,5.4,15,3.1,558,20.9,0.75,17.1,43.0,27.4,19.3,1.2,17.2,62.0,23.2,3.8,Global,Other
|
| 195 |
+
Popcorn,Per 100g,254,34.5,10.6,14.4,187,9.5,523,1.0,1.89,12.7,69.0,13.6,51.4,14.4,52.8,58.1,1.1,9.4,Global,Other
|
| 196 |
+
Samosa,Per 100g,448,12.9,27.6,5.1,174,7.1,501,60.5,4.94,22.4,25.8,35.4,18.2,13.4,39.4,55.7,67.2,24.7,Indian / South Asian,Other
|
| 197 |
+
Spring Roll,Per 100g,284,10.0,35.7,12.6,90,0.8,197,41.2,6.34,14.2,20.0,45.8,45.0,6.9,4.4,21.9,45.8,31.7,Global,Other
|
| 198 |
+
Pakora,Per 100g,548,3.7,27.9,8.4,187,6.7,138,91.1,9.94,27.4,7.4,35.8,30.0,14.4,37.2,15.3,101.2,49.7,Indian / South Asian,Other
|
| 199 |
+
Vada,Per 100g,504,26.4,10.2,8.6,223,4.3,732,87.2,9.14,25.2,52.8,13.1,30.7,17.2,23.9,81.3,96.9,45.7,Indian / South Asian,Other
|
| 200 |
+
Chocolate Cake,Per 100g,416,24.7,26.9,11.5,268,8.4,666,10.1,7.21,20.8,49.4,34.5,41.1,20.6,46.7,74.0,11.2,36.0,Global,Dessert
|
| 201 |
+
Brownie,Per 100g,473,34.5,5.0,4.9,61,7.7,140,6.6,4.38,23.6,69.0,6.4,17.5,4.7,42.8,15.6,7.3,21.9,Global,Dessert
|
| 202 |
+
Cookies,Per 100g,110,20.0,20.1,10.8,69,6.1,810,63.8,9.46,5.5,40.0,25.8,38.6,5.3,33.9,90.0,70.9,47.3,Global,Dessert
|
| 203 |
+
Donut,Per 100g,300,26.5,35.0,12.5,264,1.0,49,55.7,8.5,15.0,53.0,44.9,44.6,20.3,5.6,5.4,61.9,42.5,Global,Dessert
|
| 204 |
+
Ice Cream,Per 100g,350,0.4,26.3,8.4,116,5.0,266,35.0,6.85,17.5,0.8,33.7,30.0,8.9,27.8,29.6,38.9,34.2,Global,Dessert
|
| 205 |
+
Kulfi,Per 100g,326,15.5,17.5,11.6,123,6.0,563,37.0,6.63,16.3,31.0,22.4,41.4,9.5,33.3,62.6,41.1,33.1,Indian / South Asian,Other
|
| 206 |
+
Cheesecake,Per 100g,249,22.1,2.5,12.5,174,4.3,811,13.1,8.56,12.4,44.2,3.2,44.6,13.4,23.9,90.1,14.6,42.8,Western / European,Dairy
|
| 207 |
+
Tiramisu,Per 100g,315,7.0,34.0,8.9,220,3.9,234,1.1,3.22,15.8,14.0,43.6,31.8,16.9,21.7,26.0,1.2,16.1,Western / European,Other
|
| 208 |
+
Milk Chocolate,Per 100g,397,16.9,6.7,9.5,33,6.1,226,45.4,7.8,19.9,33.8,8.6,33.9,2.5,33.9,25.1,50.4,39.0,Global,Dairy
|
| 209 |
+
Dark Chocolate,Per 100g,312,25.6,12.1,3.7,118,4.0,821,4.5,7.71,15.6,51.2,15.5,13.2,9.1,22.2,91.2,5.0,38.6,Global,Dessert
|
| 210 |
+
White Chocolate,Per 100g,504,22.8,13.4,1.3,238,9.2,599,12.1,8.39,25.2,45.6,17.2,4.6,18.3,51.1,66.6,13.4,42.0,Global,Dessert
|
| 211 |
+
Granola Bar,Per 100g,501,6.1,23.9,4.0,160,9.8,167,68.5,2.08,25.1,12.2,30.6,14.3,12.3,54.4,18.6,76.1,10.4,Global,Other
|
| 212 |
+
Energy Bar,Per 100g,368,31.0,13.9,7.9,249,4.5,497,56.5,5.12,18.4,62.0,17.8,28.2,19.2,25.0,55.2,62.8,25.6,Global,Other
|
| 213 |
+
Protein Bar,Per 100g,234,9.8,9.3,11.8,214,1.1,158,55.2,9.99,11.7,19.6,11.9,42.1,16.5,6.1,17.6,61.3,50.0,Global,Other
|
| 214 |
+
Cola,Per 100g,97,7.2,4.5,6.1,104,2.5,765,70.6,7.87,4.9,14.4,5.8,21.8,8.0,13.9,85.0,78.4,39.4,Global,Beverage
|
| 215 |
+
Diet Cola,Per 100g,264,29.2,29.2,9.6,159,7.0,547,95.5,6.65,13.2,58.4,37.4,34.3,12.2,38.9,60.8,106.1,33.2,Global,Beverage
|
| 216 |
+
Orange Juice,Per 100g,286,2.4,24.6,1.6,143,5.9,187,56.3,6.52,14.3,4.8,31.5,5.7,11.0,32.8,20.8,62.6,32.6,Global,Beverage
|
| 217 |
+
Apple Juice,Per 100g,205,7.2,19.8,6.8,262,6.5,467,49.7,2.16,10.2,14.4,25.4,24.3,20.2,36.1,51.9,55.2,10.8,Global,Beverage
|
| 218 |
+
Smoothie,Per 100g,452,22.1,35.4,1.8,297,7.8,562,70.4,5.71,22.6,44.2,45.4,6.4,22.8,43.3,62.4,78.2,28.5,Global,Beverage
|
| 219 |
+
Milkshake,Per 100g,149,21.4,8.9,11.9,26,8.2,535,4.6,3.63,7.4,42.8,11.4,42.5,2.0,45.6,59.4,5.1,18.1,Global,Dairy
|
| 220 |
+
Coffee Latte,Per 100g,134,8.0,35.5,8.2,123,7.3,253,38.3,0.0,6.7,16.0,45.5,29.3,9.5,40.6,28.1,42.6,0.0,Global,Beverage
|
| 221 |
+
Cappuccino,Per 100g,51,5.4,20.9,13.8,283,3.3,419,18.8,3.42,2.5,10.8,26.8,49.3,21.8,18.3,46.6,20.9,17.1,Global,Other
|
| 222 |
+
Green Tea,Per 100g,462,24.8,35.3,14.9,193,8.7,767,85.4,2.73,23.1,49.6,45.3,53.2,14.8,48.3,85.2,94.9,13.7,Global,Beverage
|
| 223 |
+
Iced Tea,Per 100g,481,34.7,26.3,1.7,43,6.9,408,65.1,0.25,24.1,69.4,33.7,6.1,3.3,38.3,45.3,72.3,1.2,Global,Beverage
|
| 224 |
+
Energy Drink,Per 100g,175,27.2,9.8,6.2,244,1.7,362,81.5,1.78,8.8,54.4,12.6,22.1,18.8,9.4,40.2,90.6,8.9,Global,Beverage
|
| 225 |
+
Sports Drink,Per 100g,248,31.1,5.9,10.2,28,0.8,252,84.2,1.02,12.4,62.2,7.6,36.4,2.2,4.4,28.0,93.6,5.1,Global,Beverage
|
| 226 |
+
Almond Milk,Per 100g,112,13.0,15.0,4.5,271,2.1,427,61.5,7.36,5.6,26.0,19.2,16.1,20.8,11.7,47.4,68.3,36.8,Global,Dairy
|
| 227 |
+
Soy Milk,Per 100g,231,8.7,33.7,6.0,205,0.2,11,47.7,1.92,11.6,17.4,43.2,21.4,15.8,1.1,1.2,53.0,9.6,Global,Dairy
|
| 228 |
+
Oat Milk,Per 100g,358,15.9,23.0,10.9,276,4.9,665,35.4,2.15,17.9,31.8,29.5,38.9,21.2,27.2,73.9,39.3,10.8,Global,Dairy
|
| 229 |
+
Butter,Per 100g,195,32.2,26.7,1.5,219,7.2,457,83.9,3.01,9.8,64.4,34.2,5.4,16.8,40.0,50.8,93.2,15.0,Global,Dairy
|
| 230 |
+
Ghee,Per 100g,224,32.0,27.8,1.9,224,1.3,560,79.9,7.77,11.2,64.0,35.6,6.8,17.2,7.2,62.2,88.8,38.8,Global,Dairy
|
| 231 |
+
Olive Oil,Per 100g,557,15.1,13.3,10.4,25,9.1,736,60.9,3.14,27.9,30.2,17.1,37.1,1.9,50.6,81.8,67.7,15.7,Global,Ingredient
|
| 232 |
+
Coconut Oil,Per 100g,392,3.0,37.2,10.5,123,4.5,329,29.4,2.85,19.6,6.0,47.7,37.5,9.5,25.0,36.6,32.7,14.3,Global,Ingredient
|
| 233 |
+
Mayonnaise,Per 100g,134,4.1,11.1,9.8,28,6.5,181,83.1,1.34,6.7,8.2,14.2,35.0,2.2,36.1,20.1,92.3,6.7,Global,Ingredient
|
| 234 |
+
Ketchup,Per 100g,224,17.7,21.7,11.9,37,9.1,865,1.5,3.14,11.2,35.4,27.8,42.5,2.8,50.6,96.1,1.7,15.7,Global,Ingredient
|
| 235 |
+
Mustard,Per 100g,20,32.9,39.3,11.2,252,7.9,185,57.6,8.3,1.0,65.8,50.4,40.0,19.4,43.9,20.6,64.0,41.5,Global,Ingredient
|
| 236 |
+
Vinegar,Per 100g,395,10.5,0.9,7.9,134,4.6,364,36.1,7.78,19.8,21.0,1.2,28.2,10.3,25.6,40.4,40.1,38.9,Global,Ingredient
|
| 237 |
+
Cornstarch,Per 100g,574,14.7,15.1,2.9,96,1.9,199,17.9,1.12,28.7,29.4,19.4,10.4,7.4,10.6,22.1,19.9,5.6,Global,Ingredient
|
| 238 |
+
Maltodextrin,Per 100g,500,5.1,11.3,13.0,48,1.6,825,74.7,7.65,25.0,10.2,14.5,46.4,3.7,8.9,91.7,83.0,38.2,Global,Ingredient
|
| 239 |
+
Dextrin,Per 100g,95,26.8,9.0,7.5,163,2.6,449,84.4,5.79,4.8,53.6,11.5,26.8,12.5,14.4,49.9,93.8,28.9,Global,Ingredient
|
| 240 |
+
Honey,Per 100g,36,9.3,8.4,9.3,238,7.5,660,43.2,2.71,1.8,18.6,10.8,33.2,18.3,41.7,73.3,48.0,13.6,Global,Ingredient
|
| 241 |
+
Maple Syrup,Per 100g,567,21.7,14.2,8.8,40,5.9,700,21.6,1.98,28.3,43.4,18.2,31.4,3.1,32.8,77.8,24.0,9.9,Global,Ingredient
|
| 242 |
+
Caesar Salad,Per 100g,508,1.4,31.4,6.6,74,9.8,809,45.6,7.04,25.4,2.8,40.3,23.6,5.7,54.4,89.9,50.7,35.2,Western / European,Other
|
| 243 |
+
Greek Salad,Per 100g,186,2.1,11.3,7.5,289,2.6,434,25.8,9.35,9.3,4.2,14.5,26.8,22.2,14.4,48.2,28.7,46.8,Western / European,Other
|
| 244 |
+
Tom Yum Soup,Per 100g,522,2.6,28.6,5.7,68,3.9,383,93.3,8.33,26.1,5.2,36.7,20.4,5.2,21.7,42.6,103.7,41.6,Asian,Other
|
| 245 |
+
Miso Soup,Per 100g,480,28.7,10.2,14.6,62,3.1,164,99.4,7.73,24.0,57.4,13.1,52.1,4.8,17.2,18.2,110.4,38.6,Asian,Other
|
| 246 |
+
Sushi Roll,Per 100g,432,21.6,12.9,8.4,262,6.6,422,46.7,9.09,21.6,43.2,16.5,30.0,20.2,36.7,46.9,51.9,45.5,Asian,Other
|
| 247 |
+
Ramen,Per 100g,399,2.6,22.7,14.1,76,3.3,648,60.0,6.96,20.0,5.2,29.1,50.4,5.8,18.3,72.0,66.7,34.8,Asian,Other
|
| 248 |
+
Pad Thai,Per 100g,230,35.0,35.1,14.6,249,1.2,454,21.6,4.0,11.5,70.0,45.0,52.1,19.2,6.7,50.4,24.0,20.0,Asian,Other
|
| 249 |
+
Kimchi,Per 100g,290,31.1,0.0,4.4,234,0.1,128,28.2,5.67,14.5,62.2,0.0,15.7,18.0,0.6,14.2,31.3,28.3,Asian,Vegetable
|
| 250 |
+
Tacos,Per 100g,144,3.3,36.2,4.1,30,4.1,502,6.6,0.98,7.2,6.6,46.4,14.6,2.3,22.8,55.8,7.3,4.9,Western / European,Other
|
| 251 |
+
Burrito,Per 100g,516,31.5,38.0,13.7,287,7.1,673,50.3,8.49,25.8,63.0,48.7,48.9,22.1,39.4,74.8,55.9,42.4,Western / European,Other
|
data/Nutrition Ingredient Database- Version 1.csv
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Category,Ingredient,Energy (kcal),Protein (g),Carbs (g),Fat (g),Fiber (g),Calcium (mg),Iron (mg),VitA (µg),VitC (mg),VitD (µg),Standard Reference,Protein (%DV),Total Fat (%DV),Carbohydrates (%DV),Fiber (%DV),Calcium (%DV),Iron (%DV),Vitamin D (%DV),Vitamin C (%DV),Vitamin A (%DV),Fat (%DV),Carbs (%DV),VitD (%DV),VitC (%DV),VitA (%DV)
|
| 2 |
+
Beverages,Black Tea (Brewed),1,0,0.3,0,0,0,0.02,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 3 |
+
Beverages,Coffee (Brewed Black),1,0.1,0,0,0,2,0.01,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 4 |
+
Beverages,Green Tea (Brewed),1,0,0,0,0,0,0.02,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 5 |
+
Beverages,Hibiscus Tea (Brewed),1,0,0,0,0,8,0.1,0,0,0,USDA Ingredient Data,0,0,0,0,1,1,0,0,0,0,0,0,0,0
|
| 6 |
+
Beverages,Lemon Juice (Raw),22,0.4,6.9,0.2,0.3,6,0.1,1,38.7,0,USDA Ingredient Data,1,0,0,1,0,1,0,0,0,0,3,0,43,0
|
| 7 |
+
Beverages,Matcha (Powder),324,30,38,6,38,420,17,2900,60,0,USDA Ingredient Data,60,0,0,136,32,94,0,0,0,8,14,0,67,322
|
| 8 |
+
Cheese,Cream Cheese,342,6,4,34,0,98,0.1,308,0,0.5,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 9 |
+
Cheese,Parmesan,431,38,4.1,29,0,1184,0.8,265,0,0.5,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 10 |
+
Confectionery,Chocolate (Dark 70%),600,7,46,43,11,56,11,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 11 |
+
Confectionery,Chocolate (Milk),535,7.5,59,30,3,189,2.4,50,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 12 |
+
Confectionery,Chocolate (White),539,6,59,32,0,199,0.2,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 13 |
+
Dairy,Camel Milk (Powder),50,3,5,3,0,120,0.2,50,0,0,USDA Ingredient Data,6,4,2,0,9,1,0,0,6,0,0,0,0,0
|
| 14 |
+
Dairy,Condensed Milk (Sweetened),321,8,54,8.7,0,284,0.2,207,3,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 15 |
+
Dairy,Cream (Heavy),340,2.1,3,36,0,66,0.1,411,0,0.5,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 16 |
+
Dairy,Greek Yogurt (Plain),97,9,3.6,5,0,110,0.1,20,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 17 |
+
Dairy,Milk (Low Fat 1%),42,3.4,5,1,0,125,0.03,68,0,1.3,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 18 |
+
Dairy,Milk (Powder),60,3.2,5,3.3,0,120,0.03,46,0,1.3,USDA Ingredient Data,6,4,2,0,9,0,6,0,5,0,0,0,0,0
|
| 19 |
+
Dairy,Milk (Skimmed),34,3.4,5,0.1,0,125,0.03,68,0,1.3,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 20 |
+
Dairy,Milk (Whole),61,3.2,5,3.3,0,113,0.03,46,0,1.3,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 21 |
+
Dairy,Yogurt (Low Fat),50,4,6,1.5,0,150,0.1,40,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 22 |
+
Dairy,Yogurt (Whole),61,3.5,4.7,3.3,0,121,0.05,27,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 23 |
+
Fish & Seafood,Hamour (Cooked),110,23,0,1.5,0,15,0.7,20,0,1.5,USDA Ingredient Data,46,2,0,0,1,4,8,0,2,0,0,0,0,0
|
| 24 |
+
Fish & Seafood,Hamour (Grilled),110,23,0,1.5,0,15,0.7,20,0,1.5,USDA Ingredient Data,46,2,0,0,1,4,8,0,2,0,0,0,0,0
|
| 25 |
+
Fish & Seafood,Mackerel (Grilled),205,19,0,14,0,12,1.6,50,0,13,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 26 |
+
Fish & Seafood,Salmon (Cooked),208,20,0,13,0,9,0.3,40,0,10.9,USDA Ingredient Data,40,17,0,0,1,2,55,0,4,0,0,0,0,0
|
| 27 |
+
Fish & Seafood,Salmon (Grilled),208,20,0,13,0,9,0.3,40,0,10.9,USDA Ingredient Data,40,17,0,0,1,2,55,0,4,0,0,0,0,0
|
| 28 |
+
Fish & Seafood,Sardines (Cooked),208,25,0,11,0,382,2.9,32,0,4.8,USDA Ingredient Data,50,14,0,0,29,16,24,0,4,0,0,0,0,0
|
| 29 |
+
Fish & Seafood,Sardines (Grilled),208,25,0,11,0,382,2.9,32,0,4.8,USDA Ingredient Data,50,14,0,0,29,16,24,0,4,0,0,0,0,0
|
| 30 |
+
Fish & Seafood,Shrimp (Cooked),99,24,0,0.3,0,70,0.5,54,0,1.1,USDA Ingredient Data,48,0,0,0,5,3,6,0,6,0,0,0,0,0
|
| 31 |
+
Fish & Seafood,Shrimp (Grilled),99,24,0,0.3,0,70,0.5,54,0,1.1,USDA Ingredient Data,48,0,0,0,5,3,6,0,6,0,0,0,0,0
|
| 32 |
+
Fish & Seafood,Tilapia (Cooked),129,26,0,2.7,0,10,0.6,0,0,3,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 33 |
+
Fish & Seafood,Tuna (Cooked),132,28,0,1,0,10,1.3,0,0,2.5,USDA Ingredient Data,56,1,0,0,1,7,12,0,0,0,0,0,0,0
|
| 34 |
+
Fish & Seafood,Tuna (Grilled),132,28,0,1,0,10,1.3,0,0,2.5,USDA Ingredient Data,56,1,0,0,1,7,12,0,0,0,0,0,0,0
|
| 35 |
+
Fruits,Apple (Dried),52,0.3,14,0.2,2.4,6,0.1,3,4.6,0,USDA Ingredient Data,1,0,5,9,0,1,0,5,0,0,0,0,0,0
|
| 36 |
+
Fruits,Apple Puree,68,0.2,17,0.1,1.2,5,0.1,3,4,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 37 |
+
Fruits,Banana (Dried),89,1.1,23,0.3,2.6,5,0.3,3,8.7,0,USDA Ingredient Data,2,0,8,9,0,2,0,10,0,0,0,0,0,0
|
| 38 |
+
Fruits,Blueberries,57,0.7,14,0.3,2.4,6,0.3,3,9.7,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 39 |
+
Fruits,Dates (Dried),277,2,75,0.2,7,64,0.9,7,0,0,USDA Ingredient Data,4,0,27,25,5,5,0,0,1,0,0,0,0,0
|
| 40 |
+
Fruits,Grapes (Raw),69,0.7,18,0.2,0.9,10,0.4,3,10.8,0,USDA Ingredient Data,1,0,7,3,1,2,0,12,0,0,0,0,0,0
|
| 41 |
+
Fruits,Kiwi (Raw),61,1.1,15,0.5,3,34,0.3,4,92.7,0,USDA Ingredient Data,2,1,5,11,3,2,0,103,0,0,0,0,0,0
|
| 42 |
+
Fruits,Mango (Raw),60,0.8,15,0.4,1.6,11,0.2,54,36.4,0,USDA Ingredient Data,2,1,5,6,1,1,0,40,6,0,0,0,0,0
|
| 43 |
+
Fruits,Mango Puree,60,0.5,15,0.2,1.6,11,0.2,54,36,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 44 |
+
Fruits,Orange (Dried),47,0.9,12,0.1,2.4,40,0.1,11,53,0,USDA Ingredient Data,2,0,4,9,3,1,0,59,1,0,0,0,0,0
|
| 45 |
+
Fruits,Orange Concentrate,130,2,30,0.2,0.5,70,0.2,20,120,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 46 |
+
Fruits,Peach (Raw),39,0.9,10,0.3,1.5,6,0.3,16,6.6,0,USDA Ingredient Data,2,0,4,5,0,2,0,7,2,0,0,0,0,0
|
| 47 |
+
Fruits,Pear (Raw),57,0.4,15,0.1,3.1,9,0.2,1,4.3,0,USDA Ingredient Data,1,0,5,11,1,1,0,5,0,0,0,0,0,0
|
| 48 |
+
Fruits,Pineapple (Raw),50,0.5,13,0.1,1.4,13,0.3,3,47.8,0,USDA Ingredient Data,1,0,5,5,1,2,0,53,0,0,0,0,0,0
|
| 49 |
+
Fruits,Pomegranate (Dried),83,1.7,19,1.2,4,10,0.3,0,10,0,USDA Ingredient Data,3,2,7,14,1,2,0,11,0,0,0,0,0,0
|
| 50 |
+
Fruits,Pomegranate Concentrate,150,1,35,0.3,0.5,15,0.4,0,5,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 51 |
+
Fruits,Strawberries,32,0.7,7.7,0.3,2,16,0.4,1,59,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 52 |
+
Fruits,Watermelon (Raw),30,0.6,7.6,0.2,0.4,7,0.2,28,8.1,0,USDA Ingredient Data,1,0,3,1,1,1,0,9,3,0,0,0,0,0
|
| 53 |
+
Grains & Cereals,Arrowroot (Powder),357,0.3,88,0.1,3.4,40,0.3,0,0,0,USDA Ingredient Data,1,0,0,12,3,2,0,0,0,0,32,0,0,0
|
| 54 |
+
Grains & Cereals,Barley,354,12,73,2.3,17,33,3.6,0,0,0,USDA Ingredient Data,24,3,27,61,3,20,0,0,0,0,0,0,0,0
|
| 55 |
+
Grains & Cereals,Barley (Boiled),354,12,73,2.3,17,33,3.6,0,0,0,USDA Ingredient Data,24,3,27,61,3,20,0,0,0,0,0,0,0,0
|
| 56 |
+
Grains & Cereals,Barley (Cooked),354,12,73,2.3,17,33,3.6,0,0,0,USDA Ingredient Data,24,3,27,61,3,20,0,0,0,0,0,0,0,0
|
| 57 |
+
Grains & Cereals,Basmati Rice,365,7.5,80,0.6,1.3,28,1.5,0,0,0,USDA Ingredient Data,15,1,29,5,2,8,0,0,0,0,0,0,0,0
|
| 58 |
+
Grains & Cereals,Basmati Rice (Boiled),365,7.5,80,0.6,1.3,28,1.5,0,0,0,USDA Ingredient Data,15,1,29,5,2,8,0,0,0,0,0,0,0,0
|
| 59 |
+
Grains & Cereals,Basmati Rice (Cooked),365,7.5,80,0.6,1.3,28,1.5,0,0,0,USDA Ingredient Data,15,1,29,5,2,8,0,0,0,0,0,0,0,0
|
| 60 |
+
Grains & Cereals,Brown Rice (Cooked),123,2.7,25.6,1,1.8,10,0.4,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 61 |
+
Grains & Cereals,Bulgur,342,12,76,1.3,18,35,2.5,0,0,0,USDA Ingredient Data,24,2,28,64,3,14,0,0,0,0,0,0,0,0
|
| 62 |
+
Grains & Cereals,Bulgur (Boiled),342,12,76,1.3,18,35,2.5,0,0,0,USDA Ingredient Data,24,2,28,64,3,14,0,0,0,0,0,0,0,0
|
| 63 |
+
Grains & Cereals,Bulgur (Cooked),342,12,76,1.3,18,35,2.5,0,0,0,USDA Ingredient Data,24,2,28,64,3,14,0,0,0,0,0,0,0,0
|
| 64 |
+
Grains & Cereals,Corn (Boiled),96,3.4,21,1.5,2.4,2,0.5,9,6.8,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 65 |
+
Grains & Cereals,Oats,389,17,66,7,10,54,4.7,0,0,0,USDA Ingredient Data,34,9,24,36,4,26,0,0,0,0,0,0,0,0
|
| 66 |
+
Grains & Cereals,Oats (Boiled),389,17,66,7,10,54,4.7,0,0,0,USDA Ingredient Data,34,9,24,36,4,26,0,0,0,0,0,0,0,0
|
| 67 |
+
Grains & Cereals,Oats (Cooked),389,17,66,7,10,54,4.7,0,0,0,USDA Ingredient Data,34,9,24,36,4,26,0,0,0,0,0,0,0,0
|
| 68 |
+
Grains & Cereals,Quinoa (Cooked),120,4.4,21.3,1.9,2.8,17,1.5,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 69 |
+
Grains & Cereals,Tapioca (Dry),358,0.2,88,0.02,0.9,20,1.6,0,0,0,USDA Ingredient Data,0,0,0,3,2,9,0,0,0,0,32,0,0,0
|
| 70 |
+
Grains & Cereals,Whole Wheat,340,13,72,2.5,10,34,3.5,0,0,0,USDA Ingredient Data,26,3,26,36,3,19,0,0,0,0,0,0,0,0
|
| 71 |
+
Grains & Cereals,Whole Wheat (Boiled),340,13,72,2.5,10,34,3.5,0,0,0,USDA Ingredient Data,26,3,26,36,3,19,0,0,0,0,0,0,0,0
|
| 72 |
+
Grains & Cereals,Whole Wheat (Cooked),340,13,72,2.5,10,34,3.5,0,0,0,USDA Ingredient Data,26,3,26,36,3,19,0,0,0,0,0,0,0,0
|
| 73 |
+
Ingredients,Baking Powder,53,0,28,0,0,5876,0.3,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 74 |
+
Ingredients,Cornstarch,381,0.3,91,0.1,0.9,2,0.5,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 75 |
+
Ingredients,Dextrin,350,0,87,0,0,0,0,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 76 |
+
Ingredients,Gelatin (Powder),335,85,0,0,0,30,2,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 77 |
+
Ingredients,Guar Gum,30,5,77,0.5,77,430,5,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 78 |
+
Ingredients,Maltodextrin,380,0,95,0,0,0,0,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 79 |
+
Ingredients,Vinegar (White),21,0,0.9,0,0,7,0.2,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 80 |
+
Ingredients,Xanthan Gum,333,7,77,0.5,77,0,0,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 81 |
+
Legumes & Pulses,Black Beans (Boiled),339,21,63,0.9,16,27,5.1,0,0,0,USDA Ingredient Data,42,1,23,57,2,28,0,0,0,0,0,0,0,0
|
| 82 |
+
Legumes & Pulses,Black Beans (Cooked),339,21,63,0.9,16,27,5.1,0,0,0,USDA Ingredient Data,42,1,23,57,2,28,0,0,0,0,0,0,0,0
|
| 83 |
+
Legumes & Pulses,Chickpeas (Boiled),364,19,61,6,17,105,6.2,67,4,0,USDA Ingredient Data,38,8,22,61,8,34,0,4,7,0,0,0,0,0
|
| 84 |
+
Legumes & Pulses,Chickpeas (Cooked),364,19,61,6,17,105,6.2,67,4,0,USDA Ingredient Data,38,8,22,61,8,34,0,4,7,0,0,0,0,0
|
| 85 |
+
Legumes & Pulses,Fava Beans (Boiled),341,26,58,1.5,25,103,6.7,0,1,0,USDA Ingredient Data,52,2,21,89,8,37,0,1,0,0,0,0,0,0
|
| 86 |
+
Legumes & Pulses,Fava Beans (Cooked),341,26,58,1.5,25,103,6.7,0,1,0,USDA Ingredient Data,52,2,21,89,8,37,0,1,0,0,0,0,0,0
|
| 87 |
+
Legumes & Pulses,Green Peas (Boiled),84,5.4,15,0.4,5.5,25,1.5,38,40,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 88 |
+
Legumes & Pulses,Hummus,166,7.9,14.3,9.6,6,49,2.4,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 89 |
+
Legumes & Pulses,Kidney Beans (Boiled),333,24,60,1,25,83,8.2,0,0,0,USDA Ingredient Data,48,1,22,89,6,46,0,0,0,0,0,0,0,0
|
| 90 |
+
Legumes & Pulses,Kidney Beans (Cooked),333,24,60,1,25,83,8.2,0,0,0,USDA Ingredient Data,48,1,22,89,6,46,0,0,0,0,0,0,0,0
|
| 91 |
+
Legumes & Pulses,Lentils (Boiled),353,25,60,1.1,11,35,6.5,8,4,0,USDA Ingredient Data,50,1,22,39,3,36,0,4,1,0,0,0,0,0
|
| 92 |
+
Legumes & Pulses,Lentils (Cooked),353,25,60,1.1,11,35,6.5,8,4,0,USDA Ingredient Data,50,1,22,39,3,36,0,4,1,0,0,0,0,0
|
| 93 |
+
Meat & Poultry,Beef,250,26,0,15,0,18,2.6,0,0,0.2,USDA Ingredient Data,52,19,0,0,1,14,1,0,0,0,0,0,0,0
|
| 94 |
+
Meat & Poultry,Beef (Cooked),250,26,0,15,0,18,2.6,0,0,0.2,USDA Ingredient Data,52,19,0,0,1,14,1,0,0,0,0,0,0,0
|
| 95 |
+
Meat & Poultry,Beef (Grilled),250,26,0,15,0,18,2.6,0,0,0.2,USDA Ingredient Data,52,19,0,0,1,14,1,0,0,0,0,0,0,0
|
| 96 |
+
Meat & Poultry,Beef (Roasted),250,26,0,15,0,18,2.6,0,0,0.2,USDA Ingredient Data,52,19,0,0,1,14,1,0,0,0,0,0,0,0
|
| 97 |
+
Meat & Poultry,Beef Mince (15% Fat),250,26,0,17,0,18,2.6,0,0,0.2,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 98 |
+
Meat & Poultry,Camel Meat,160,23,0,6,0,13,2,0,0,0.1,USDA Ingredient Data,46,8,0,0,1,11,0,0,0,0,0,0,0,0
|
| 99 |
+
Meat & Poultry,Camel Meat (Cooked),160,23,0,6,0,13,2,0,0,0.1,USDA Ingredient Data,46,8,0,0,1,11,0,0,0,0,0,0,0,0
|
| 100 |
+
Meat & Poultry,Camel Meat (Grilled),160,23,0,6,0,13,2,0,0,0.1,USDA Ingredient Data,46,8,0,0,1,11,0,0,0,0,0,0,0,0
|
| 101 |
+
Meat & Poultry,Camel Meat (Roasted),160,23,0,6,0,13,2,0,0,0.1,USDA Ingredient Data,46,8,0,0,1,11,0,0,0,0,0,0,0,0
|
| 102 |
+
Meat & Poultry,Chicken Breast,165,31,0,3.6,0,15,1,13,0,0.1,USDA Ingredient Data,62,5,0,0,1,6,0,0,1,0,0,0,0,0
|
| 103 |
+
Meat & Poultry,Chicken Breast (Cooked),165,31,0,3.6,0,15,1,13,0,0.1,USDA Ingredient Data,62,5,0,0,1,6,0,0,1,0,0,0,0,0
|
| 104 |
+
Meat & Poultry,Chicken Breast (Grilled),165,31,0,3.6,0,15,1,13,0,0.1,USDA Ingredient Data,62,5,0,0,1,6,0,0,1,0,0,0,0,0
|
| 105 |
+
Meat & Poultry,Chicken Breast (Roasted),165,31,0,3.6,0,15,1,13,0,0.1,USDA Ingredient Data,62,5,0,0,1,6,0,0,1,0,0,0,0,0
|
| 106 |
+
Meat & Poultry,Chicken Thigh (Cooked),209,26,0,11,0,12,1.3,16,0,0.1,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 107 |
+
Meat & Poultry,Lamb,294,25,0,21,0,16,1.8,0,0,0.1,USDA Ingredient Data,50,27,0,0,1,10,0,0,0,0,0,0,0,0
|
| 108 |
+
Meat & Poultry,Lamb (Cooked),294,25,0,21,0,16,1.8,0,0,0.1,USDA Ingredient Data,50,27,0,0,1,10,0,0,0,0,0,0,0,0
|
| 109 |
+
Meat & Poultry,Lamb (Grilled),294,25,0,21,0,16,1.8,0,0,0.1,USDA Ingredient Data,50,27,0,0,1,10,0,0,0,0,0,0,0,0
|
| 110 |
+
Meat & Poultry,Lamb (Roasted),294,25,0,21,0,16,1.8,0,0,0.1,USDA Ingredient Data,50,27,0,0,1,10,0,0,0,0,0,0,0,0
|
| 111 |
+
Meat & Poultry,Turkey,189,29,0,7,0,11,1.4,0,0,0.1,USDA Ingredient Data,58,9,0,0,1,8,0,0,0,0,0,0,0,0
|
| 112 |
+
Meat & Poultry,Turkey (Cooked),189,29,0,7,0,11,1.4,0,0,0.1,USDA Ingredient Data,58,9,0,0,1,8,0,0,0,0,0,0,0,0
|
| 113 |
+
Meat & Poultry,Turkey (Grilled),189,29,0,7,0,11,1.4,0,0,0.1,USDA Ingredient Data,58,9,0,0,1,8,0,0,0,0,0,0,0,0
|
| 114 |
+
Meat & Poultry,Turkey (Roasted),189,29,0,7,0,11,1.4,0,0,0.1,USDA Ingredient Data,58,9,0,0,1,8,0,0,0,0,0,0,0,0
|
| 115 |
+
Nuts & Seeds,Almonds (Roasted),579,21,22,50,12,269,3.7,1,0,0,USDA Ingredient Data,42,64,8,43,21,21,0,0,0,0,0,0,0,0
|
| 116 |
+
Nuts & Seeds,Cashews (Raw),553,18,30,44,3.3,37,6.7,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 117 |
+
Nuts & Seeds,Chia Seeds,486,17,42,31,34,631,7.7,0,1.6,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 118 |
+
Nuts & Seeds,Pistachios (Roasted),562,20,28,45,10,105,3.9,13,5,0,USDA Ingredient Data,40,58,10,36,8,22,0,6,1,0,0,0,0,0
|
| 119 |
+
Nuts & Seeds,Sesame Seeds (Roasted),573,18,23,50,12,975,14.6,0,0,0,USDA Ingredient Data,36,64,8,43,75,81,0,0,0,0,0,0,0,0
|
| 120 |
+
Nuts & Seeds,Sunflower Seeds (Roasted),584,21,20,51,8.6,78,5.2,0,1,0,USDA Ingredient Data,42,65,7,31,6,29,0,1,0,0,0,0,0,0
|
| 121 |
+
Nuts & Seeds,Walnuts (Roasted),654,15,14,65,7,98,2.9,1,1,0,USDA Ingredient Data,30,83,5,25,8,16,0,1,0,0,0,0,0,0
|
| 122 |
+
Oils & Fats,Canola Oil,884,0,0,100,0,0,0,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 123 |
+
Oils & Fats,Sunflower Oil,884,0,0,100,0,0,0,0,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 124 |
+
Protein Supplements,Pea Protein (Isolate),380,80,5,3,0,100,6,0,0,0,USDA Ingredient Data,160,0,0,0,8,33,0,0,0,4,2,0,0,0
|
| 125 |
+
Protein Supplements,Soy Protein (Isolate),360,88,1,1,0,178,15.7,0,0,0,USDA Ingredient Data,176,0,0,0,14,87,0,0,0,1,0,0,0,0
|
| 126 |
+
Protein Supplements,Whey Protein (Isolate),370,90,3,1,0,600,1,0,0,0,USDA Ingredient Data,180,0,0,0,46,6,0,0,0,1,1,0,0,0
|
| 127 |
+
Spices & Herbs,Black Pepper,251,10,64,3.3,25,443,9.7,0,21,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 128 |
+
Spices & Herbs,Mint (Fresh),44,3.3,8.4,0.7,6.8,199,11.9,212,31.8,0,USDA Ingredient Data,7,0,0,24,15,66,0,0,0,1,3,0,35,24
|
| 129 |
+
Spices & Herbs,Paprika,282,14,54,13,34,229,21,1560,0,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 130 |
+
Vegetables,Broccoli (Boiled),35,2.4,7.2,0.4,3.3,40,0.7,31,64,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 131 |
+
Vegetables,Carrot (Raw),41,0.9,10,0.2,2.8,33,0.3,835,6,0,USDA Ingredient Data,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
| 132 |
+
Vegetables,Cucumber (Boiled),16,0.7,3.6,0.1,0.5,16,0.3,5,3,0,USDA Ingredient Data,1,0,1,2,1,2,0,3,1,0,0,0,0,0
|
| 133 |
+
Vegetables,Cucumber (Cooked),16,0.7,3.6,0.1,0.5,16,0.3,5,3,0,USDA Ingredient Data,1,0,1,2,1,2,0,3,1,0,0,0,0,0
|
| 134 |
+
Vegetables,Eggplant (Boiled),25,1,6,0.2,3,9,0.2,23,2,0,USDA Ingredient Data,2,0,2,11,1,1,0,2,3,0,0,0,0,0
|
| 135 |
+
Vegetables,Eggplant (Cooked),25,1,6,0.2,3,9,0.2,23,2,0,USDA Ingredient Data,2,0,2,11,1,1,0,2,3,0,0,0,0,0
|
| 136 |
+
Vegetables,Lettuce (Raw),15,1.4,2.9,0.2,1.3,36,0.9,370,9.2,0,USDA Ingredient Data,3,0,0,5,3,5,0,0,0,0,1,0,10,41
|
| 137 |
+
Vegetables,Mushrooms (Raw),22,3.1,3.3,0.3,1,3,0.5,0,2.1,0.2,USDA Ingredient Data,6,0,0,4,0,3,0,0,0,0,1,1,2,0
|
| 138 |
+
Vegetables,Okra (Boiled),33,2,7,0.2,3.2,82,0.6,36,23,0,USDA Ingredient Data,4,0,3,11,6,3,0,26,4,0,0,0,0,0
|
| 139 |
+
Vegetables,Okra (Cooked),33,2,7,0.2,3.2,82,0.6,36,23,0,USDA Ingredient Data,4,0,3,11,6,3,0,26,4,0,0,0,0,0
|
| 140 |
+
Vegetables,Potato (Boiled),87,1.9,20,0.1,1.8,5,0.3,0,13,0,USDA Ingredient Data,4,0,0,6,0,2,0,0,0,0,7,0,14,0
|
| 141 |
+
Vegetables,Spinach (Boiled),23,2.9,3.6,0.4,2.2,99,2.7,469,28,0,USDA Ingredient Data,6,1,1,8,8,15,0,31,52,0,0,0,0,0
|
| 142 |
+
Vegetables,Spinach (Cooked),23,2.9,3.6,0.4,2.2,99,2.7,469,28,0,USDA Ingredient Data,6,1,1,8,8,15,0,31,52,0,0,0,0,0
|
| 143 |
+
Vegetables,Tomato (Boiled),18,0.9,3.9,0.2,1.2,10,0.3,42,14,0,USDA Ingredient Data,2,0,1,4,1,2,0,16,5,0,0,0,0,0
|
| 144 |
+
Vegetables,Tomato (Cooked),18,0.9,3.9,0.2,1.2,10,0.3,42,14,0,USDA Ingredient Data,2,0,1,4,1,2,0,16,5,0,0,0,0,0
|
models/best_yolo_s.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6260f2ec71419cd968b3ddbb09ec558b09059e74d6fef149f815f94bf4e5d40f
|
| 3 |
+
size 11282690
|
models/best_yolo_x.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:793cfb68c23db7f07d33c6e2a74cf64b04768d070405c54396f7dd25229a6626
|
| 3 |
+
size 57263736
|
requirements.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
fastapi>=0.100.0
|
| 2 |
+
uvicorn>=0.23.0
|
| 3 |
+
python-multipart>=0.0.6
|
| 4 |
+
pandas>=2.0.0
|
| 5 |
+
Pillow>=9.5.0
|
| 6 |
+
--extra-index-url https://download.pytorch.org/whl/cpu
|
| 7 |
+
torch
|
| 8 |
+
torchvision
|
| 9 |
+
ultralytics>=8.0.0
|
static/css/styles.css
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* ==========================================================================
|
| 2 |
+
Custom Stylesheet for eath API
|
| 3 |
+
Tailwind is used for layout, this file handles specific brand assets
|
| 4 |
+
and keyframe animations.
|
| 5 |
+
========================================================================== */
|
| 6 |
+
|
| 7 |
+
/* --- 1. Brand Variables & Typography --- */
|
| 8 |
+
:root {
|
| 9 |
+
--eath-purple: #8B68A2;
|
| 10 |
+
--eath-purple-dark: #705382;
|
| 11 |
+
--eath-purple-light: #EBE4F0;
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
body {
|
| 15 |
+
font-family: 'Inter', sans-serif;
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
/* --- 2. Tailwind Custom Class Mapping --- */
|
| 19 |
+
/* Allowing Tailwind to use our CSS variables easily via custom classes */
|
| 20 |
+
.text-brand {
|
| 21 |
+
color: var(--eath-purple);
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
.bg-brand {
|
| 25 |
+
background-color: var(--eath-purple);
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
.bg-brand-dark:hover {
|
| 29 |
+
background-color: var(--eath-purple-dark);
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
.bg-brand-light {
|
| 33 |
+
background-color: var(--eath-purple-light);
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
.border-brand {
|
| 37 |
+
border-color: var(--eath-purple);
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
.focus\:border-brand:focus {
|
| 41 |
+
border-color: var(--eath-purple);
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
/* --- 3. UI Interactions --- */
|
| 45 |
+
.drag-active {
|
| 46 |
+
border-color: var(--eath-purple) !important;
|
| 47 |
+
background-color: var(--eath-purple-light) !important;
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
.progress-anim {
|
| 51 |
+
transition: width 1.2s cubic-bezier(0.4, 0, 0.2, 1);
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
/* --- 4. Custom Loader Animation --- */
|
| 55 |
+
/* A professional spinning double ring loader using the brand color */
|
| 56 |
+
.custom-loader {
|
| 57 |
+
width: 60px;
|
| 58 |
+
height: 60px;
|
| 59 |
+
border-radius: 50%;
|
| 60 |
+
border: 4px solid var(--eath-purple-light);
|
| 61 |
+
border-top-color: var(--eath-purple);
|
| 62 |
+
animation: spin 1s linear infinite;
|
| 63 |
+
position: relative;
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
.custom-loader::after {
|
| 67 |
+
content: '';
|
| 68 |
+
position: absolute;
|
| 69 |
+
top: 6px;
|
| 70 |
+
left: 6px;
|
| 71 |
+
right: 6px;
|
| 72 |
+
bottom: 6px;
|
| 73 |
+
border-radius: 50%;
|
| 74 |
+
border: 3px solid transparent;
|
| 75 |
+
border-top-color: #333;
|
| 76 |
+
animation: spin-reverse 2s linear infinite;
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
@keyframes spin {
|
| 80 |
+
0% {
|
| 81 |
+
transform: rotate(0deg);
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
100% {
|
| 85 |
+
transform: rotate(360deg);
|
| 86 |
+
}
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
@keyframes spin-reverse {
|
| 90 |
+
0% {
|
| 91 |
+
transform: rotate(360deg);
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
100% {
|
| 95 |
+
transform: rotate(0deg);
|
| 96 |
+
}
|
| 97 |
+
}
|
static/eathstartup.png
ADDED
|
static/index.html
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
|
| 4 |
+
<head>
|
| 5 |
+
<meta charset="UTF-8">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 7 |
+
<title>eath | AI Nutrition Tracker</title>
|
| 8 |
+
|
| 9 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 10 |
+
|
| 11 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
| 12 |
+
|
| 13 |
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;800&display=swap" rel="stylesheet">
|
| 14 |
+
|
| 15 |
+
<link rel="stylesheet" href="css/styles.css">
|
| 16 |
+
</head>
|
| 17 |
+
|
| 18 |
+
<body class="bg-gray-50 min-h-screen flex flex-col font-inter">
|
| 19 |
+
|
| 20 |
+
<header class="bg-[#111116] text-white py-4 shadow-md">
|
| 21 |
+
<div class="max-w-7xl mx-auto px-6 flex justify-between items-center">
|
| 22 |
+
<div class="flex items-center gap-3">
|
| 23 |
+
<img src="eathstartup.png" alt="eath Logo" class="h-10 w-auto object-contain">
|
| 24 |
+
<span class="text-3xl font-bold tracking-tight">eath</span>
|
| 25 |
+
</div>
|
| 26 |
+
|
| 27 |
+
<nav class="hidden md:flex gap-6 text-sm font-medium text-gray-300">
|
| 28 |
+
<a href="#" class="hover:text-white transition">About eath</a>
|
| 29 |
+
<a href="#" class="hover:text-white transition">Features</a>
|
| 30 |
+
<a href="#" class="hover:text-white transition">Team</a>
|
| 31 |
+
<a href="#" class="hover:text-white transition">Contact us</a>
|
| 32 |
+
<a href="#" class="hover:text-white transition">Privacy</a>
|
| 33 |
+
</nav>
|
| 34 |
+
|
| 35 |
+
<div class="flex items-center gap-4">
|
| 36 |
+
<button class="text-gray-400 hover:text-white"><i class="fa-solid fa-moon"></i></button>
|
| 37 |
+
<div
|
| 38 |
+
class="bg-gray-800 px-3 py-1 rounded text-sm flex items-center gap-2 cursor-pointer border border-gray-700">
|
| 39 |
+
<span>🇺🇸</span> <i class="fa-solid fa-chevron-down text-xs"></i>
|
| 40 |
+
</div>
|
| 41 |
+
</div>
|
| 42 |
+
</div>
|
| 43 |
+
</header>
|
| 44 |
+
|
| 45 |
+
<main class="flex-grow max-w-7xl mx-auto px-6 py-10 w-full grid grid-cols-1 lg:grid-cols-12 gap-8">
|
| 46 |
+
|
| 47 |
+
<section class="lg:col-span-5 bg-white p-8 rounded-2xl shadow-sm border border-gray-100 flex flex-col gap-8">
|
| 48 |
+
|
| 49 |
+
<h2 class="text-xl font-bold text-gray-800 border-b pb-3"><i
|
| 50 |
+
class="fa-solid fa-sliders text-brand mr-2"></i> Analysis Engine</h2>
|
| 51 |
+
|
| 52 |
+
<div>
|
| 53 |
+
<label class="block text-sm font-bold text-gray-700 mb-2">Select Architecture</label>
|
| 54 |
+
<select id="modelSelector"
|
| 55 |
+
class="w-full bg-gray-50 border border-gray-200 text-gray-700 rounded-lg p-3 outline-none focus:border-brand transition">
|
| 56 |
+
<option value="yolo_x">YOLO-X Large (>90% Top-1 Accuracy)</option>
|
| 57 |
+
<option value="yolo_s">YOLO-S Small (Edge Optimized)</option>
|
| 58 |
+
</select>
|
| 59 |
+
</div>
|
| 60 |
+
|
| 61 |
+
<div>
|
| 62 |
+
<div class="flex justify-between items-center mb-2">
|
| 63 |
+
<label class="block text-sm font-bold text-gray-700">Portion Size</label>
|
| 64 |
+
<span id="portionLabel"
|
| 65 |
+
class="text-sm font-bold text-brand bg-brand-light px-3 py-1 rounded-full">100 g</span>
|
| 66 |
+
</div>
|
| 67 |
+
<input type="range" id="portionSlider" min="50" max="500" step="50" value="100"
|
| 68 |
+
class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer">
|
| 69 |
+
</div>
|
| 70 |
+
|
| 71 |
+
<div id="dropZone"
|
| 72 |
+
class="border-2 border-dashed border-gray-300 rounded-xl p-8 text-center cursor-pointer hover:bg-gray-50 transition relative overflow-hidden group">
|
| 73 |
+
<input type="file" id="fileInput" accept="image/*"
|
| 74 |
+
class="absolute inset-0 w-full h-full opacity-0 cursor-pointer z-10" />
|
| 75 |
+
|
| 76 |
+
<div id="uploadUI" class="flex flex-col items-center pointer-events-none">
|
| 77 |
+
<div
|
| 78 |
+
class="w-16 h-16 bg-brand-light text-brand rounded-full flex items-center justify-center text-2xl mb-4 group-hover:scale-110 transition-transform">
|
| 79 |
+
<i class="fa-solid fa-camera"></i>
|
| 80 |
+
</div>
|
| 81 |
+
<p class="text-gray-800 font-bold">Drop food image here</p>
|
| 82 |
+
<p class="text-gray-400 text-sm mt-1">PNG, JPG up to 5MB</p>
|
| 83 |
+
</div>
|
| 84 |
+
|
| 85 |
+
<img id="imagePreview" src="" alt="Preview"
|
| 86 |
+
class="hidden absolute inset-0 w-full h-full object-cover z-0" />
|
| 87 |
+
</div>
|
| 88 |
+
|
| 89 |
+
<button id="analyzeBtn"
|
| 90 |
+
class="w-full bg-brand hover:bg-brand-dark text-white font-bold py-4 rounded-xl shadow-md transition flex justify-center items-center gap-2">
|
| 91 |
+
<i class="fa-solid fa-microchip"></i> Analyze Dish
|
| 92 |
+
</button>
|
| 93 |
+
</section>
|
| 94 |
+
|
| 95 |
+
<section class="lg:col-span-7 flex flex-col gap-6">
|
| 96 |
+
|
| 97 |
+
<div id="welcomeState"
|
| 98 |
+
class="h-full bg-white rounded-2xl shadow-sm border border-gray-100 flex flex-col items-center justify-center p-12 text-center">
|
| 99 |
+
<div class="w-24 h-24 bg-gray-50 rounded-full flex items-center justify-center mb-6">
|
| 100 |
+
<i class="fa-solid fa-utensils text-4xl text-gray-300"></i>
|
| 101 |
+
</div>
|
| 102 |
+
<h3 class="text-2xl font-bold text-gray-800 mb-2">Ready for Inference</h3>
|
| 103 |
+
<p class="text-gray-500 max-w-sm">Upload an image to trigger the YOLO architecture. The system will
|
| 104 |
+
cross-reference the USDA databases to extract macros and ingredients.</p>
|
| 105 |
+
</div>
|
| 106 |
+
|
| 107 |
+
<div id="loadingState"
|
| 108 |
+
class="hidden h-full bg-white rounded-2xl shadow-sm border border-gray-100 flex flex-col items-center justify-center p-12">
|
| 109 |
+
<div class="custom-loader mb-6"></div>
|
| 110 |
+
<h3 class="text-xl font-bold text-gray-800">Processing Image...</h3>
|
| 111 |
+
<p class="text-gray-500 text-sm">Running tensor operations & fetching database.</p>
|
| 112 |
+
</div>
|
| 113 |
+
|
| 114 |
+
<div id="resultsState" class="hidden flex flex-col gap-6">
|
| 115 |
+
|
| 116 |
+
<div class="bg-white rounded-2xl shadow-sm border border-gray-100 p-6 relative overflow-hidden">
|
| 117 |
+
<div
|
| 118 |
+
class="absolute top-0 right-0 bg-brand text-white text-xs font-bold px-4 py-1 rounded-bl-xl shadow-sm">
|
| 119 |
+
<span id="badgeModel">YOLO</span>
|
| 120 |
+
</div>
|
| 121 |
+
<p class="text-xs text-gray-500 font-bold uppercase tracking-widest mb-1">Detected Object</p>
|
| 122 |
+
<h2 id="resDishName" class="text-4xl font-black text-gray-800 mb-4 tracking-tight">--</h2>
|
| 123 |
+
|
| 124 |
+
<div class="flex justify-between text-sm mb-2">
|
| 125 |
+
<span class="font-bold text-gray-600">Model Confidence</span>
|
| 126 |
+
<span id="resConfText" class="font-bold text-brand">0%</span>
|
| 127 |
+
</div>
|
| 128 |
+
<div class="w-full bg-gray-100 rounded-full h-3">
|
| 129 |
+
<div id="resConfBar" class="bg-brand h-3 rounded-full progress-anim" style="width: 0%"></div>
|
| 130 |
+
</div>
|
| 131 |
+
</div>
|
| 132 |
+
|
| 133 |
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
| 134 |
+
|
| 135 |
+
<div class="bg-white rounded-2xl shadow-sm border border-gray-100 p-6">
|
| 136 |
+
<div class="flex justify-between items-center mb-6">
|
| 137 |
+
<h3 class="text-lg font-bold text-gray-800"><i
|
| 138 |
+
class="fa-solid fa-chart-pie text-brand mr-2"></i> Macros</h3>
|
| 139 |
+
<span class="text-xs font-bold bg-gray-100 text-gray-600 px-2 py-1 rounded"><span
|
| 140 |
+
id="resPortion">100</span>g</span>
|
| 141 |
+
</div>
|
| 142 |
+
<div class="grid grid-cols-2 gap-4">
|
| 143 |
+
<div class="border border-gray-100 rounded-xl p-4 text-center bg-gray-50">
|
| 144 |
+
<div id="resKcal" class="text-2xl font-black text-gray-800">--</div>
|
| 145 |
+
<div class="text-xs font-bold text-gray-500">KCAL</div>
|
| 146 |
+
</div>
|
| 147 |
+
<div class="border border-gray-100 rounded-xl p-4 text-center bg-gray-50">
|
| 148 |
+
<div id="resProt" class="text-2xl font-black text-gray-800">--</div>
|
| 149 |
+
<div class="text-xs font-bold text-gray-500">PROT (g)</div>
|
| 150 |
+
</div>
|
| 151 |
+
<div class="border border-gray-100 rounded-xl p-4 text-center bg-gray-50">
|
| 152 |
+
<div id="resFat" class="text-2xl font-black text-gray-800">--</div>
|
| 153 |
+
<div class="text-xs font-bold text-gray-500">FAT (g)</div>
|
| 154 |
+
</div>
|
| 155 |
+
<div class="border border-gray-100 rounded-xl p-4 text-center bg-gray-50">
|
| 156 |
+
<div id="resCarb" class="text-2xl font-black text-gray-800">--</div>
|
| 157 |
+
<div class="text-xs font-bold text-gray-500">CARBS (g)</div>
|
| 158 |
+
</div>
|
| 159 |
+
</div>
|
| 160 |
+
</div>
|
| 161 |
+
|
| 162 |
+
<div class="bg-white rounded-2xl shadow-sm border border-gray-100 p-6 flex flex-col">
|
| 163 |
+
<h3 class="text-lg font-bold text-gray-800 mb-4"><i
|
| 164 |
+
class="fa-solid fa-clipboard-list text-brand mr-2"></i> Likely Ingredients</h3>
|
| 165 |
+
<div
|
| 166 |
+
class="bg-gray-50 rounded-xl border border-gray-100 p-4 flex-grow overflow-y-auto max-h-48">
|
| 167 |
+
<ul id="ingredientsList" class="text-sm text-gray-600 space-y-2 list-disc pl-4">
|
| 168 |
+
</ul>
|
| 169 |
+
<div id="noIngredientsMsg" class="hidden text-sm text-gray-400 italic text-center mt-4">
|
| 170 |
+
No specific ingredient data found for this dish.
|
| 171 |
+
</div>
|
| 172 |
+
</div>
|
| 173 |
+
</div>
|
| 174 |
+
|
| 175 |
+
</div>
|
| 176 |
+
</div>
|
| 177 |
+
</section>
|
| 178 |
+
</main>
|
| 179 |
+
|
| 180 |
+
<script src="js/script.js"></script>
|
| 181 |
+
</body>
|
| 182 |
+
|
| 183 |
+
</html>
|
static/js/script.js
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* ==============================================================================
|
| 3 |
+
* EATHVISION FRONTEND LOGIC
|
| 4 |
+
* Description: Handles DOM manipulation, file uploads, and async API requests.
|
| 5 |
+
* ==============================================================================
|
| 6 |
+
*/
|
| 7 |
+
|
| 8 |
+
document.addEventListener('DOMContentLoaded', () => {
|
| 9 |
+
|
| 10 |
+
// --- DOM Elements ---
|
| 11 |
+
const elements = {
|
| 12 |
+
fileInput: document.getElementById('fileInput'),
|
| 13 |
+
dropZone: document.getElementById('dropZone'),
|
| 14 |
+
imagePreview: document.getElementById('imagePreview'),
|
| 15 |
+
uploadUI: document.getElementById('uploadUI'),
|
| 16 |
+
portionSlider: document.getElementById('portionSlider'),
|
| 17 |
+
portionLabel: document.getElementById('portionLabel'),
|
| 18 |
+
analyzeBtn: document.getElementById('analyzeBtn'),
|
| 19 |
+
modelSelector: document.getElementById('modelSelector'),
|
| 20 |
+
|
| 21 |
+
// State Containers
|
| 22 |
+
states: {
|
| 23 |
+
welcome: document.getElementById('welcomeState'),
|
| 24 |
+
loading: document.getElementById('loadingState'),
|
| 25 |
+
results: document.getElementById('resultsState')
|
| 26 |
+
},
|
| 27 |
+
|
| 28 |
+
// Result Fields
|
| 29 |
+
res: {
|
| 30 |
+
badge: document.getElementById('badgeModel'),
|
| 31 |
+
name: document.getElementById('resDishName'),
|
| 32 |
+
confText: document.getElementById('resConfText'),
|
| 33 |
+
confBar: document.getElementById('resConfBar'),
|
| 34 |
+
portion: document.getElementById('resPortion'),
|
| 35 |
+
kcal: document.getElementById('resKcal'),
|
| 36 |
+
prot: document.getElementById('resProt'),
|
| 37 |
+
fat: document.getElementById('resFat'),
|
| 38 |
+
carb: document.getElementById('resCarb'),
|
| 39 |
+
ingList: document.getElementById('ingredientsList'),
|
| 40 |
+
noIngMsg: document.getElementById('noIngredientsMsg')
|
| 41 |
+
}
|
| 42 |
+
};
|
| 43 |
+
|
| 44 |
+
// --- Event Listeners ---
|
| 45 |
+
|
| 46 |
+
// 1. Update portion slider label dynamically
|
| 47 |
+
elements.portionSlider.addEventListener('input', (e) => {
|
| 48 |
+
elements.portionLabel.innerText = `${e.target.value} g`;
|
| 49 |
+
});
|
| 50 |
+
|
| 51 |
+
// 2. Handle File Selection & Image Preview
|
| 52 |
+
elements.fileInput.addEventListener('change', handleFileSelect);
|
| 53 |
+
|
| 54 |
+
// 3. Drag and Drop Visual Feedback
|
| 55 |
+
elements.dropZone.addEventListener('dragover', (e) => {
|
| 56 |
+
e.preventDefault();
|
| 57 |
+
elements.dropZone.classList.add('drag-active');
|
| 58 |
+
});
|
| 59 |
+
|
| 60 |
+
elements.dropZone.addEventListener('dragleave', () => {
|
| 61 |
+
elements.dropZone.classList.remove('drag-active');
|
| 62 |
+
});
|
| 63 |
+
|
| 64 |
+
elements.dropZone.addEventListener('drop', (e) => {
|
| 65 |
+
e.preventDefault();
|
| 66 |
+
elements.dropZone.classList.remove('drag-active');
|
| 67 |
+
if (e.dataTransfer.files.length > 0) {
|
| 68 |
+
elements.fileInput.files = e.dataTransfer.files;
|
| 69 |
+
handleFileSelect();
|
| 70 |
+
}
|
| 71 |
+
});
|
| 72 |
+
|
| 73 |
+
// 4. API Request Execution
|
| 74 |
+
elements.analyzeBtn.addEventListener('click', executeAnalysis);
|
| 75 |
+
|
| 76 |
+
|
| 77 |
+
// --- Core Functions ---
|
| 78 |
+
|
| 79 |
+
function handleFileSelect() {
|
| 80 |
+
const file = elements.fileInput.files[0];
|
| 81 |
+
if (file) {
|
| 82 |
+
const reader = new FileReader();
|
| 83 |
+
reader.onload = function (e) {
|
| 84 |
+
elements.imagePreview.src = e.target.result;
|
| 85 |
+
elements.imagePreview.classList.remove('hidden');
|
| 86 |
+
elements.uploadUI.classList.add('hidden');
|
| 87 |
+
// Make preview slightly transparent so the drop zone remains visible
|
| 88 |
+
elements.imagePreview.classList.add('opacity-90');
|
| 89 |
+
}
|
| 90 |
+
reader.readAsDataURL(file);
|
| 91 |
+
}
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
async function executeAnalysis() {
|
| 95 |
+
if (elements.fileInput.files.length === 0) {
|
| 96 |
+
alert("⚠️ Please select an image first.");
|
| 97 |
+
return;
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
const file = elements.fileInput.files[0];
|
| 101 |
+
const formData = new FormData();
|
| 102 |
+
formData.append('file', file);
|
| 103 |
+
formData.append('model_type', elements.modelSelector.value);
|
| 104 |
+
formData.append('portion_g', elements.portionSlider.value);
|
| 105 |
+
|
| 106 |
+
// Transition UI to Loading
|
| 107 |
+
toggleState('loading');
|
| 108 |
+
elements.analyzeBtn.disabled = true;
|
| 109 |
+
|
| 110 |
+
try {
|
| 111 |
+
// Call the local FastAPI backend
|
| 112 |
+
const response = await fetch('/api/predict', {
|
| 113 |
+
method: 'POST',
|
| 114 |
+
body: formData
|
| 115 |
+
});
|
| 116 |
+
|
| 117 |
+
const data = await response.json();
|
| 118 |
+
|
| 119 |
+
if (!response.ok) throw new Error(data.detail || "Server Error");
|
| 120 |
+
|
| 121 |
+
// Populate AI Data
|
| 122 |
+
elements.res.badge.innerText = data.ai_prediction.model_used.toUpperCase();
|
| 123 |
+
elements.res.name.innerText = data.ai_prediction.dish_name;
|
| 124 |
+
elements.res.confText.innerText = `${data.ai_prediction.confidence}%`;
|
| 125 |
+
|
| 126 |
+
// Delay width application for smooth CSS transition
|
| 127 |
+
setTimeout(() => {
|
| 128 |
+
elements.res.confBar.style.width = `${data.ai_prediction.confidence}%`;
|
| 129 |
+
}, 100);
|
| 130 |
+
|
| 131 |
+
// Populate Nutrition Data
|
| 132 |
+
elements.res.portion.innerText = data.nutrition_insights.portion_g;
|
| 133 |
+
if (data.nutrition_insights.status === "success") {
|
| 134 |
+
const b = data.nutrition_insights.base_data;
|
| 135 |
+
elements.res.kcal.innerText = b.energy_kcal;
|
| 136 |
+
elements.res.prot.innerText = b.protein_g;
|
| 137 |
+
elements.res.fat.innerText = b.fat_g;
|
| 138 |
+
elements.res.carb.innerText = b.carbs_g;
|
| 139 |
+
} else {
|
| 140 |
+
elements.res.kcal.innerText = "--";
|
| 141 |
+
elements.res.prot.innerText = "--";
|
| 142 |
+
elements.res.fat.innerText = "--";
|
| 143 |
+
elements.res.carb.innerText = "--";
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
// Populate Ingredients Data
|
| 147 |
+
elements.res.ingList.innerHTML = ''; // Clear previous
|
| 148 |
+
if (data.ingredients && data.ingredients.length > 0) {
|
| 149 |
+
elements.res.noIngMsg.classList.add('hidden');
|
| 150 |
+
data.ingredients.forEach(ing => {
|
| 151 |
+
const li = document.createElement('li');
|
| 152 |
+
li.innerText = ing;
|
| 153 |
+
// Capitalize first letter
|
| 154 |
+
li.style.textTransform = "capitalize";
|
| 155 |
+
elements.res.ingList.appendChild(li);
|
| 156 |
+
});
|
| 157 |
+
} else {
|
| 158 |
+
elements.res.noIngMsg.classList.remove('hidden');
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
// Show Results
|
| 162 |
+
toggleState('results');
|
| 163 |
+
|
| 164 |
+
} catch (error) {
|
| 165 |
+
console.error("API Error:", error);
|
| 166 |
+
alert("❌ Analysis failed: " + error.message);
|
| 167 |
+
toggleState('welcome');
|
| 168 |
+
} finally {
|
| 169 |
+
elements.analyzeBtn.disabled = false;
|
| 170 |
+
}
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
+
/**
|
| 174 |
+
* Helper to toggle main view states
|
| 175 |
+
* @param {string} targetState - 'welcome', 'loading', or 'results'
|
| 176 |
+
*/
|
| 177 |
+
function toggleState(targetState) {
|
| 178 |
+
elements.states.welcome.classList.add('hidden');
|
| 179 |
+
elements.states.loading.classList.add('hidden');
|
| 180 |
+
elements.states.results.classList.add('hidden');
|
| 181 |
+
|
| 182 |
+
elements.states[targetState].classList.remove('hidden');
|
| 183 |
+
|
| 184 |
+
// Reset progress bar if not in results view
|
| 185 |
+
if (targetState !== 'results') {
|
| 186 |
+
elements.res.confBar.style.width = '0%';
|
| 187 |
+
}
|
| 188 |
+
}
|
| 189 |
+
});
|