From 33d82bc9af8540fbab5555caf79bd56d3f8f74b2 Mon Sep 17 00:00:00 2001 From: Koper Date: Fri, 13 Oct 2023 10:03:13 +0100 Subject: [PATCH 1/2] Force MP3 download --- server/reflector/views/transcripts.py | 11 +++++++---- www/app/transcripts/recorder.tsx | 3 +++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/server/reflector/views/transcripts.py b/server/reflector/views/transcripts.py index 410839d7..c8fdf6c2 100644 --- a/server/reflector/views/transcripts.py +++ b/server/reflector/views/transcripts.py @@ -13,6 +13,7 @@ from fastapi import ( WebSocket, WebSocketDisconnect, ) +from fastapi.responses import FileResponse from fastapi_pagination import Page, paginate from pydantic import BaseModel, Field from reflector.db import database, transcripts @@ -21,7 +22,6 @@ from reflector.settings import settings from reflector.utils.audio_waveform import get_audio_waveform from starlette.concurrency import run_in_threadpool -from ._range_requests_response import range_requests_response from .rtc_offer import PipelineEvent, RtcOffer, rtc_offer_base router = APIRouter() @@ -356,10 +356,13 @@ async def transcript_get_audio_mp3( if not transcript.audio_mp3_filename.exists(): raise HTTPException(status_code=404, detail="Audio not found") - return range_requests_response( - request, + truncated_id = str(transcript.id).split("-")[0] + filename = f"recording_{truncated_id}.mp3" + + return FileResponse( transcript.audio_mp3_filename, - content_type="audio/mp3", + headers={"Content-Disposition": f"attachment; filename={filename}"}, + media_type="audio/mpeg", ) diff --git a/www/app/transcripts/recorder.tsx b/www/app/transcripts/recorder.tsx index a550a840..c1ba0774 100644 --- a/www/app/transcripts/recorder.tsx +++ b/www/app/transcripts/recorder.tsx @@ -311,6 +311,9 @@ export default function Recorder(props: RecorderProps) { From abf9dbcaf1a8f99f293aeb3a9df136c5f55043a6 Mon Sep 17 00:00:00 2001 From: Koper Date: Fri, 13 Oct 2023 10:17:36 +0100 Subject: [PATCH 2/2] Keep range_requests_response --- server/reflector/views/transcripts.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/reflector/views/transcripts.py b/server/reflector/views/transcripts.py index c8fdf6c2..10e30b26 100644 --- a/server/reflector/views/transcripts.py +++ b/server/reflector/views/transcripts.py @@ -13,7 +13,6 @@ from fastapi import ( WebSocket, WebSocketDisconnect, ) -from fastapi.responses import FileResponse from fastapi_pagination import Page, paginate from pydantic import BaseModel, Field from reflector.db import database, transcripts @@ -22,6 +21,7 @@ from reflector.settings import settings from reflector.utils.audio_waveform import get_audio_waveform from starlette.concurrency import run_in_threadpool +from ._range_requests_response import range_requests_response from .rtc_offer import PipelineEvent, RtcOffer, rtc_offer_base router = APIRouter() @@ -359,10 +359,11 @@ async def transcript_get_audio_mp3( truncated_id = str(transcript.id).split("-")[0] filename = f"recording_{truncated_id}.mp3" - return FileResponse( + return range_requests_response( + request, transcript.audio_mp3_filename, + content_type="audio/mpeg", headers={"Content-Disposition": f"attachment; filename={filename}"}, - media_type="audio/mpeg", )