Spaces:
Runtime error
Runtime error
import gradio as gr | |
import os | |
import time | |
import json | |
import yaml | |
import pandas as pd | |
from datetime import datetime | |
from moviepy.editor import VideoFileClip | |
# Function to process the video | |
def process_video(video): | |
start_time = time.time() | |
# Save the uploaded video file | |
video_path = os.path.join("uploads", video.name) | |
video.save(video_path) | |
# Extract video details | |
video_clip = VideoFileClip(video_path) | |
video_duration = video_clip.duration | |
memory_usage = os.path.getsize(video_path) # in bytes | |
process_time = time.time() - start_time | |
upload_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") | |
# Collect the log | |
log = { | |
"filename": video.name, | |
"collect_date_time": upload_time, | |
"video_duration": video_duration, | |
"process_time": process_time, | |
"memory_usage": memory_usage | |
} | |
# Save log in different formats | |
save_log(log) | |
return video_path, log | |
def save_log(log): | |
# Save to CSV | |
csv_file = "logs.csv" | |
df = pd.DataFrame([log]) | |
if os.path.exists(csv_file): | |
df.to_csv(csv_file, mode='a', header=False, index=False) | |
else: | |
df.to_csv(csv_file, index=False) | |
# Save to JSON | |
json_file = "logs.json" | |
if os.path.exists(json_file): | |
with open(json_file, 'r') as f: | |
logs = json.load(f) | |
logs.append(log) | |
with open(json_file, 'w') as f: | |
json.dump(logs, f, indent=4) | |
else: | |
with open(json_file, 'w') as f: | |
json.dump([log], f, indent=4) | |
# Save to YAML | |
yaml_file = "logs.yaml" | |
if os.path.exists(yaml_file): | |
with open(yaml_file, 'r') as f: | |
logs = yaml.safe_load(f) | |
logs.append(log) | |
with open(yaml_file, 'w') as f: | |
yaml.dump(logs, f) | |
else: | |
with open(yaml_file, 'w') as f: | |
yaml.dump([log], f) | |
def display_logs(): | |
logs = [] | |
if os.path.exists("logs.json"): | |
with open("logs.json", 'r') as f: | |
logs = json.load(f) | |
return logs | |
# Create Gradio interface | |
upload_video = gr.Interface( | |
fn=process_video, | |
inputs=gr.inputs.File(label="Upload Video"), | |
outputs=[gr.outputs.Video(label="Processed Video"), gr.outputs.JSON(label="Log Details")], | |
live=True | |
) | |
view_logs = gr.Interface( | |
fn=display_logs, | |
inputs=None, | |
outputs=gr.outputs.JSON(label="Logs History") | |
) | |
app = gr.TabbedInterface( | |
[upload_video, view_logs], | |
["Upload and Process Video", "View Logs"] | |
) | |
if __name__ == "__main__": | |
app.launch() | |