Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| from datetime import datetime | |
| import os | |
| import threading | |
| import time | |
| from PIL import Image | |
| from io import BytesIO | |
| import aiofiles | |
| import asyncio | |
| import base64 | |
| # ππ₯ Initialize session state like a galactic DJ spinning tracks! | |
| if 'file_history' not in st.session_state: | |
| st.session_state['file_history'] = [] | |
| if 'auto_capture_running' not_in st.session_state: | |
| st.session_state['auto_capture_running'] = False | |
| if 'cam_file' not_in st.session_state: | |
| st.session_state['cam_file'] = None | |
| # ππΎ Save to history like a time-traveling scribe! | π β¨ save_to_history("πΌοΈ Image", "pic.jpg") - Stamps a pic in the history books like a boss! | |
| def save_to_history(file_type, file_path): | |
| timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") | |
| st.session_state['file_history'].append({ | |
| "Timestamp": timestamp, | |
| "Type": file_type, | |
| "Path": file_path | |
| }) | |
| # πΈβ° Auto-capture every 10 secs like a sneaky shutterbug! | |
| def auto_capture(): | |
| if st.session_state['auto_capture_running'] and 'cam_img' in st.session_state: | |
| cam_img = st.session_state['cam_img'] | |
| if cam_img: | |
| filename = f"auto_snap_{datetime.now().strftime('%Y%m%d_%H%M%S')}.jpg" | |
| with open(filename, "wb") as f: | |
| f.write(cam_img.getvalue()) | |
| save_to_history("πΌοΈ Image", filename) | |
| threading.Timer(10, auto_capture).start() | |
| # ποΈ Sidebar config like a spaceship control panel! | |
| with st.sidebar: | |
| st.header("ποΈπΈ Snap Shack") | |
| if st.button("β° Start Auto-Snap"): | |
| st.session_state['auto_capture_running'] = True | |
| auto_capture() | |
| if st.button("βΉοΈ Stop Auto-Snap"): | |
| st.session_state['auto_capture_running'] = False | |
| # π Sidebar file outline with emoji flair! | |
| 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("πΈ Snap Craze") | |
| # πΈπ· Camera snap zone! | |
| st.header("πΈπ₯ Snap Zone") | |
| cam_img = st.camera_input("π· Snap It!", key="cam") | |
| if cam_img: | |
| filename = f"cam_snap_{datetime.now().strftime('%Y%m%d_%H%M%S')}.jpg" | |
| if st.session_state['cam_file'] and os.path.exists(st.session_state['cam_file']): | |
| os.remove(st.session_state['cam_file']) | |
| with open(filename, "wb") as f: | |
| f.write(cam_img.getvalue()) | |
| st.session_state['cam_file'] = filename | |
| st.session_state['cam_img'] = cam_img # Store for auto-capture | |
| save_to_history("πΌοΈ Image", filename) | |
| st.image(Image.open(filename), caption="Latest Snap", use_column_width=True) | |
| # π 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}" | |
| with open(file_path, "wb") as f: | |
| f.write(uploaded_file.read()) | |
| save_to_history("πΌοΈ Image", file_path) | |
| # πΌοΈ 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]: | |
| st.image(img['Path'], caption=img['Path'], use_column_width=True) | |
| st.markdown(f'<a href="data:image/jpeg;base64,{base64.b64encode(open(img["Path"], "rb").read()).decode()}" download="{os.path.basename(img["Path"])}">π₯ Snag It!</a>', unsafe_allow_html=True) | |
| 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!") |