Your Name
feat: UI improvements and error suppression - Enhanced dashboard and market pages with improved header buttons, logo, and currency symbol display - Stopped animated ticker - Removed pie chart legends - Added error suppressor for external service errors (SSE, Permissions-Policy warnings) - Improved header button prominence and icon appearance - Enhanced logo with glow effects and better design - Fixed currency symbol visibility in market tables
8b7b267
| from __future__ import annotations | |
| from typing import List, Dict, Any | |
| import os | |
| from functools import lru_cache | |
| ENABLE_SENTIMENT = os.getenv("ENABLE_SENTIMENT", "true").lower() in ("1","true","yes") | |
| SOCIAL_MODEL = os.getenv("SENTIMENT_SOCIAL_MODEL", "ElKulako/cryptobert") | |
| NEWS_MODEL = os.getenv("SENTIMENT_NEWS_MODEL", "kk08/CryptoBERT") | |
| def _pl(model_name: str): | |
| if not ENABLE_SENTIMENT: | |
| return None | |
| from transformers import pipeline | |
| return pipeline("sentiment-analysis", model=model_name) | |
| def _label_to_score(lbl: str) -> float: | |
| l = (lbl or "").lower() | |
| if "bear" in l or "neg" in l or "label_0" in l: return -1.0 | |
| if "bull" in l or "pos" in l or "label_1" in l: return 1.0 | |
| return 0.0 | |
| def run_sentiment(texts: List[str], model: str | None = None) -> Dict[str, Any]: | |
| if not ENABLE_SENTIMENT: | |
| return {"enabled": False, "vote": 0.0, "samples": []} | |
| name = model or SOCIAL_MODEL | |
| pl = _pl(name) | |
| if not pl: | |
| return {"enabled": False, "vote": 0.0, "samples": []} | |
| preds = pl(texts) | |
| scores = [_label_to_score(p.get("label","")) * float(p.get("score",0)) for p in preds] | |
| vote = sum(scores) / max(1, len(scores)) | |
| return {"enabled": True, "model": name, "vote": vote, "samples": preds} | |