import random from datetime import datetime class SentimentAnalyzer: def __init__(self): self.gold_sources = [ "Federal Reserve hints at rate pause - positive for gold", "Inflation data higher than expected - gold demand rising", "Dollar strength weighs on precious metals", "Central banks continue gold accumulation", "Geopolitical tensions support safe-haven demand", "Gold ETFs see outflows amid risk-on sentiment", "Technical breakout above resistance level", "Profit-taking observed after recent rally" ] self.bitcoin_sources = [ "Institutional adoption of Bitcoin accelerates", "Regulatory clarity improves - positive for crypto", "Bitcoin halving event supports price", "Macro uncertainty drives Bitcoin demand", "Spot ETF inflows reach record highs", "Network hash rate reaches new ATH", "Whale accumulation detected on-chain", "DeFi TVL growth supports crypto market" ] def analyze_sentiment(self, asset_name): """Analyze sentiment for selected asset""" try: # Select appropriate news sources if "Bitcoin" in asset_name: sources = self.bitcoin_sources else: sources = self.gold_sources # Generate random sentiment around current market conditions base_sentiment = random.uniform(-0.5, 0.5) # Add some realistic variation if random.random() > 0.7: # Strong sentiment event sentiment = base_sentiment + random.uniform(-0.5, 0.5) else: sentiment = base_sentiment # Clamp between -1 and 1 sentiment = max(-1, min(1, sentiment)) # Generate news summary num_news = random.randint(3, 6) selected_news = random.sample(sources, num_news) news_html = f"
" news_html += f"

{asset_name} Market News

" for i, news in enumerate(selected_news, 1): sentiment_label = "🟢" if "positive" in news or "rising" in news or "support" in news or "accelerates" in news or " ATH" in news else \ "🔴" if "weighs" in news or "outflows" in news or "Profit-taking" in news else \ "🟡" news_html += f"

{sentiment_label} {news}

" news_html += "
" return sentiment, news_html except Exception as e: return 0, f"

Error analyzing sentiment: {str(e)}

"