sudo-soldier commited on
Commit
136c2ab
·
verified ·
1 Parent(s): e3aff9f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -21
app.py CHANGED
@@ -3,10 +3,10 @@ import yt_dlp
3
  import os
4
  from pydub import AudioSegment
5
 
6
- def process_youtube_url(url, uploaded_file, state):
7
  try:
8
  filename = None
9
-
10
  if url:
11
  ydl_opts = {
12
  'format': 'bestaudio/best',
@@ -16,33 +16,33 @@ def process_youtube_url(url, uploaded_file, state):
16
 
17
  with yt_dlp.YoutubeDL(ydl_opts) as ydl:
18
  info = ydl.extract_info(url, download=True)
19
-
20
  filename = os.path.join('downloads', f"{info['id']}.webm")
21
 
22
  elif uploaded_file:
23
- filename = uploaded_file.name
24
 
25
  else:
26
- raise ValueError("No YouTube URL or MP3 file provided.")
27
 
28
  if not os.path.exists(filename):
29
- raise FileNotFoundError(f"File not found: {filename}")
30
 
31
- mp3_filename = 'Ringtone.mp3'
 
32
  audio = AudioSegment.from_file(filename)
33
  audio.export(mp3_filename, format="mp3")
34
 
35
- ringtone_filename_m4a = 'temp_ringtone.m4a'
36
- ringtone_audio = AudioSegment.from_file(mp3_filename)[:20000] # 20 sec clip
37
- ringtone_audio.export(ringtone_filename_m4a, format="mp4")
38
-
39
- ringtone_filename_m4r = 'Apple.m4r'
40
- os.rename(ringtone_filename_m4a, ringtone_filename_m4r)
41
 
42
- return mp3_filename, ringtone_filename_m4r, state
43
 
44
- except Exception:
45
- return None, None, state
 
46
 
47
  with gr.Blocks() as interface:
48
  gr.HTML("""
@@ -51,16 +51,15 @@ with gr.Blocks() as interface:
51
  """)
52
 
53
  with gr.Row():
54
- youtube_url = gr.Textbox(label="Enter YouTube URL ", placeholder="Paste the URL here...")
55
- mp3_upload = gr.File(label="Upload MP3 (Optional)", type="filepath")
56
- state = gr.State()
57
-
58
  with gr.Row():
59
  mp3_download = gr.File(label="Android Ringtone")
60
  iphone_ringtone = gr.File(label="iPhone Ringtone")
61
 
62
  process_button = gr.Button("Create Ringtones")
63
- process_button.click(process_youtube_url, inputs=[youtube_url, mp3_upload, state], outputs=[mp3_download, iphone_ringtone])
64
 
65
  interface.launch()
66
 
@@ -75,3 +74,4 @@ interface.launch()
75
 
76
 
77
 
 
 
3
  import os
4
  from pydub import AudioSegment
5
 
6
+ def process_youtube_url(url, uploaded_file):
7
  try:
8
  filename = None
9
+
10
  if url:
11
  ydl_opts = {
12
  'format': 'bestaudio/best',
 
16
 
17
  with yt_dlp.YoutubeDL(ydl_opts) as ydl:
18
  info = ydl.extract_info(url, download=True)
19
+
20
  filename = os.path.join('downloads', f"{info['id']}.webm")
21
 
22
  elif uploaded_file:
23
+ filename = uploaded_file
24
 
25
  else:
26
+ return None, None
27
 
28
  if not os.path.exists(filename):
29
+ return None, None
30
 
31
+ # Convert to MP3
32
+ mp3_filename = "Ringtone.mp3"
33
  audio = AudioSegment.from_file(filename)
34
  audio.export(mp3_filename, format="mp3")
35
 
36
+ # Create ringtone (first 20 seconds)
37
+ ringtone_filename_m4r = "Apple.m4r"
38
+ ringtone_audio = AudioSegment.from_file(mp3_filename)[:20000]
39
+ ringtone_audio.export(ringtone_filename_m4r, format="mp4")
 
 
40
 
41
+ return mp3_filename, ringtone_filename_m4r
42
 
43
+ except Exception as e:
44
+ print(f"Error: {e}")
45
+ return None, None
46
 
47
  with gr.Blocks() as interface:
48
  gr.HTML("""
 
51
  """)
52
 
53
  with gr.Row():
54
+ youtube_url = gr.Textbox(label="Enter YouTube URL", placeholder="Paste the URL here...")
55
+ mp3_upload = gr.File(label="Upload MP3 (Optional)")
56
+
 
57
  with gr.Row():
58
  mp3_download = gr.File(label="Android Ringtone")
59
  iphone_ringtone = gr.File(label="iPhone Ringtone")
60
 
61
  process_button = gr.Button("Create Ringtones")
62
+ process_button.click(process_youtube_url, inputs=[youtube_url, mp3_upload], outputs=[mp3_download, iphone_ringtone])
63
 
64
  interface.launch()
65
 
 
74
 
75
 
76
 
77
+