from fastapi import FastAPI from pydantic import BaseModel from utils import fetch_news, generate_tts_hindi import shutil app = FastAPI() class CompanyRequest(BaseModel): company_name: str @app.post("/get_news_and_sentiment") async def get_news_and_sentiment(request: CompanyRequest): company_name = request.company_name articles = fetch_news(company_name) # Comparative Sentiment Analysis sentiment_distribution = {'Positive': 0, 'Negative': 0, 'Neutral': 0} for article in articles: sentiment_distribution[article['Sentiment']] += 1 # Prepare comparative analysis coverage_diff = [] for i in range(1, len(articles)): coverage_diff.append({ "Comparison": f"Article {i} vs Article {i+1}", "Impact": f"Impact of coverage for {articles[i]['Sentiment']} vs {articles[i-1]['Sentiment']}" }) # Generate TTS in Hindi tts_file = generate_tts_hindi(f"Sentiment report for {company_name}.", "output.mp3") return { 'Company': company_name, 'Articles': articles, 'Comparative Sentiment Score': sentiment_distribution, 'Coverage Differences': coverage_diff, 'Final Sentiment': f"Final sentiment about {company_name}: Positive" if sentiment_distribution['Positive'] > sentiment_distribution['Negative'] else "Negative", 'Audio': tts_file }