File size: 1,235 Bytes
1509f9d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
37
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from typing import List, Dict
from utils.utils import (
    extract_articles,
    perform_comparative_analysis,
    generate_hindi_tts
)

router = APIRouter()

class Company(BaseModel):
    name: str

@router.post("/api/analyze")
async def analyze(company: Company):
    company_name = company.name.strip()
    if not company_name:
        raise HTTPException(status_code=400, detail="Company name is required")

    articles = extract_articles(company_name)
    sentiment_counts, coverage_differences, topic_overlap = perform_comparative_analysis(articles)
    summary_text = " ".join([article['Summary'] for article in articles])
    audio_path = generate_hindi_tts(summary_text)

    final_sentiment = max(sentiment_counts, key=sentiment_counts.get)
    final_analysis = f"Overall sentiment towards {company_name} is {final_sentiment.lower()}."

    return {
        "Company": company_name,
        "Articles": articles,
        "ComparativeSentimentScore": sentiment_counts,
        "Coverage Differences": coverage_differences,
        "Topic Overlap": topic_overlap,
        "Final Sentiment Analysis": final_analysis,
        "Audio": audio_path
    }