server-data / app.py
vericudebuget's picture
Update app.py
fd03c78 verified
raw
history blame
3.08 kB
import streamlit as st
from huggingface_hub import HfApi
import os
import json
from datetime import datetime
# Initialize the Hugging Face API with the token
api = HfApi(token=os.getenv("HF_API_TOKEN"))
def generate_metadata(video_name, title, description, uploader, file_location):
return {
"fileName": video_name,
"title": title,
"description": description,
"uploader": uploader,
"uploadTimestamp": datetime.now().isoformat(),
"fileLocation": file_location,
"views": 0,
"likes": 0
}
def upload_video_to_hf(video_file, video_name, title, description, uploader):
# Save the video temporarily to a file
video_path = os.path.join("temp", video_name)
json_name = f"{os.path.splitext(video_name)[0]}-index.json"
json_path = os.path.join("temp", json_name)
# Ensure the temp directory exists
if not os.path.exists("temp"):
os.makedirs("temp")
# Write the video content to a file
with open(video_path, "wb") as f:
f.write(video_file.read())
# Upload the video to Hugging Face
file_location = f"videos/{video_name}"
api.upload_file(
path_or_fileobj=video_path,
path_in_repo=file_location,
repo_id="vericudebuget/ok4231",
repo_type="space",
)
# Generate and upload metadata JSON
metadata = generate_metadata(video_name, title, description, uploader, file_location)
with open(json_path, "w") as f:
json.dump(metadata, f, indent=2)
api.upload_file(
path_or_fileobj=json_path,
path_in_repo=f"metadata/{json_name}",
repo_id="vericudebuget/ok4231",
repo_type="space",
)
return metadata
# Streamlit app interface
st.title("Upload your video")
st.markdown("---")
# File uploader for video input
uploaded_video = st.file_uploader("Choose video file", type=["mp4", "avi", "mov"])
if uploaded_video:
# Show the video details form
with st.form("video_details"):
st.write("Video Details")
title = st.text_input("Title", placeholder="Enter video title")
description = st.text_area("Description", placeholder="Enter video description")
uploader = st.text_input("Uploader Name", placeholder="Enter your name")
# Upload button within the form
submit_button = st.form_submit_button("Upload Video")
if submit_button:
if not title or not uploader:
st.error("Please fill in the title and uploader name.")
else:
with st.spinner("Uploading video and generating metadata..."):
metadata = upload_video_to_hf(
uploaded_video,
uploaded_video.name,
title,
description,
uploader
)
st.success("Upload completed successfully!")
st.json(metadata)
else:
st.info("Please upload a video file to begin.")