Spaces:
Runtime error
Runtime error
add lookup to 'uploads' in base s3 dir
Browse files
main.py
CHANGED
@@ -33,45 +33,45 @@ class CutRequestInput(BaseModel):
|
|
33 |
data: CutRequest
|
34 |
|
35 |
def download_file(news_name: str, quote_filename: str, new_filename: str = "source.mp3"):
|
36 |
-
logger.debug(f"Downloading file: news_name={news_name}, quote_filename={quote_filename}")
|
37 |
-
s3_directory = f'{aws_env}/{news_name}'
|
38 |
s3_object_key = f'{s3_directory}/{quote_filename}'
|
39 |
local_file = os.path.join(temp_dir, new_filename)
|
40 |
|
41 |
try:
|
42 |
# Ensure the download directory exists
|
43 |
os.makedirs(temp_dir, exist_ok=True)
|
44 |
-
logger.debug(f"Downloading from S3: bucket={s3_bucket_name}, key={s3_object_key}, local_file={local_file}")
|
45 |
|
46 |
s3_client.download_file(s3_bucket_name, s3_object_key, local_file)
|
47 |
-
logger.debug(f"File downloaded and saved as: {local_file}")
|
48 |
|
49 |
# Return the local_file path
|
50 |
return local_file
|
51 |
|
52 |
except ClientError as e:
|
53 |
if e.response['Error']['Code'] == "404":
|
54 |
-
logger.error(f"File not found in S3: {s3_object_key}")
|
55 |
|
56 |
raise HTTPException(status_code=404, detail=f"The file {quote_filename} does not exist in S3.")
|
57 |
else:
|
58 |
-
logger.error(f"S3 download error: {str(e)}")
|
59 |
|
60 |
raise HTTPException(status_code=500, detail=f"Failed to download file from S3: {str(e)}")
|
61 |
except Exception as e:
|
62 |
-
logger.exception(f"Unexpected error in download_file: {str(e)}")
|
63 |
|
64 |
raise HTTPException(status_code=500, detail=f"An unexpected error occurred: {str(e)}")
|
65 |
|
66 |
|
67 |
@app.post("/cut-audio")
|
68 |
async def cut_audio(request: CutRequestInput):
|
69 |
-
logger.debug(f"Received request: {request}")
|
70 |
|
71 |
try:
|
72 |
|
73 |
cut_request = request.data
|
74 |
-
logger.debug(f"Parsed cut_request: {cut_request}")
|
75 |
|
76 |
|
77 |
print(f"Received request: {cut_request}")
|
@@ -79,7 +79,7 @@ async def cut_audio(request: CutRequestInput):
|
|
79 |
download_file(cut_request.news_name, cut_request.quote_filename)
|
80 |
for i, segment in enumerate(cut_request.segments):
|
81 |
start, end = segment
|
82 |
-
logger.debug(f"Processing segment {i}: start={start}, end={end}")
|
83 |
|
84 |
output_file = f"/tmp/cut_quote_{i}_{cut_request.quote_filename}"
|
85 |
try:
|
@@ -90,21 +90,21 @@ async def cut_audio(request: CutRequestInput):
|
|
90 |
.run()
|
91 |
)
|
92 |
except ffmpeg.Error as e:
|
93 |
-
logger.error(f"FFMPEG Error: {str(e)}")
|
94 |
|
95 |
raise HTTPException(status_code=500, detail=str(e))
|
96 |
try:
|
97 |
s3_output_key = f'cut_outs/{aws_env}/{cut_request.news_id}/quote_segment_{i}.mp3'
|
98 |
s3_client.upload_file(output_file, s3_bucket_name, s3_output_key)
|
99 |
except Exception as e:
|
100 |
-
logger.error(f"S3 Upload Error: {str(e)}")
|
101 |
|
102 |
raise HTTPException(status_code=500, detail=f"Failed to upload file to S3: {e}")
|
103 |
|
104 |
return {"message": "Audio cut successfully"}
|
105 |
|
106 |
except Exception as e:
|
107 |
-
logger.exception("Unexpected error in cut_audio")
|
108 |
raise HTTPException(status_code=500, detail=f"Unexpected error: {str(e)}")
|
109 |
|
110 |
@app.post("/merge_audio/{output_key}")
|
|
|
33 |
data: CutRequest
|
34 |
|
35 |
def download_file(news_name: str, quote_filename: str, new_filename: str = "source.mp3"):
|
36 |
+
# logger.debug(f"Downloading file: news_name={news_name}, quote_filename={quote_filename}")
|
37 |
+
s3_directory = f'uploads/{aws_env}/{news_name}'
|
38 |
s3_object_key = f'{s3_directory}/{quote_filename}'
|
39 |
local_file = os.path.join(temp_dir, new_filename)
|
40 |
|
41 |
try:
|
42 |
# Ensure the download directory exists
|
43 |
os.makedirs(temp_dir, exist_ok=True)
|
44 |
+
# logger.debug(f"Downloading from S3: bucket={s3_bucket_name}, key={s3_object_key}, local_file={local_file}")
|
45 |
|
46 |
s3_client.download_file(s3_bucket_name, s3_object_key, local_file)
|
47 |
+
# logger.debug(f"File downloaded and saved as: {local_file}")
|
48 |
|
49 |
# Return the local_file path
|
50 |
return local_file
|
51 |
|
52 |
except ClientError as e:
|
53 |
if e.response['Error']['Code'] == "404":
|
54 |
+
# logger.error(f"File not found in S3: {s3_object_key}")
|
55 |
|
56 |
raise HTTPException(status_code=404, detail=f"The file {quote_filename} does not exist in S3.")
|
57 |
else:
|
58 |
+
# logger.error(f"S3 download error: {str(e)}")
|
59 |
|
60 |
raise HTTPException(status_code=500, detail=f"Failed to download file from S3: {str(e)}")
|
61 |
except Exception as e:
|
62 |
+
# logger.exception(f"Unexpected error in download_file: {str(e)}")
|
63 |
|
64 |
raise HTTPException(status_code=500, detail=f"An unexpected error occurred: {str(e)}")
|
65 |
|
66 |
|
67 |
@app.post("/cut-audio")
|
68 |
async def cut_audio(request: CutRequestInput):
|
69 |
+
# logger.debug(f"Received request: {request}")
|
70 |
|
71 |
try:
|
72 |
|
73 |
cut_request = request.data
|
74 |
+
# logger.debug(f"Parsed cut_request: {cut_request}")
|
75 |
|
76 |
|
77 |
print(f"Received request: {cut_request}")
|
|
|
79 |
download_file(cut_request.news_name, cut_request.quote_filename)
|
80 |
for i, segment in enumerate(cut_request.segments):
|
81 |
start, end = segment
|
82 |
+
# logger.debug(f"Processing segment {i}: start={start}, end={end}")
|
83 |
|
84 |
output_file = f"/tmp/cut_quote_{i}_{cut_request.quote_filename}"
|
85 |
try:
|
|
|
90 |
.run()
|
91 |
)
|
92 |
except ffmpeg.Error as e:
|
93 |
+
# logger.error(f"FFMPEG Error: {str(e)}")
|
94 |
|
95 |
raise HTTPException(status_code=500, detail=str(e))
|
96 |
try:
|
97 |
s3_output_key = f'cut_outs/{aws_env}/{cut_request.news_id}/quote_segment_{i}.mp3'
|
98 |
s3_client.upload_file(output_file, s3_bucket_name, s3_output_key)
|
99 |
except Exception as e:
|
100 |
+
# logger.error(f"S3 Upload Error: {str(e)}")
|
101 |
|
102 |
raise HTTPException(status_code=500, detail=f"Failed to upload file to S3: {e}")
|
103 |
|
104 |
return {"message": "Audio cut successfully"}
|
105 |
|
106 |
except Exception as e:
|
107 |
+
# logger.exception("Unexpected error in cut_audio")
|
108 |
raise HTTPException(status_code=500, detail=f"Unexpected error: {str(e)}")
|
109 |
|
110 |
@app.post("/merge_audio/{output_key}")
|