ikraamkb commited on
Commit
b5f584b
·
verified ·
1 Parent(s): ae289b1

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +32 -43
main.py CHANGED
@@ -2,65 +2,54 @@
2
  from fastapi import FastAPI, UploadFile, File, Form, Request
3
  from fastapi.responses import HTMLResponse, JSONResponse, FileResponse
4
  from fastapi.staticfiles import StaticFiles
5
- from fastapi.middleware.cors import CORSMiddleware
6
  from fastapi.templating import Jinja2Templates
 
7
  import tempfile, os
8
- from app import extract_text, generate_summary, text_to_speech, create_pdf
9
- from appImage import generate_caption
 
10
 
11
  app = FastAPI()
12
 
13
- app.add_middleware(CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"])
 
 
 
 
 
 
14
 
15
  app.mount("/static", StaticFiles(directory="static"), name="static")
16
  app.mount("/resources", StaticFiles(directory="resources"), name="resources")
17
  templates = Jinja2Templates(directory="templates")
18
 
 
19
  @app.get("/", response_class=HTMLResponse)
20
  async def serve_home(request: Request):
21
  return templates.TemplateResponse("HomeS.html", {"request": request})
22
 
 
23
  @app.post("/summarize/")
24
- async def summarize_document_endpoint(file: UploadFile = File(...), length: str = Form("medium")):
25
- contents = await file.read()
26
- with tempfile.NamedTemporaryFile(delete=False) as tmp:
27
- tmp.write(contents)
28
- tmp_path = tmp.name
29
-
30
- file_ext = file.filename.split('.')[-1].lower()
31
- text, error = extract_text(tmp_path, file_ext)
32
-
33
- if error:
34
- return JSONResponse({"detail": error}, status_code=400)
35
-
36
- if not text or len(text.split()) < 30:
37
- return JSONResponse({"detail": "Document too short to summarize"}, status_code=400)
38
-
39
- summary = generate_summary(text, length)
40
- audio_path = text_to_speech(summary)
41
- pdf_path = create_pdf(summary, file.filename)
42
-
43
- response = {"summary": summary}
44
- if audio_path:
45
- response["audioUrl"] = f"/files/{os.path.basename(audio_path)}"
46
- if pdf_path:
47
- response["pdfUrl"] = f"/files/{os.path.basename(pdf_path)}"
48
-
49
- return JSONResponse(response)
50
-
51
  @app.post("/imagecaption/")
52
- async def caption_image_endpoint(file: UploadFile = File(...)):
53
- contents = await file.read()
54
- with tempfile.NamedTemporaryFile(delete=False, suffix=".png") as tmp:
55
- tmp.write(contents)
56
- image_path = tmp.name
57
-
58
- caption = generate_caption(image_path)
59
- return JSONResponse({"caption": caption})
60
-
61
  @app.get("/files/{filename}")
62
  async def serve_file(filename: str):
63
- path = os.path.join(tempfile.gettempdir(), filename)
64
- if os.path.exists(path):
65
- return FileResponse(path)
66
  return JSONResponse({"error": "File not found"}, status_code=404)
 
2
  from fastapi import FastAPI, UploadFile, File, Form, Request
3
  from fastapi.responses import HTMLResponse, JSONResponse, FileResponse
4
  from fastapi.staticfiles import StaticFiles
 
5
  from fastapi.templating import Jinja2Templates
6
+ from fastapi.middleware.cors import CORSMiddleware
7
  import tempfile, os
8
+
9
+ from app import summarize_document
10
+ from appImage import caption_image
11
 
12
  app = FastAPI()
13
 
14
+ app.add_middleware(
15
+ CORSMiddleware,
16
+ allow_origins=["*"],
17
+ allow_credentials=True,
18
+ allow_methods=["*"],
19
+ allow_headers=["*"],
20
+ )
21
 
22
  app.mount("/static", StaticFiles(directory="static"), name="static")
23
  app.mount("/resources", StaticFiles(directory="resources"), name="resources")
24
  templates = Jinja2Templates(directory="templates")
25
 
26
+ # Serve homepage
27
  @app.get("/", response_class=HTMLResponse)
28
  async def serve_home(request: Request):
29
  return templates.TemplateResponse("HomeS.html", {"request": request})
30
 
31
+ # Document summarization endpoint
32
  @app.post("/summarize/")
33
+ async def summarize(file: UploadFile = File(...), length: str = Form("medium")):
34
+ try:
35
+ result = await summarize_document(file, length)
36
+ return JSONResponse(result)
37
+ except Exception as e:
38
+ return JSONResponse({"error": f"Summarization failed: {str(e)}"}, status_code=500)
39
+
40
+ # Image captioning endpoint
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  @app.post("/imagecaption/")
42
+ async def caption(file: UploadFile = File(...)):
43
+ try:
44
+ result = await caption_image(file)
45
+ return JSONResponse(result)
46
+ except Exception as e:
47
+ return JSONResponse({"error": f"Image captioning failed: {str(e)}"}, status_code=500)
48
+
49
+ # Serve audio/pdf generated
 
50
  @app.get("/files/{filename}")
51
  async def serve_file(filename: str):
52
+ filepath = os.path.join(tempfile.gettempdir(), filename)
53
+ if os.path.exists(filepath):
54
+ return FileResponse(filepath)
55
  return JSONResponse({"error": "File not found"}, status_code=404)