Spaces:
Sleeping
Sleeping
Vargock
Added session_id so that history of messages wouldn't be shared between users, DUH xD
968f79d
| import uuid | |
| from flask import Flask, render_template, request, session | |
| from modules.db import init_db, save_message, get_recent | |
| from modules.hf_helpers import hf_infer | |
| from modules.helpers import detect_lang, MODELS, LABELS, update_history, bar | |
| app = Flask(__name__) | |
| app.secret_key = "seed-string" | |
| init_db() | |
| COLOR_MAP = { | |
| "POSITIVE": "green", | |
| "NEGATIVE": "red", | |
| "NEUTRAL": "orange", | |
| "ПОЗИТИВНЫЙ": "green", | |
| "НЕГАТИВНЫЙ": "red", | |
| "НЕЙТРАЛЬНЫЙ": "orange", | |
| "Emotion": "blue", | |
| "Toxicity": "purple" | |
| } | |
| def index(): | |
| if "user_id" not in session: | |
| session["user_id"] = str(uuid.uuid4()) | |
| user_id = session["user_id"] | |
| result = None | |
| if request.method == "POST": | |
| text = request.form.get("text", "").strip() | |
| if text: | |
| lang = detect_lang(text) | |
| labels = LABELS[lang] | |
| # Sentiment | |
| sentiment_model = MODELS["ru_sentiment"] if lang == "ru" else MODELS["en_sentiment"] | |
| sentiment_data = hf_infer(sentiment_model, text) | |
| sentiment_result = None | |
| if sentiment_data: | |
| top_raw_label = max(sentiment_data, key=lambda x: x["score"]) | |
| sentiment = labels.get( | |
| top_raw_label["label"].lower() if lang == "ru" else top_raw_label["label"], | |
| top_raw_label["label"] | |
| ).upper() | |
| score = top_raw_label["score"] | |
| sentiment_result = { | |
| "name": sentiment, | |
| "score": int(score * 100), | |
| "bar": bar(score), | |
| "color": COLOR_MAP.get(sentiment, "black") | |
| } | |
| save_message(user_id, text, sentiment, score) | |
| pos_count = update_history(user_id, sentiment_result["name"] if sentiment_result else "") | |
| # Emotion (EN only) | |
| emotion_result = None | |
| if lang == "en": | |
| emo_data = hf_infer(MODELS["emotion"], text) | |
| if emo_data: | |
| top_emo = max(emo_data, key=lambda x: x["score"]) | |
| emotion_result = { | |
| "name": top_emo["label"].capitalize(), | |
| "score": int(top_emo["score"] * 100), | |
| "bar": bar(top_emo["score"]), | |
| "color": COLOR_MAP["Emotion"] | |
| } | |
| # Toxicity (EN only) | |
| tox_result = None | |
| if lang == "en": | |
| tox_data = hf_infer(MODELS["toxicity"], text) | |
| if tox_data: | |
| top_tox = max(tox_data, key=lambda x: x["score"]) | |
| tox_result = { | |
| "name": top_tox["label"], | |
| "score": int(top_tox["score"] * 100), | |
| "bar": bar(top_tox["score"]), | |
| "color": COLOR_MAP["Toxicity"] | |
| } | |
| result = { | |
| "sentiment": sentiment_result, | |
| "emotion": emotion_result, | |
| "toxicity": tox_result, | |
| "pos_count": pos_count | |
| } | |
| history = get_recent(user_id, 10) | |
| return render_template("index.html", result=result, history=history) | |
| if __name__ == "__main__": | |
| app.run(host="0.0.0.0", port=7860, debug=False) | |