Lamara091 commited on
Commit
92b4d48
verified
1 Parent(s): e88502f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -50
app.py CHANGED
@@ -1,5 +1,5 @@
1
- import gradio as gr
2
  import yt_dlp
 
3
  import os
4
  from glob import glob
5
 
@@ -7,52 +7,49 @@ def convert_time_to_seconds(time_str):
7
  hours, minutes, seconds = map(int, time_str.split(':'))
8
  return hours * 3600 + minutes * 60 + seconds
9
 
10
- def download_videos(text_input):
11
- lines = text_input.strip().split('\n')
12
- output_files = []
13
-
14
- for line in lines:
15
- parts = line.split(',')
16
- if len(parts) == 3:
17
- video_url = parts[0].strip()
18
- start_time = parts[1].strip()
19
- end_time = parts[2].strip()
20
-
21
- start_seconds = convert_time_to_seconds(start_time)
22
- end_seconds = convert_time_to_seconds(end_time)
23
-
24
- options = {
25
- 'format': 'bestaudio/best',
26
- 'postprocessors': [{
27
- 'key': 'FFmpegExtractAudio',
28
- 'preferredcodec': 'mp3',
29
- 'preferredquality': '128',
30
- }],
31
- 'outtmpl': '%(title)s.%(ext)s',
32
- 'postprocessor_args': [
33
- '-ss', str(start_seconds),
34
- '-to', str(end_seconds)
35
- ]
36
- }
37
-
38
- with yt_dlp.YoutubeDL(options) as ydl:
39
- ydl.download([video_url])
40
-
41
- download_files = glob('*.mp3')
42
- for file in download_files:
43
- os.rename(file, os.path.join('downloaded', file))
44
- output_files.append(os.path.join('downloaded', file))
45
-
46
- if output_files:
47
- return output_files
48
- return "No MP3 file found."
49
-
50
- interface = gr.Interface(
51
- fn=download_videos,
52
- inputs=gr.Textbox(label="Enter video URL, start time, end time per line (comma separated)", placeholder="URL, Start Time (HH:MM:SS), End Time (HH:MM:SS)\nExample:\nhttps://youtu.be/xxx, 00:00:00, 00:05:00", lines=10),
53
- outputs=gr.File(label="Downloaded MP3 Files"),
54
- title="Batch YouTube Video Downloader",
55
- description="Enter each video's URL, start time, and end time on a new line, separated by commas."
56
- )
57
-
58
- interface.launch()
 
 
1
  import yt_dlp
2
+ import gradio as gr
3
  import os
4
  from glob import glob
5
 
 
7
  hours, minutes, seconds = map(int, time_str.split(':'))
8
  return hours * 3600 + minutes * 60 + seconds
9
 
10
+ def download_video(video_url, start_time, end_time):
11
+ start_seconds = convert_time_to_seconds(start_time)
12
+ end_seconds = convert_time_to_seconds(end_time)
13
+ options = {
14
+ 'format': 'bestaudio/best',
15
+ 'postprocessors': [{
16
+ 'key': 'FFmpegExtractAudio',
17
+ 'preferredcodec': 'mp3',
18
+ 'preferredquality': '128',
19
+ }],
20
+ 'outtmpl': '%(title)s.%(ext)s',
21
+ 'postprocessor_args': [
22
+ '-ss', str(start_seconds),
23
+ '-to', str(end_seconds)
24
+ ]
25
+ }
26
+
27
+ with yt_dlp.YoutubeDL(options) as ydl:
28
+ ydl.download([video_url])
29
+
30
+ # 鏌ユ壘鍜屾彁渚涗笅杞界殑鏂囦欢
31
+ download_files = glob('*.mp3')
32
+ if download_files:
33
+ return f"Download successful: {download_files[0]}", download_files[0]
34
+ return "No MP3 file found.", None
35
+
36
+ def setup_interface():
37
+ interface = gr.Interface(
38
+ fn=download_video,
39
+ inputs=[
40
+ gr.Textbox(lines=2, placeholder="Enter YouTube video URL here...", label="YouTube Video URL"),
41
+ gr.Textbox(placeholder="Start Time (e.g., 00:00:00)", label="Start Time (HH:MM:SS)"),
42
+ gr.Textbox(placeholder="End Time (e.g., 00:05:30)", label="End Time (HH:MM:SS)")
43
+ ],
44
+ outputs=[
45
+ gr.Text(label="Status Message"),
46
+ gr.File(label="Download MP3")
47
+ ],
48
+ title="YouTube Video Downloader",
49
+ description="Enter YouTube video URL and specify start and end times to download audio as MP3."
50
+ )
51
+ return interface
52
+
53
+ if __name__ == "__main__":
54
+ iface = setup_interface()
55
+ iface.launch()