1-project / api.py
devanshu1121's picture
Upload api.py
e50e11a verified
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
}