Spaces:
Sleeping
Sleeping
File size: 4,755 Bytes
480d4ef dcb53fc 0268b89 79da273 0268b89 1dd6469 3af1c8c 0268b89 79da273 0268b89 79da273 0d88658 2f13a57 0268b89 0d88658 2f13a57 0268b89 e76448d 3af1c8c 0268b89 12d9720 81edc2c 79da273 0268b89 3af1c8c dcb53fc 4efe8e3 90b9bf8 4ba7330 4efe8e3 90b9bf8 4efe8e3 b0ff174 51efef6 522dc57 51efef6 522dc57 51efef6 522dc57 f774200 1dd6469 7fe96d7 53550de b86b5dd 53550de 5c42ea2 73d2101 5d5059e 5c42ea2 53550de b86b5dd dcb53fc 73d2101 |
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
import os
import gradio as gr
from video_processing import process_video
from gradio.themes.base import Base
from gradio.themes.utils import colors, fonts, sizes
from typing import Iterable
class CustomTheme(Base):
def __init__(
self,
*,
primary_hue: colors.Color | str = colors.orange,
secondary_hue: colors.Color | str = colors.orange,
neutral_hue: colors.Color | str = colors.gray,
spacing_size: sizes.Size | str = sizes.spacing_md,
radius_size: sizes.Size | str = sizes.radius_md,
text_size: sizes.Size | str = sizes.text_md,
font: fonts.Font | str | Iterable[fonts.Font | str] = (
fonts.GoogleFont("Sora"),
"ui-sans-serif",
"sans-serif",
),
font_mono: fonts.Font | str | Iterable[fonts.Font | str] = (
fonts.GoogleFont("Sora"),
"ui-monospace",
"monospace",
),
):
super().__init__(
primary_hue=primary_hue,
secondary_hue=secondary_hue,
neutral_hue=neutral_hue,
spacing_size=spacing_size,
radius_size=radius_size,
text_size=text_size,
font=font,
font_mono=font_mono,
)
super().set(
body_background_fill="radial-gradient(circle at center, rgba(235, 87, 38, 1) 0%, rgba(235, 87, 38, 0) 70%), radial-gradient(#eb5726 1px, transparent 1px)",
body_text_color="#282828",
block_background_fill="#ffffff",
block_title_text_color="#eb5726",
block_label_text_color="#eb5726",
button_primary_background_fill="#eb5726",
button_primary_text_color="#ffffff",
)
custom_theme = CustomTheme()
from datetime import datetime
def save_uploaded_file(uploaded_bytes):
upload_dir = "uploaded_videos"
os.makedirs(upload_dir, exist_ok=True)
# Generate a unique filename using timestamp to avoid overwriting files
file_name = f"uploaded_video_{datetime.now().strftime('%Y%m%d%H%M%S')}.mp4"
file_path = os.path.join(upload_dir, file_name)
with open(file_path, "wb") as f:
f.write(uploaded_bytes)
return file_path
def display_results(video_file):
if video_file:
video_file_path = save_uploaded_file(video_file) # Assume this function returns the saved file path
scenes = find_scenes(video_file_path)
if scenes:
return f"Detected scenes: {scenes}"
else:
return "No scenes detected."
else:
return "No file uploaded."
css = """
body {
background-color: #ffffff;
background-image: radial-gradient(#eb5726 1px, transparent 1px);
background-size: 10px 10px;
background-repeat: repeat;
background-attachment: fixed;
}
#video_url {
background-color: #ffffff;
color: #282828;
border: 2px solid #eb5726;
}
#description {
background-color: #ffffff;
color: #282828;
border: 2px solid #eb5726;
}
#submit_button {
background-color: #eb5726;
color: #ffffff;
border: 2px solid #ffffff;
}
#submit_button:hover {
background-color: #f5986e;
color: #ffffff;
border: 2px solid #ffffff;
}
label[for="video_url"] {
color: #eb5726 !important;
}
label[for="description"] {
color: #eb5726 !important;
}
h3 {
color: #eb5726;
}
.centered-markdown {
text-align: center;
background-color: #ffffff;
padding: 10px;
}
#sickstadium-title {
font-size: 3em !important;
font-weight: bold;
text-transform: uppercase;
}
"""
def interface_function(video_file):
if video_file is not None:
file_path = save_uploaded_file(video_file)
return f"File saved at {file_path}"
return "No file uploaded."
def test_upload(uploaded_file):
if uploaded_file is None:
return "No file uploaded."
# Assuming the file is saved in a temporary location and processed
file_path = save_uploaded_file(uploaded_file) # Ensure this function saves and returns the path
if not file_path:
return "Failed to save file."
# Process the video using the path
result_path = process_video(file_path, description="Describe your clip here", is_url=False)
if not result_path:
return "Failed to process video or no scenes found."
return f"Video processed and saved to: {result_path}"
with gr.Blocks() as demo:
with gr.Column():
video_file = gr.UploadButton("Upload Video File", type="binary", file_types=["video"])
output = gr.Textbox(label="Output")
submit_button = gr.Button("Process Video")
submit_button.click(
fn=test_upload,
inputs=[video_file],
outputs=[output]
)
demo.launch() |