Spaces:
Running
Running
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 | |
async def serve_home(request: Request): | |
return templates.TemplateResponse("HomeS.html", {"request": request}) | |
# Summarize endpoint (calls summarize_document from app.py) | |
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 | |
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 | |
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) | |