import streamlit as st from src.story_gen import generate_story from pathlib import Path import threading import time import os # ------------------- WAV CLEANUP CONFIG ------------------- WAV_FOLDER = "." # Change to your folder name DELETE_AFTER_SECONDS = 300 def delete_wav_files(): """Delete .wav files older than 1 hour.""" if not os.path.exists(WAV_FOLDER): return current_time = time.time() for filename in os.listdir(WAV_FOLDER): if filename.endswith(".wav"): file_path = os.path.join(WAV_FOLDER, filename) try: file_age = current_time - os.path.getmtime(file_path) if file_age > DELETE_AFTER_SECONDS: os.remove(file_path) print(f"[CLEANER] Deleted (older than 1 hr): {file_path}") except Exception as e: print(f"[CLEANER] Error deleting {file_path}: {e}") def background_cleaner(): """Runs every 1 minute.""" while True: delete_wav_files() time.sleep(60) def load_app(): # Start background cleaner only once if "bg_started" not in st.session_state: thread = threading.Thread(target=background_cleaner, daemon=True) thread.start() st.session_state.bg_started = True print("[CLEANER] Background WAV cleaner started.") # ------------------- STREAMLIT APP ------------------- st.set_page_config(page_title="AI Story Generator", page_icon="📚", layout="centered") st.title("📚 AI Story Generator") st.write("Enter a story plot and let AI turn it into a full story!") # 🔽 Language dropdown language = st.selectbox( "Select language for audio:", [ ("English", "en"), ("Hindi", "hi"), ("Tamil", "ta"), ("Telugu", "te"), ("Bengali", "bn"), ("Gujarati", "gu"), ("Kannada", "kn"), ("Malayalam", "ml") ], format_func=lambda x: x[0] ) plot = st.text_area("Enter your story plot:", height=150) display_story=st.checkbox(label="Display Story") generate = st.button("Generate Story") if generate: if not plot.strip(): st.warning("Please enter a story plot.") else: with st.spinner("Generating story... please wait ⏳"): # Pass language to your story generator response = generate_story(story_plot=plot, language=language) story = response.get('story') fileName = response.get('fileName') st.subheader("✨ Generated Story") f = Path(fileName) audio_bytes = f.read_bytes() st.audio(audio_bytes, format="audio/wav") if display_story: st.write(story)