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