ZahraAznour commited on
Commit
0d62675
·
verified ·
1 Parent(s): 9071298

Upload 3 files

Browse files
Files changed (3) hide show
  1. app.py +72 -0
  2. main.py +5 -0
  3. wsgi +4 -0
app.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Import necessary libraries
2
+ from flask import Flask, render_template, request, jsonify
3
+ from utils import model_predict, get_available_models
4
+
5
+ # Initialize Flask app
6
+ app = Flask(__name__)
7
+
8
+ @app.route("/")
9
+ def home():
10
+ models = get_available_models()
11
+ return render_template("ZAHRAAZNOUR.html", models=models)
12
+
13
+ @app.route('/predict', methods=["POST"])
14
+ def predict():
15
+ """
16
+ Handles form submission and returns prediction.
17
+ """
18
+ email = request.form.get('email')
19
+ model_name = request.form.get('model')
20
+
21
+ if not email:
22
+ return render_template("ZAHRAAZNOUR.html",
23
+ error="Please provide an email",
24
+ models=get_available_models())
25
+
26
+ if not model_name:
27
+ return render_template("ZAHRAAZNOUR.html",
28
+ error="Please select a model",
29
+ models=get_available_models())
30
+
31
+ try:
32
+ prediction = model_predict(email, model_name)
33
+ result = "Spam" if prediction == 1 else "Not Spam"
34
+ return render_template("ZAHRAAZNOUR.html",
35
+ prediction=result,
36
+ email=email,
37
+ selected_model=model_name,
38
+ models=get_available_models())
39
+ except Exception as e:
40
+ return render_template("index.html",
41
+ error=f"Error: {str(e)}",
42
+ models=get_available_models())
43
+
44
+ @app.route('/api/predict', methods=["POST"])
45
+ def predict_api():
46
+ """
47
+ API endpoint that accepts a JSON payload and returns a prediction.
48
+ """
49
+ try:
50
+ data = request.get_json()
51
+ email = data.get("email")
52
+ model_name = data.get("model")
53
+
54
+ if not email:
55
+ return jsonify({'error': 'No email provided'}), 400
56
+
57
+ if not model_name:
58
+ return jsonify({'error': 'No model selected'}), 400
59
+
60
+ prediction = model_predict(email, model_name)
61
+ result = "Spam" if prediction == 1 else "Not Spam"
62
+ return jsonify({
63
+ 'email': email,
64
+ 'model': model_name,
65
+ 'prediction': result
66
+ })
67
+
68
+ except Exception as e:
69
+ return jsonify({'error': str(e)}), 400
70
+
71
+ if __name__ == "__main__":
72
+ app.run(host="0.0.0.0", port=5000, debug=True)
main.py ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ from app import app
2
+
3
+ if __name__ == "__main__":
4
+ # Use port 7860 for Hugging Face Spaces
5
+ app.run(host="0.0.0.0", port=7860, debug=True)
wsgi ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ from app import app
2
+
3
+ if _name_ == "_main_":
4
+ app.run()