Spaces:
Running
Running
File size: 2,004 Bytes
a377214 8888b75 59efe71 b5f584b 895bf16 b5f584b 59efe71 b5f584b 59efe71 c0e0602 59efe71 b5f584b 59efe71 c0e0602 8888b75 a94c049 8888b75 734e13c b5f584b a94c049 b5f584b a94c049 734e13c a94c049 8888b75 b5f584b a94c049 b5f584b a94c049 8888b75 b5f584b 8888b75 |
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 |
from fastapi import FastAPI, UploadFile, File, Form, Request
from fastapi.responses import HTMLResponse, JSONResponse, FileResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from fastapi.middleware.cors import CORSMiddleware
import tempfile, os
from app import summarize_document
from appImage import caption_image
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.mount("/static", StaticFiles(directory="static"), name="static")
app.mount("/resources", StaticFiles(directory="resources"), name="resources")
templates = Jinja2Templates(directory="templates")
# Serve homepage
@app.get("/", response_class=HTMLResponse)
async def serve_home(request: Request):
return templates.TemplateResponse("HomeS.html", {"request": request})
# Summarize endpoint (calls summarize_document from app.py)
@app.post("/summarize/")
async def summarize_api(file: UploadFile = File(...), length: str = Form("medium")):
try:
result = await summarize_document(file, length)
return JSONResponse(result)
except Exception as e:
print(f"Error during summarization: {str(e)}")
return JSONResponse({"detail": f"Internal server error: {str(e)}"}, status_code=500)
# Captioning endpoint
@app.post("/imagecaption/")
async def caption(file: UploadFile = File(...)):
try:
result = await caption_image(file)
return JSONResponse(result)
except Exception as e:
print(f"Error during captioning: {str(e)}")
return JSONResponse({"error": f"Image captioning failed: {str(e)}"}, status_code=500)
# Serve audio/pdf files
@app.get("/files/{filename}")
async def serve_file(filename: str):
filepath = os.path.join(tempfile.gettempdir(), filename)
if os.path.exists(filepath):
return FileResponse(filepath)
return JSONResponse({"error": "File not found"}, status_code=404)
|