import streamlit as st import pandas as pd from datetime import datetime import os import base64 # ππ₯ Initialize session state like a galactic DJ spinning tracks! if 'file_history' not in st.session_state: st.session_state['file_history'] = [] # ππΎ Save to history like a time-traveling scribe! | π β¨ save_to_history("πΌοΈ Image", "pic.jpg", img_data) - Stamps a pic in the history books like a boss! def save_to_history(file_type, file_path, img_data): timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") with open(file_path, "wb") as f: f.write(base64.b64decode(img_data.split(',')[1])) st.session_state['file_history'].append({ "Timestamp": timestamp, "Type": file_type, "Path": file_path }) # ποΈ Sidebar config like a spaceship control panel! with st.sidebar: st.header("ποΈπΈ Snap Shack") st.subheader("π Snap Stash") if st.session_state['file_history']: images = [f for f in st.session_state['file_history'] if f['Type'] == "πΌοΈ Image"] if images: st.write("πΌοΈ Images") for img in images: st.write(f"- {img['Path']} @ {img['Timestamp']}") else: st.write("π³οΈ Empty Stash!") # ππ¨ Main UI kicks off like a cosmic art show! st.title("πΈ Multi-Cam Snap Craze") # πΈπ· JS camera zone with multiple streams! st.header("πΈπ₯ Snap Zone") multi_cam_html = """
""" st.markdown(multi_cam_html, unsafe_allow_html=True) # πΈπ₯ Handle snapshots from JS def handle_snapshot(): if "snapshot" in st.session_state: snapshot_data = st.session_state["snapshot"] cam_index = st.session_state.get("camIndex", 0) filename = f"cam{cam_index}_snap_{datetime.now().strftime('%Y%m%d_%H%M%S')}.jpg" save_to_history("πΌοΈ Image", filename, snapshot_data) st.image(Image.open(BytesIO(base64.b64decode(snapshot_data.split(',')[1]))), caption=f"Cam {cam_index} Snap", use_container_width=True) del st.session_state["snapshot"] st.components.v1.html( """ """, height=0 ) handle_snapshot() # π Upload zone like a media drop party! st.header("π₯π Drop Zone") uploaded_files = st.file_uploader("πΈ Toss Pics", accept_multiple_files=True, type=['jpg', 'png']) if uploaded_files: for uploaded_file in uploaded_files: file_path = f"uploaded_{uploaded_file.name}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.jpg" save_to_history("πΌοΈ Image", file_path, base64.b64encode(uploaded_file.getvalue()).decode()) st.image(Image.open(uploaded_file), caption=uploaded_file.name, use_container_width=True) # πΌοΈ Gallery like a media circus! st.header("πͺ Snap Show") if st.session_state['file_history']: images = [f for f in st.session_state['file_history'] if f['Type'] == "πΌοΈ Image"] if images: st.subheader("πΌοΈ Pic Parade") cols = st.columns(3) for i, img in enumerate(images): with cols[i % 3]: if os.path.exists(img['Path']): st.image(img['Path'], caption=img['Path'], use_container_width=True) with open(img['Path'], "rb") as f: img_data = f.read() st.markdown(f'π₯ Snag It!', unsafe_allow_html=True) else: st.warning(f"π¨ Missing file: {img['Path']}") else: st.write("π« No snaps yet!") # π History log like a time machine! st.header("β³ Snap Saga") if st.session_state['file_history']: df = pd.DataFrame(st.session_state['file_history']) st.dataframe(df) else: st.write("π³οΈ Nothing snapped yet!")