sam12345324 commited on
Commit
20b882d
·
verified ·
1 Parent(s): e174367

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +8 -10
main.py CHANGED
@@ -1,4 +1,4 @@
1
- from fastapi import FastAPI, UploadFile, File, Form
2
  from fastapi.responses import FileResponse
3
  import tempfile
4
  import shutil
@@ -77,6 +77,7 @@ async def merge_endpoint(
77
  files: list[UploadFile] = File(...),
78
  orig_vol: float = Form(1.0),
79
  music_vol: float = Form(0.5),
 
80
  ):
81
  temp_dir = tempfile.mkdtemp()
82
  try:
@@ -93,31 +94,28 @@ async def merge_endpoint(
93
  # Separate video and audio files
94
  video_files = [f for f in saved_files if f.lower().endswith(".mp4")]
95
  audio_files = [
96
- f
97
- for f in saved_files
98
- if f.lower().endswith((".mp3", ".wav", ".aac", ".m4a", ".ogg"))
99
  ]
100
 
101
  if len(saved_files) < 2:
 
102
  return {"error": "Please upload at least 2 files (videos or audios)."}
103
 
104
- # Prepare output path
105
  output_path = os.path.join(temp_dir, "merged_output.mp4")
106
 
107
- # Merge videos and audios
108
  merge_videos_and_audios(video_files, audio_files, output_path, temp_dir)
109
 
110
- # Return merged file
 
 
111
  return FileResponse(output_path, media_type="video/mp4", filename="merged_output.mp4")
112
 
113
  except Exception as e:
 
114
  error_msg = f"Error: {str(e)}\n\n{traceback.format_exc()}"
115
  logger.error(error_msg)
116
  return {"error": error_msg}
117
 
118
- finally:
119
- shutil.rmtree(temp_dir, ignore_errors=True)
120
-
121
  # Optional: log public URL
122
  def log_api_url():
123
  url = os.getenv("SPACE_PUBLIC_URL")
 
1
+ from fastapi import FastAPI, UploadFile, File, Form, BackgroundTasks
2
  from fastapi.responses import FileResponse
3
  import tempfile
4
  import shutil
 
77
  files: list[UploadFile] = File(...),
78
  orig_vol: float = Form(1.0),
79
  music_vol: float = Form(0.5),
80
+ background_tasks: BackgroundTasks,
81
  ):
82
  temp_dir = tempfile.mkdtemp()
83
  try:
 
94
  # Separate video and audio files
95
  video_files = [f for f in saved_files if f.lower().endswith(".mp4")]
96
  audio_files = [
97
+ f for f in saved_files if f.lower().endswith((".mp3", ".wav", ".aac", ".m4a", ".ogg"))
 
 
98
  ]
99
 
100
  if len(saved_files) < 2:
101
+ shutil.rmtree(temp_dir, ignore_errors=True)
102
  return {"error": "Please upload at least 2 files (videos or audios)."}
103
 
 
104
  output_path = os.path.join(temp_dir, "merged_output.mp4")
105
 
 
106
  merge_videos_and_audios(video_files, audio_files, output_path, temp_dir)
107
 
108
+ # Schedule directory removal after response is sent
109
+ background_tasks.add_task(shutil.rmtree, temp_dir, ignore_errors=True)
110
+
111
  return FileResponse(output_path, media_type="video/mp4", filename="merged_output.mp4")
112
 
113
  except Exception as e:
114
+ shutil.rmtree(temp_dir, ignore_errors=True)
115
  error_msg = f"Error: {str(e)}\n\n{traceback.format_exc()}"
116
  logger.error(error_msg)
117
  return {"error": error_msg}
118
 
 
 
 
119
  # Optional: log public URL
120
  def log_api_url():
121
  url = os.getenv("SPACE_PUBLIC_URL")