Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, HTTPException | |
| from fastapi.responses import FileResponse | |
| import time | |
| from utils import ( | |
| get_bing_news_articles, | |
| analyze_sentiment, | |
| extract_topics, | |
| comparative_analysis, | |
| convert_text_to_hindi_tts, | |
| ) | |
| app = FastAPI(title="News Summarization & TTS API") | |
| def get_news(company: str, num_articles: int = 10): | |
| articles = get_bing_news_articles(company, num_articles=num_articles) | |
| if not articles: | |
| raise HTTPException(status_code=404, detail="No articles found.") | |
| for article in articles: | |
| combined_text = article["title"] | |
| if article["summary"]: | |
| combined_text += ". " + article["summary"] | |
| sentiment, scores = analyze_sentiment(combined_text) | |
| article["sentiment"] = sentiment | |
| article["sentiment_scores"] = scores | |
| article["topics"] = extract_topics(combined_text) | |
| time.sleep(0.5) | |
| analysis = comparative_analysis(articles) | |
| return {"articles": articles, "analysis": analysis} | |
| def get_tts(text: str): | |
| output_file = "output.mp3" | |
| convert_text_to_hindi_tts(text, output_file=output_file) | |
| return FileResponse(output_file, media_type="audio/mpeg", filename=output_file) | |