import os import tempfile import gradio as gr from gtts import gTTS from pydub import AudioSegment VOCAB_FOLDER = "vocab_files" def get_date_choices(): files = [f for f in os.listdir(VOCAB_FOLDER) if f.endswith(".txt")] dates = [os.path.splitext(f)[0] for f in files] return sorted(dates) def load_vocab(selected_date): if not selected_date or selected_date == "datum": return [ [], # State ostaje prazan gr.update(choices=[], value=None), gr.update(value="Odaberite datum da biste vidjeli riječi za taj dan.") ] path = os.path.join(VOCAB_FOLDER, f"{selected_date}.txt") with open(path, "r", encoding="utf-8") as f: words = [line.strip() for line in f if line.strip()] markdown_content = "\n".join([f"- {w}" for w in words]) return [ words, gr.update(choices=words, value=words[0] if words else None), gr.update(value=markdown_content) ] def word_to_audio(word): tts = gTTS(text=word, lang="hr") tmp = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") tts.save(tmp.name) return tmp.name def words_to_audio(words): combined = AudioSegment.empty() for w in words: tts = gTTS(text=w, lang="hr") tmp = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") tts.save(tmp.name) segment = AudioSegment.from_file(tmp.name, format="mp3") combined += segment out_tmp = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") combined.export(out_tmp.name, format="mp3") return out_tmp.name with gr.Blocks() as demo: title = gr.HTML("