add mp3 support for yt vid
Browse filesalso fixed bug with wav files remaining when show_amount_of_files_and_file_dur was unchecked.
app.py
CHANGED
@@ -2,7 +2,9 @@ import gradio as gr, glob, os, auditok, zipfile, wave, pytube.exceptions, libros
|
|
2 |
from pytube import YouTube
|
3 |
from moviepy.editor import VideoFileClip
|
4 |
|
5 |
-
def download_video(url):
|
|
|
|
|
6 |
try:
|
7 |
yt = YouTube(url)
|
8 |
except pytube.exceptions.RegexMatchError:
|
@@ -12,18 +14,24 @@ def download_video(url):
|
|
12 |
video_path = f"{video.default_filename}"
|
13 |
video_clip = VideoFileClip(video_path)
|
14 |
audio_clip = video_clip.audio
|
15 |
-
|
|
|
|
|
|
|
16 |
audio_clip.close()
|
17 |
video_clip.close()
|
18 |
for removalmp4 in glob.glob("*.mp4"):
|
19 |
os.remove(removalmp4)
|
20 |
-
|
|
|
21 |
|
22 |
def split_audio_from_yt_video(mindur, maxdur, name_for_split_files, show_amount_of_files_and_file_dur):
|
23 |
if show_amount_of_files_and_file_dur == True:
|
24 |
gr.Warning(f"show_amount_of_files_and_file_dur set to True. This will take longer if your audio file is long.")
|
25 |
-
if not os.path.exists("output.wav"):
|
26 |
-
|
|
|
|
|
27 |
if mindur == maxdur:
|
28 |
raise gr.Error(f"Cannot split mindur={mindur} and maxdur={maxdur}, min and max are the same number.")
|
29 |
elif mindur > maxdur:
|
@@ -31,7 +39,7 @@ def split_audio_from_yt_video(mindur, maxdur, name_for_split_files, show_amount_
|
|
31 |
elif name_for_split_files == None:
|
32 |
raise gr.Error("Split files name cannot be empty! This will be replaced with an alternative naming style in the future.")
|
33 |
else:
|
34 |
-
audio_path = "output.wav"
|
35 |
audio_regions = auditok.split(
|
36 |
audio_path,
|
37 |
min_dur=mindur,
|
@@ -49,6 +57,8 @@ def split_audio_from_yt_video(mindur, maxdur, name_for_split_files, show_amount_
|
|
49 |
for audio_file in audio_files:
|
50 |
zip_file.write(audio_file, os.path.basename(audio_file))
|
51 |
if show_amount_of_files_and_file_dur == False:
|
|
|
|
|
52 |
return "Files split successfully!\nCheck below for zipped files.", zip_file_name
|
53 |
elif show_amount_of_files_and_file_dur == True:
|
54 |
largest_file = ("", 0)
|
@@ -142,16 +152,18 @@ with gr.Blocks(theme='NoCrypt/miku', title="Global Dataset Maker") as app:
|
|
142 |
gr.Markdown(
|
143 |
"This Space will create a dataset for you, all automatically. **Please be warned that due to not having a GPU on this Space, some steps might take longer to complete.**"
|
144 |
)
|
|
|
145 |
with gr.Tabs():
|
146 |
with gr.TabItem("Download Video"):
|
147 |
with gr.Row():
|
148 |
with gr.Column():
|
149 |
with gr.Row():
|
150 |
url = gr.Textbox(label="URL")
|
|
|
151 |
convertion = gr.Button("Download", variant='primary')
|
152 |
convertion.click(
|
153 |
fn=download_video,
|
154 |
-
inputs=[url],
|
155 |
outputs=gr.Text(label="Output")
|
156 |
)
|
157 |
with gr.TabItem("Split audio files"):
|
@@ -212,5 +224,4 @@ with gr.Blocks(theme='NoCrypt/miku', title="Global Dataset Maker") as app:
|
|
212 |
[upload],
|
213 |
[gr.Text(label="Result")]
|
214 |
)
|
215 |
-
|
216 |
app.launch()
|
|
|
2 |
from pytube import YouTube
|
3 |
from moviepy.editor import VideoFileClip
|
4 |
|
5 |
+
def download_video(url, download_as):
|
6 |
+
if download_as == "mp3":
|
7 |
+
gr.Warning("MP3 support is experimental at the moment, but is in current testing.")
|
8 |
try:
|
9 |
yt = YouTube(url)
|
10 |
except pytube.exceptions.RegexMatchError:
|
|
|
14 |
video_path = f"{video.default_filename}"
|
15 |
video_clip = VideoFileClip(video_path)
|
16 |
audio_clip = video_clip.audio
|
17 |
+
if download_as == "wav":
|
18 |
+
audio_clip.write_audiofile("output.wav")
|
19 |
+
elif download_as == "mp3":
|
20 |
+
audio_clip.write_audiofile("output.mp3")
|
21 |
audio_clip.close()
|
22 |
video_clip.close()
|
23 |
for removalmp4 in glob.glob("*.mp4"):
|
24 |
os.remove(removalmp4)
|
25 |
+
|
26 |
+
#return "Finished downloading! Please proceed to next tab."
|
27 |
|
28 |
def split_audio_from_yt_video(mindur, maxdur, name_for_split_files, show_amount_of_files_and_file_dur):
|
29 |
if show_amount_of_files_and_file_dur == True:
|
30 |
gr.Warning(f"show_amount_of_files_and_file_dur set to True. This will take longer if your audio file is long.")
|
31 |
+
if not os.path.exists("output.wav") and os.path.exists("output.mp3"):
|
32 |
+
gr.Warning("Output.wav does not exist, but output.mp3 does. Splitting MP3 file instead...")
|
33 |
+
if not os.path.exists("output.mp3") and os.path.exists("output.wav"):
|
34 |
+
gr.Warning("Output.mp3 does not exist, but output.wav does. Splitting WAV file instead...")
|
35 |
if mindur == maxdur:
|
36 |
raise gr.Error(f"Cannot split mindur={mindur} and maxdur={maxdur}, min and max are the same number.")
|
37 |
elif mindur > maxdur:
|
|
|
39 |
elif name_for_split_files == None:
|
40 |
raise gr.Error("Split files name cannot be empty! This will be replaced with an alternative naming style in the future.")
|
41 |
else:
|
42 |
+
audio_path = "output.wav" if not os.path.exists("output.mp3") else "output.mp3"
|
43 |
audio_regions = auditok.split(
|
44 |
audio_path,
|
45 |
min_dur=mindur,
|
|
|
57 |
for audio_file in audio_files:
|
58 |
zip_file.write(audio_file, os.path.basename(audio_file))
|
59 |
if show_amount_of_files_and_file_dur == False:
|
60 |
+
for file2 in glob.glob("*.wav"):
|
61 |
+
os.remove(file2)
|
62 |
return "Files split successfully!\nCheck below for zipped files.", zip_file_name
|
63 |
elif show_amount_of_files_and_file_dur == True:
|
64 |
largest_file = ("", 0)
|
|
|
152 |
gr.Markdown(
|
153 |
"This Space will create a dataset for you, all automatically. **Please be warned that due to not having a GPU on this Space, some steps might take longer to complete.**"
|
154 |
)
|
155 |
+
gr.HTML("<h1> MP3 file support does work for downloading a video only (for now).")
|
156 |
with gr.Tabs():
|
157 |
with gr.TabItem("Download Video"):
|
158 |
with gr.Row():
|
159 |
with gr.Column():
|
160 |
with gr.Row():
|
161 |
url = gr.Textbox(label="URL")
|
162 |
+
download_as = gr.Radio(["wav", "mp3"], label="Audio format output", value="wav", info="What should the audio format be output as?")
|
163 |
convertion = gr.Button("Download", variant='primary')
|
164 |
convertion.click(
|
165 |
fn=download_video,
|
166 |
+
inputs=[url, download_as],
|
167 |
outputs=gr.Text(label="Output")
|
168 |
)
|
169 |
with gr.TabItem("Split audio files"):
|
|
|
224 |
[upload],
|
225 |
[gr.Text(label="Result")]
|
226 |
)
|
|
|
227 |
app.launch()
|