import uuid import streamlit as st import os import time import sys import shutil MAX_DIR_AGE_SECONDS = 1800 def get_session_id(): if 'session_id' not in st.session_state: st.session_state.session_id = str(uuid.uuid4()) return st.session_state.session_id def cleanup_stale_directories(base_dir: str): """Deletes directories under base_dir older than MAX_DIR_AGE_SECONDS.""" now = time.time() for item_name in os.listdir(base_dir): item_path = os.path.join(base_dir, item_name) if os.path.isdir(item_path): try: mtime = os.path.getmtime(item_path) if (now - mtime) > MAX_DIR_AGE_SECONDS: shutil.rmtree(item_path) print(f"Cleaned up stale directory: {item_path}", file=sys.stderr) except Exception as e: print(f"Error cleaning directory {item_path}: {e}", file=sys.stderr) pass def get_session_temp_dir(main_data_dir): cleanup_stale_directories(main_data_dir) session_id = get_session_id() temp_dir = os.path.join(main_data_dir, session_id) os.makedirs(temp_dir, exist_ok=True) return temp_dir