Spaces:
Paused
Paused
from fastapi import FastAPI, UploadFile, File, Response,Header, BackgroundTasks,Body | |
from fastapi.staticfiles import StaticFiles | |
from vitpose import VitPose | |
from dotenv import load_dotenv | |
from tasks import process_video | |
from fastapi.responses import JSONResponse | |
from config import AI_API_TOKEN | |
import logging | |
logging.basicConfig(level=logging.INFO) | |
logger = logging.getLogger(__name__) | |
app = FastAPI() | |
vitpose = VitPose() | |
# vitpose.pipeline.warmup() | |
load_dotenv() | |
app.mount("/static", StaticFiles()) | |
def read_root(): | |
return {"message": "Hello World"} | |
def test(): | |
return {"message": "from test"} | |
async def upload(background_tasks: BackgroundTasks, | |
file: UploadFile = File(...), | |
token: str = Header(...), | |
user_id: str = Body(...), | |
player_id: str = Body(...)): | |
if token != AI_API_TOKEN: | |
return JSONResponse(content={"message": "Unauthorized", "status": 401}) | |
logger.info("reading contents") | |
contents = await file.read() | |
# Save the file to the local directory | |
logger.info("saving file") | |
with open(file.filename, "wb") as f: | |
f.write(contents) | |
logger.info(f"file saved {file.filename}") | |
# Create a clone of the file with content already read | |
background_tasks.add_task(process_video, file.filename, vitpose, user_id,player_id) | |
# Return the file as a response | |
return JSONResponse(content={"message": "Video uploaded successfully", "status": 200}) | |