kalorize / main.py
handiism's picture
feat: add callories and proteins in food recomendation
37e9ffd
Raw
History Blame Contribute Delete
1.65 kB
import os
from dotenv import load_dotenv
from flask import Flask, request, abort
from prediction_hwg import predict
from food_recommendation import recommendation
import os
load_dotenv()
app = Flask(__name__)
@app.post("/f2hwg")
async def f2hwg():
api_key = request.headers.get("x-api-key", "")
if api_key != os.getenv("API_KEY"):
return abort(401)
f = request.files["picture"]
path = os.path.join(os.getcwd(), f.filename)
f.save(path)
height, weight, gender = predict(path)
os.remove(path)
return {
"height": round(float(height * 100)),
"weight": round(float(weight)),
"gender": gender,
}
@app.post("/food_rec")
async def food_rec():
api_key = request.headers.get("x-api-key", "")
if api_key != os.getenv("API_KEY"):
return abort(401)
d = request.json
gender = d["gender"]
weight = d["weight"]
height = d["height"]
age = d["age"]
activity_level = d["activity_level"]
target = d["target"]
breakfast, lunch, dinner, calories, proteins = recommendation(
gender, weight, height, age, activity_level, target
)
breakfast_list = breakfast.to_dict(orient="records")
lunch_list = lunch.to_dict(orient="records")
dinner_list = dinner.to_dict(orient="records")
return {
"calories": round(float(calories), 2),
"proteins": round(float(proteins), 2),
"breakfast": breakfast_list,
"lunch": lunch_list,
"dinner": dinner_list,
}
@app.errorhandler(401)
def unauthorized(e):
return {
"status": "fail",
"message": "invalid api key",
}, 401