File size: 1,246 Bytes
d41fc6e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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")

@app.get("/news")
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}

@app.get("/tts")
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)