Spaces:
Running
Running
| import os, tempfile, logging | |
| import streamlit as st | |
| from dotenv import load_dotenv | |
| # from database.operations import insert_video_text_result | |
| from helpers_function.helpers import get_video_thumbnail_base64 | |
| from generator_function.video_text_generator import extract_text_from_video | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| load_dotenv() | |
| def render_video_to_text(uid: str = None): | |
| st.subheader("Video → Text") | |
| category = st.text_input("Category") | |
| uploaded_file = st.file_uploader("Upload a video file", type=["mp4", "mov", "avi", "mkv"]) | |
| if uploaded_file: | |
| st.video(uploaded_file) | |
| if st.button("Convert to Text", width="content"): | |
| with st.spinner("Processing video..."): | |
| with tempfile.NamedTemporaryFile(delete=False, suffix=".mp4") as tmp: | |
| tmp.write(uploaded_file.read()) | |
| tmp_path = tmp.name | |
| result = extract_text_from_video(tmp_path) | |
| if not result or "error" in result: | |
| st.error(f"Error: {result.get('error', 'Unknown failure')}") | |
| else: | |
| st.success("Video processed successfully!") | |
| # Display the extracted text | |
| if result and "text_output" in result: | |
| st.subheader("Extracted Text") | |
| st.text_area("Result", result["text_output"], height=200) | |
| else: | |
| st.warning("Text extraction was successful, but no text was found in the output.") | |
| st.session_state["video_to_text_result"] = result | |
| st.session_state["video_name"] = uploaded_file.name | |
| st.session_state["category"] = category | |
| try: | |
| st.session_state["thumbnail"] = get_video_thumbnail_base64(tmp_path) or "" | |
| except Exception as e: | |
| logger.warning(f"Thumbnail generation failed: {e}") | |
| st.session_state["thumbnail"] = "" | |
| os.remove(tmp_path) | |
| # if st.button("Save to DB", width="content", key="sg_save"): | |
| # try: | |
| # insert_video_text_result( | |
| # video_name=st.session_state.get("video_name", "unknown"), | |
| # response=st.session_state.get("video_to_text_result", {}), | |
| # thumbnail=st.session_state.get("thumbnail", ""), | |
| # created_by=uid, | |
| # category=st.session_state.get("category"), | |
| # ) | |
| # st.success("Generated text saved to database ") | |
| # except Exception as e: | |
| # st.error(f"Failed to save generated text: {e}") | |