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()