File size: 4,824 Bytes
1c97873 7920808 fba0ec8 1783a8c 7920808 1c97873 18e84a8 1c97873 1e472cd 913c773 91bca67 913c773 fba0ec8 481e32f fba0ec8 1783a8c fba0ec8 ede5400 fba0ec8 ede5400 fba0ec8 1783a8c 913c773 1783a8c 913c773 fbc74e6 913c773 fbc74e6 59e0522 0f2c023 59e0522 0f2c023 fbc74e6 913c773 |
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 |
import streamlit as st
import requests
from pytube import YouTube
import os
from twelvelabs.models.task import Task
# Streamlit interface setup
st.title('Video Summary Interface')
from twelvelabs import TwelveLabs
client = TwelveLabs(api_key=os.environ.get('TL_API_KEY'))
# Creating tabs,
tab1, tab2, tab3, tab4, tab5 = st.tabs(["Project Description", "Video Uploader", "Video Indexer", "Video Prompt", "Unique Value Add"])
with tab1:
st.header("Project Description")
st.write("Here you can describe the project in detail.")
image_path = 'data/data_projectflow.png'
# Display the image
st.image(image_path, caption='Project Flow Diagram')
# Add more components as needed
with tab2:
# Function to download YouTube video
def download_youtube_video(url):
yt = YouTube(url)
stream = yt.streams.filter(file_extension='mp4').first()
video = stream.download()
return video
st.title('Video Upload and Processing')
# Setup your Twelve Labs client
# Assuming 'client' is set up here (use your actual client initialization)
# client = TwelveLabsClient(api_key="your_api_key")
# Container for video input
with st.container():
st.write("Video Input")
video_file = st.file_uploader("Upload a video file", type=["mp4", "avi"])
youtube_url = st.text_input("Or paste a YouTube URL here:")
# Container for video processing output
with st.container():
st.write("Video Processing")
if st.button("Process Video"):
if video_file is not None:
video_path = video_file.name
with open(video_path, mode='wb') as f:
f.write(video_file.getbuffer())
elif youtube_url:
video_path = download_youtube_video(youtube_url)
else:
st.warning("Please upload a video file or enter a YouTube URL.")
st.stop()
print(f"Uploading {video_path}")
task = client.task.create(index_id="<YOUR_INDEX_ID>", file=video_path, language="en")
st.success(f"Task id={task.id}")
# Optional: Monitor the video indexing process
def on_task_update(task: Task):
st.write(f"Status={task.status}")
task.wait_for_done(callback=on_task_update)
if task.status != "ready":
st.error(f"Indexing failed with status {task.status}")
else:
st.success(f"Uploaded {video_path}. The unique identifier of your video is {task.video_id}.")
with tab3:
st.header("Video Indexer")
st.write("Information and controls related to the Scrum TruEra Assistants API.")
# Integration and API controls could be managed here
with tab4:
st.header("Video Prompt")
st.write("Information and controls related to the Scrum TruEra Assistants API.")
# Creating two columns for layout
col1, col2 = st.columns(2)
# Embedding YouTube video directly in the left column
with col1:
youtube_url = "https://www.youtube.com/watch?v=Uo0KjdDJr1c"
st.video(youtube_url)
# Using the right column for prompt modification and response
with col2:
# Input for modifying the prompt
prompt = st.text_input("Enter your prompt:",
"list the top 4 job interview mistakes and how to improve")
# Slider to adjust the number in the prompt
number = st.slider("Select the number of top mistakes:", min_value=1, max_value=10, value=4)
# Update the prompt with the chosen number
updated_prompt = prompt.replace("4", str(number))
# Button to send the request
if st.button("Summarize Video"):
BASE_URL = "https://api.twelvelabs.io/v1.2"
api_key = "tlk_3CPMVGM0ZPTKNT2TKQ3Y62TA7ZY9"
data = {
"video_id": "6636cf7fd1cd5a287c957cf5",
"type": "summary",
"prompt": updated_prompt
}
# Send the request
response = requests.post(f"{BASE_URL}/summarize", json=data, headers={"x-api-key": api_key})
# Check if the response is successful
if response.status_code == 200:
st.text_area("Summary:", response.json()['summary'], height=300)
else:
st.error("Failed to fetch summary: " + response.text)
# Run this script using the following command:
# streamlit run your_script_name.py
with tab5:
st.header("Unique Value Add")
st.write("Information and controls related to the Scrum TruEra Assistants API.")
# Integration and API controls could be managed here
|