Adityadn commited on
Commit
4b00a9a
·
verified ·
1 Parent(s): 989d721

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +54 -8
app.py CHANGED
@@ -71,11 +71,17 @@
71
  # # Launch the Gradio interface
72
  # iface.launch()
73
 
74
- import requests
75
- import gradio as gr
76
  import os
77
  import json
 
78
  import ffmpeg
 
 
 
 
 
 
 
79
 
80
  # Function to convert video to audio using ffmpeg
81
  def convert_video_to_audio(video_path):
@@ -93,9 +99,25 @@ def convert_video_to_audio(video_path):
93
  except Exception as e:
94
  return f"Error converting video: {str(e)}"
95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  # Function to recognize audio from URL or uploaded file
97
  def recognize_audio(choice, url, file):
98
- api_url = os.getenv("API_URL", "https://api.audd.io/").strip('"')
99
  params = {
100
  "return": "apple_music,spotify",
101
  "api_token": os.getenv("API_TOKEN")
@@ -105,8 +127,22 @@ def recognize_audio(choice, url, file):
105
  if choice == "URL":
106
  if not url:
107
  return "Please enter a valid URL."
108
- params['url'] = url
109
- response = requests.post(api_url, data=params)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
 
111
  # Check if file is uploaded
112
  elif choice == "Upload File":
@@ -117,8 +153,6 @@ def recognize_audio(choice, url, file):
117
  file_extension = file.split('.')[-1].lower()
118
  audio_file_path = file
119
 
120
- video_formats = ['3gp', 'asf', 'avi', 'divx', 'flv', 'm2ts', 'm4v', 'mkv', 'mov', 'mp4', 'mpeg', 'mpg', 'mts', 'ts', 'vob', 'webm', 'wmv', 'xvid']
121
-
122
  if file_extension in video_formats:
123
  # Convert video to audio file (mp3 format)
124
  audio_file_path = convert_video_to_audio(file)
@@ -180,12 +214,23 @@ def recognize_audio(choice, url, file):
180
  except Exception as e:
181
  return f"Error parsing response: {str(e)}"
182
 
 
 
 
 
 
 
 
 
 
 
 
183
  # Gradio Interface
184
  interface = gr.Interface(
185
  fn=recognize_audio,
186
  inputs=[
187
  gr.Radio(["URL", "Upload File"], label="Select Input Method"),
188
- gr.Textbox(label="Enter Audio URL", placeholder="https://example.com/audio.mp3"),
189
  gr.File(label="Upload Audio or Video File", type="filepath") # Menggunakan filepath agar sesuai dengan Gradio
190
  ],
191
  outputs=gr.Markdown(label="Recognition Result"),
@@ -195,4 +240,5 @@ interface = gr.Interface(
195
 
196
  # Run Gradio App
197
  if __name__ == "__main__":
 
198
  interface.launch()
 
71
  # # Launch the Gradio interface
72
  # iface.launch()
73
 
 
 
74
  import os
75
  import json
76
+ import requests
77
  import ffmpeg
78
+ import gradio as gr
79
+ import tempfile
80
+ import threading
81
+ import time
82
+
83
+ # Video formats that are supported
84
+ video_formats = ['3gp', 'asf', 'avi', 'divx', 'flv', 'm2ts', 'm4v', 'mkv', 'mov', 'mp4', 'mpeg', 'mpg', 'mts', 'ts', 'vob', 'webm', 'wmv', 'xvid']
85
 
86
  # Function to convert video to audio using ffmpeg
87
  def convert_video_to_audio(video_path):
 
99
  except Exception as e:
100
  return f"Error converting video: {str(e)}"
101
 
102
+ # Function to download file from URL
103
+ def download_file(url):
104
+ try:
105
+ response = requests.get(url, stream=True)
106
+ filename = os.path.join("temp_downloads", url.split("/")[-1]) # Save in temp_downloads folder
107
+ os.makedirs("temp_downloads", exist_ok=True)
108
+
109
+ # Save file content
110
+ with open(filename, 'wb') as f:
111
+ for chunk in response.iter_content(chunk_size=8192):
112
+ f.write(chunk)
113
+
114
+ return filename
115
+ except Exception as e:
116
+ return f"Error downloading file: {str(e)}"
117
+
118
  # Function to recognize audio from URL or uploaded file
119
  def recognize_audio(choice, url, file):
120
+ api_url = os.getenv("API_URL")
121
  params = {
122
  "return": "apple_music,spotify",
123
  "api_token": os.getenv("API_TOKEN")
 
127
  if choice == "URL":
128
  if not url:
129
  return "Please enter a valid URL."
130
+
131
+ # Check if the URL ends with a video file extension
132
+ url_extension = url.split('.')[-1].lower()
133
+
134
+ if url_extension in video_formats:
135
+ # Download video and process as video
136
+ video_path = download_file(url)
137
+ if video_path.startswith("Error"):
138
+ return video_path
139
+ audio_file_path = convert_video_to_audio(video_path)
140
+ if audio_file_path.startswith("Error"):
141
+ return audio_file_path
142
+ else:
143
+ # Process URL as audio
144
+ params['url'] = url
145
+ response = requests.post(api_url, data=params)
146
 
147
  # Check if file is uploaded
148
  elif choice == "Upload File":
 
153
  file_extension = file.split('.')[-1].lower()
154
  audio_file_path = file
155
 
 
 
156
  if file_extension in video_formats:
157
  # Convert video to audio file (mp3 format)
158
  audio_file_path = convert_video_to_audio(file)
 
214
  except Exception as e:
215
  return f"Error parsing response: {str(e)}"
216
 
217
+ # Function to cache the audio file and delete it after 15 minutes
218
+ def cache_and_delete_file(audio_file_path):
219
+ # Wait for 15 minutes before deleting the file
220
+ time.sleep(900) # 900 seconds = 15 minutes
221
+
222
+ try:
223
+ os.remove(audio_file_path)
224
+ print(f"File {audio_file_path} has been deleted after 15 minutes.")
225
+ except Exception as e:
226
+ print(f"Error deleting file {audio_file_path}: {str(e)}")
227
+
228
  # Gradio Interface
229
  interface = gr.Interface(
230
  fn=recognize_audio,
231
  inputs=[
232
  gr.Radio(["URL", "Upload File"], label="Select Input Method"),
233
+ gr.Textbox(label="Enter Audio/Video URL", placeholder="https://example.com/audio.mp3 or video.mp4"),
234
  gr.File(label="Upload Audio or Video File", type="filepath") # Menggunakan filepath agar sesuai dengan Gradio
235
  ],
236
  outputs=gr.Markdown(label="Recognition Result"),
 
240
 
241
  # Run Gradio App
242
  if __name__ == "__main__":
243
+ # Launch the Gradio interface
244
  interface.launch()