test / app.py
sparsh007's picture
Create app.py
5723ab2 verified
from fastapi import FastAPI
import gradio as gr
import requests
import os
app = FastAPI()
def display_video(video_url, sas_token):
try:
full_url = f"{video_url}?{sas_token}"
temp_file = "temp_video.mp4"
response = requests.get(full_url, timeout=10)
if response.status_code == 200:
with open(temp_file, "wb") as f:
f.write(response.content)
return temp_file, "Video loaded successfully"
return None, f"Failed to fetch video: {response.status_code}"
except Exception as e:
return None, f"Error: {str(e)}"
@app.post("/process_video")
async def process_video(data: dict):
video_url = data.get("video_url")
sas_token = data.get("sas_token")
if not video_url or not sas_token:
return {"error": "Missing video_url or sas_token"}
video_path, message = display_video(video_url, sas_token)
return {"status": "success" if video_path else "error", "message": message}
def gradio_interface(video_url, sas_token):
video_path, message = display_video(video_url, sas_token)
return video_path, message
iface = gr.Interface(
fn=gradio_interface,
inputs=[
gr.Textbox(label="Video URL"),
gr.Textbox(label="SAS Token")
],
outputs=[
gr.Video(label="Video"),
gr.Text(label="Status")
],
title="PRISM Site Diary V3 Video Viewer",
description="Enter video URL and SAS token to view."
)
if __name__ == "__main__":
iface.launch(server_name="0.0.0.0", server_port=7860)