salimshakeel
upload files
d2542a3
raw
history blame
1.19 kB
from fastapi import APIRouter, UploadFile, File
from fastapi.responses import JSONResponse
from utils.file_utils import save_uploaded_file
from services.extractor import extract_features
from services.model_loader import load_model
from services.summarizer import get_scores, get_selected_indices, save_summary_video
from config import UPLOAD_DIR, OUTPUT_DIR
router = APIRouter()
@router.post("/summarize")
def summarize_video(video: UploadFile = File(...)):
if not video.filename.lower().endswith(('.mp4', '.avi', '.mov', '.mkv')):
return JSONResponse(content={"error": "Unsupported file format"}, status_code=400)
video_path = save_uploaded_file(video, UPLOAD_DIR)
features, picks = extract_features(video_path)
model = load_model("backend/Model/epoch-199.pkl")
scores = get_scores(model, features)
selected = get_selected_indices(scores, picks)
output_path = f"{OUTPUT_DIR}/summary_{video.filename}"
save_summary_video(video_path, selected, output_path)
summary_url = f"/static/outputs/summary_{video.filename}"
return JSONResponse(content={
"message": "Summarization complete",
"summary_video_url": summary_url
})