from flask import Flask, render_template, request, jsonify from deepface import DeepFace import tempfile import os app = Flask(__name__, template_folder="templates", static_folder="static") # preload emotion model once models_cache = { "emotion": DeepFace.build_model("Emotion") } @app.route("/") def index(): return render_template("index.html") @app.route("/detect_live", methods=["POST"]) def detect_live(): if "frame" not in request.files: return jsonify({"error": "no frame uploaded"}), 400 file = request.files["frame"] tmp = tempfile.NamedTemporaryFile(delete=False) file.save(tmp.name) try: result = DeepFace.analyze( img_path=tmp.name, actions=["emotion"], models=models_cache, detector_backend="mediapipe", enforce_detection=False ) except Exception as e: os.remove(tmp.name) return jsonify({"error": str(e)}), 500 os.remove(tmp.name) dominant = result[0]["dominant_emotion"] scores = result[0]["emotion"] return jsonify({ "emotion": dominant, "scores": scores }) if __name__ == "__main__": app.run(host="0.0.0.0", port=7860)