File size: 4,418 Bytes
1c97873
7920808
fba0ec8
 
 
1783a8c
7920808
1c97873
 
 
18e84a8
1c97873
1e472cd
913c773
 
 
 
 
 
 
91bca67
913c773
 
 
 
 
 
fba0ec8
 
 
 
 
 
 
 
 
 
 
1783a8c
 
 
 
fba0ec8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1783a8c
 
 
 
 
 
913c773
1783a8c
 
 
 
 
 
913c773
 
 
 
 
 
 
 
 
0f2c023
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import requests
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 Interface')
    
    # 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.header("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.header("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.")

    # 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