|
import streamlit as st |
|
import tempfile |
|
from video_processor import process_video |
|
from qa_engine import get_answer |
|
from database import insert_video_data, search_similar_videos |
|
|
|
st.title("Intelligent Video Q&A App with Gemini Vision Pro") |
|
|
|
uploaded_file = st.file_uploader("Choose a video file", type=["mp4", "avi", "mov"]) |
|
if uploaded_file is not None: |
|
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp4") as tmp_file: |
|
tmp_file.write(uploaded_file.getvalue()) |
|
video_path = tmp_file.name |
|
|
|
summary_words = st.slider("Number of words in summary", 50, 500, 200) |
|
|
|
if st.button("Process Video"): |
|
with st.spinner("Processing video with Gemini Vision Pro..."): |
|
video_data = process_video(video_path, summary_words) |
|
insert_video_data(video_data) |
|
st.success("Video processed successfully!") |
|
|
|
st.subheader("Video Summary") |
|
st.write(video_data['summary']) |
|
|
|
st.subheader("Extracted Code") |
|
st.code(video_data['extracted_code']) |
|
|
|
st.subheader("Similar Videos") |
|
similar_videos = search_similar_videos(video_data['summary']) |
|
for video in similar_videos: |
|
st.write(f"- {video['title']}") |
|
|
|
question = st.text_input("Ask a question about the video:") |
|
if question and 'video_data' in locals(): |
|
answer = get_answer(question, video_data) |
|
st.write("Answer:", answer) |