Webui / app.py
NeoPy's picture
Update app.py
6a1f1d1 verified
import os
import gradio as gr
def get_audio_files(folder_path):
"""Get list of audio files from a folder."""
if not os.path.exists(folder_path):
return []
audio_extensions = ['.mp3', '.wav', '.m4a']
try:
files = [f for f in os.listdir(folder_path)
if os.path.splitext(f)[1].lower() in audio_extensions]
return sorted(files)
except Exception as e:
print(f"Error reading folder: {e}")
return []
def create_dropdown():
"""Create dropdown interface with audio folder detection."""
with gr.Blocks() as demo:
# Create dropdown with empty choices and descriptive label
folder_dropdown = gr.Dropdown(
choices=[],
label="Select Audio Folder",
value=None
)
# Create dropdown for audio files
audio_dropdown = gr.Dropdown(
choices=[],
label="Select Audio File",
value=None
)
# Event listener for folder selection
def update_audio_files(folder_path):
if not folder_path:
return []
audio_files = get_audio_files(folder_path)
return audio_files
# Link events
folder_dropdown.change(
fn=update_audio_files,
inputs=folder_dropdown,
outputs=audio_dropdown
)
# Layout configuration
demo.append(gr.Row([folder_dropdown]))
demo.append(gr.Row([audio_dropdown]))
return demo
# Launch the interface
if __name__ == "__main__":
app = create_dropdown()
app.launch()