| 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) |