sudo-soldier commited on
Commit
118a5f9
·
verified ·
1 Parent(s): bfb0ddd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -13
app.py CHANGED
@@ -6,8 +6,10 @@ from pydub import AudioSegment
6
 
7
  def process_youtube_url(url, uploaded_file, state):
8
  log = []
9
-
10
  try:
 
 
11
  if url:
12
  log.append("Starting download...")
13
 
@@ -20,7 +22,7 @@ def process_youtube_url(url, uploaded_file, state):
20
  with yt_dlp.YoutubeDL(ydl_opts) as ydl:
21
  info = ydl.extract_info(url, download=True)
22
  log.append(f"Downloaded: {info['title']}")
23
-
24
  filename = os.path.join('downloads', f"{info['id']}.webm")
25
 
26
  elif uploaded_file:
@@ -30,18 +32,26 @@ def process_youtube_url(url, uploaded_file, state):
30
  else:
31
  raise ValueError("No YouTube URL or MP3 file provided.")
32
 
33
- log.append("Converting audio to MP3 and creating ringtone...")
 
34
 
 
 
 
35
  mp3_filename = 'Ringtone.mp3'
36
- ffmpeg_command = ['ffmpeg', '-i', filename, mp3_filename]
37
- subprocess.run(ffmpeg_command, check=True)
38
  log.append(f"MP3 saved: {mp3_filename}")
39
 
 
 
 
40
  ringtone_filename_m4a = 'temp_ringtone.m4a'
41
- ffmpeg_ringtone_command = ['ffmpeg', '-i', mp3_filename, '-t', '00:00:20', ringtone_filename_m4a]
42
- subprocess.run(ffmpeg_ringtone_command, check=True)
43
  log.append(f"Ringtone saved as M4A: {ringtone_filename_m4a}")
44
 
 
45
  ringtone_filename_m4r = 'Apple.m4r'
46
  os.rename(ringtone_filename_m4a, ringtone_filename_m4r)
47
  log.append(f"Ringtone renamed to .m4r: {ringtone_filename_m4r}")
@@ -54,8 +64,8 @@ def process_youtube_url(url, uploaded_file, state):
54
 
55
  with gr.Blocks() as interface:
56
  gr.HTML("""
57
- <h1>PYTR</h1>
58
- <p>Python YouTube Ringtones<br/>Insert the URL to make ringtones. Upload an MP3 file to convert it too.</p>
59
  """)
60
 
61
  with gr.Row():
@@ -64,11 +74,11 @@ with gr.Blocks() as interface:
64
  state = gr.State()
65
 
66
  with gr.Row():
67
- status_log = gr.Textbox(label="Status Log")
68
- mp3_download = gr.File(label="Download Android Ringtone")
69
- iphone_ringtone = gr.File(label="Download iPhone Ringtone")
70
 
71
- process_button = gr.Button("Create Ringtone")
72
  process_button.click(process_youtube_url, inputs=[youtube_url, mp3_upload, state], outputs=[status_log, mp3_download, iphone_ringtone])
73
 
74
  interface.launch()
 
6
 
7
  def process_youtube_url(url, uploaded_file, state):
8
  log = []
9
+
10
  try:
11
+ filename = None
12
+
13
  if url:
14
  log.append("Starting download...")
15
 
 
22
  with yt_dlp.YoutubeDL(ydl_opts) as ydl:
23
  info = ydl.extract_info(url, download=True)
24
  log.append(f"Downloaded: {info['title']}")
25
+
26
  filename = os.path.join('downloads', f"{info['id']}.webm")
27
 
28
  elif uploaded_file:
 
32
  else:
33
  raise ValueError("No YouTube URL or MP3 file provided.")
34
 
35
+ if not os.path.exists(filename):
36
+ raise FileNotFoundError(f"File not found: {filename}")
37
 
38
+ log.append("Converting audio to MP3 manually...")
39
+
40
+
41
  mp3_filename = 'Ringtone.mp3'
42
+ audio = AudioSegment.from_file(filename)
43
+ audio.export(mp3_filename, format="mp3")
44
  log.append(f"MP3 saved: {mp3_filename}")
45
 
46
+ log.append("Creating ringtone...")
47
+
48
+
49
  ringtone_filename_m4a = 'temp_ringtone.m4a'
50
+ ringtone_audio = AudioSegment.from_file(mp3_filename)[:20000] # 20 sec clip
51
+ ringtone_audio.export(ringtone_filename_m4a, format="mp4")
52
  log.append(f"Ringtone saved as M4A: {ringtone_filename_m4a}")
53
 
54
+
55
  ringtone_filename_m4r = 'Apple.m4r'
56
  os.rename(ringtone_filename_m4a, ringtone_filename_m4r)
57
  log.append(f"Ringtone renamed to .m4r: {ringtone_filename_m4r}")
 
64
 
65
  with gr.Blocks() as interface:
66
  gr.HTML("""
67
+ <h1>P.Y.T.R.</h1>
68
+ <p>Python YouTube Ringtones<br/>insert a URL to make ringtones. Upload an MP3 to convert it too.</p>
69
  """)
70
 
71
  with gr.Row():
 
74
  state = gr.State()
75
 
76
  with gr.Row():
77
+ status_log = gr.Textbox(label="Status")
78
+ mp3_download = gr.File(label="Android Ringtone")
79
+ iphone_ringtone = gr.File(label="iPhone Ringtone")
80
 
81
+ process_button = gr.Button("Create Ringtones")
82
  process_button.click(process_youtube_url, inputs=[youtube_url, mp3_upload, state], outputs=[status_log, mp3_download, iphone_ringtone])
83
 
84
  interface.launch()