-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
61 lines (53 loc) · 2.03 KB
/
main.py
File metadata and controls
61 lines (53 loc) · 2.03 KB
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List, Optional
from modules.report_generator import ReportGenerator, save_report
from modules.search import search_and_extract
from modules.org_data import PartyDataFetcher # Make sure org_data.py defines PartyDataFetcher
app = FastAPI()
# Models for input validation
class ReportRequest(BaseModel):
topic: str
max_results: Optional[int] = 3
class PartyRequest(BaseModel):
party_name: str
# Initialize classes
report_generator = ReportGenerator()
party_data_fetcher = PartyDataFetcher()
@app.get("/")
def root():
return {"message": "Welcome to the FastAPI Application for Report and Party Data"}
@app.post("/generate-report/")
def generate_report(request: ReportRequest):
"""
Generates a detailed report for a given topic.
"""
try:
report_data = report_generator.generate_detailed_report(request.topic, request.max_results)
if not report_data["success"]:
raise HTTPException(status_code=404, detail=report_data["report"])
save_report(report_data, f"{request.topic.replace(' ', '_').lower()}_report.txt")
return report_data
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.post("/search/")
def perform_search(query: str, max_results: Optional[int] = 3):
"""
Performs a search and returns extracted content.
"""
try:
search_results = search_and_extract(query, max_results)
return {"results": search_results}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.post("/process-party/")
def process_party(request: PartyRequest):
"""
Fetches, analyzes, and stores data for a given Indian political party.
"""
try:
party_name = request.party_name
party_data_fetcher.process_party(party_name)
return {"message": f"Data for party '{party_name}' processed successfully."}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))