NeoPy commited on
Commit
4091b91
·
verified ·
1 Parent(s): 2285921

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -48
app.py CHANGED
@@ -1,60 +1,64 @@
1
- import gradio as gr
2
- from pathlib import Path
3
  import os
 
4
 
5
- directory = "./audios"
6
 
7
 
8
- def scan_audio_folder():
9
- """Scan directory for audio files and return list of paths."""
10
- supported_formats = ['.mp3', '.wav', '.m4a']
11
- audio_files = []
12
 
 
13
  try:
14
- for root, _, files in os.walk(directory):
15
- for file in files:
16
- if os.path.splitext(file)[1].lower() in supported_formats:
17
- audio_files.append(os.path.join(root, file))
18
- return sorted(audio_files)
19
  except Exception as e:
20
- print(f"Error scanning directory: {str(e)}")
21
  return []
22
 
23
- def update_audio_list(folder_path):
24
- """Update audio dropdown based on selected folder."""
25
- audio_files = scan_audio_folder(folder_path)
26
- return gr.Dropdown.update(choices=[Path(f).name for f in audio_files])
27
-
28
- # Initialize the app
29
- with gr.Blocks() as demo:
30
- # Input components
31
- folder_input = gr.Textbox(label="Audio Folder Path")
32
-
33
- # Dropdown for selecting audio files
34
- audio_dropdown = gr.Dropdown(label="Select Audio File")
35
-
36
- # Audio player component
37
- audio_player = gr.Audio(label="Audio Player")
38
-
39
- # Events
40
- folder_input.change(
41
- fn=update_audio_list,
42
- inputs=[folder_input],
43
- outputs=[audio_dropdown]
44
- )
45
-
46
- audio_dropdown.change(
47
- fn=lambda x, f: os.path.join(f, x),
48
- inputs=[audio_dropdown, folder_input],
49
- outputs=[audio_player]
50
- )
 
 
 
 
 
 
 
 
 
51
 
52
- # Layout
53
- demo.append(gr.Column([
54
- folder_input,
55
- audio_dropdown,
56
- audio_player
57
- ]))
58
 
 
59
  if __name__ == "__main__":
60
- demo.launch(debug=True)
 
 
 
 
1
  import os
2
+ import gradio as gr
3
 
4
+ folder_path = "./audios"
5
 
6
 
7
+ def get_audio_files():
8
+ """Get list of audio files from a folder."""
9
+ if not os.path.exists(folder_path):
10
+ return []
11
 
12
+ audio_extensions = ['.mp3', '.wav', '.m4a']
13
  try:
14
+ files = [f for f in os.listdir(folder_path)
15
+ if os.path.splitext(f)[1].lower() in audio_extensions]
16
+ return sorted(files)
 
 
17
  except Exception as e:
18
+ print(f"Error reading folder: {e}")
19
  return []
20
 
21
+ def create_dropdown():
22
+ """Create dropdown interface with audio folder detection."""
23
+ with gr.Blocks() as demo:
24
+ # Create dropdown with initial empty value (Gradio 4.x style)
25
+ folder_dropdown = gr.Dropdown(
26
+ choices=[],
27
+ label="Select Audio Folder",
28
+ value=None,
29
+ placeholder="Choose an audio folder"
30
+ )
31
+
32
+ # Create dropdown for audio files
33
+ audio_dropdown = gr.Dropdown(
34
+ choices=[],
35
+ label="Select Audio File",
36
+ value=None,
37
+ placeholder="Audio files will appear here"
38
+ )
39
+
40
+ # Event listener for folder selection
41
+ def update_audio_files(folder_path):
42
+ if not folder_path:
43
+ return []
44
+
45
+ audio_files = get_audio_files(folder_path)
46
+ return audio_files
47
+
48
+ # Link events
49
+ folder_dropdown.change(
50
+ fn=update_audio_files,
51
+ inputs=folder_dropdown,
52
+ outputs=audio_dropdown
53
+ )
54
+
55
+ # Layout configuration
56
+ demo.append(gr.Row([folder_dropdown]))
57
+ demo.append(gr.Row([audio_dropdown]))
58
 
59
+ return demo
 
 
 
 
 
60
 
61
+ # Launch the interface
62
  if __name__ == "__main__":
63
+ app = create_dropdown()
64
+ app.launch()