From 888da4b299aa4acbe0c71ea6f3f8efa32d822c96 Mon Sep 17 00:00:00 2001 From: Robert Date: Tue, 19 Mar 2024 00:24:54 +0700 Subject: [PATCH] convert mp3 to ogg --- .../dependencies/file_uploader_service.py | 6 ++++- chain_service/services/file_uploader.py | 23 ++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/chain_service/dependencies/file_uploader_service.py b/chain_service/dependencies/file_uploader_service.py index 495df3d..a2b3f6d 100644 --- a/chain_service/dependencies/file_uploader_service.py +++ b/chain_service/dependencies/file_uploader_service.py @@ -2,6 +2,7 @@ from chain_service.services.file_uploader import FileUploaderService from .planfix_client import PlanfixClientDependency from .uploaded_file_repository import UploadedFileRepositoryDependency +from .audio_converter_service import AudioConverterServiceDependency from fastapi import Depends from typing import Annotated @@ -10,9 +11,12 @@ from typing import Annotated def get_file_uploader_service( planfix_client: PlanfixClientDependency, uploaded_file_repository: UploadedFileRepositoryDependency, + audio_converter_service: AudioConverterServiceDependency, ) -> FileUploaderService: return FileUploaderService( - planfix_client=planfix_client, uploaded_file_repository=uploaded_file_repository + planfix_client=planfix_client, + uploaded_file_repository=uploaded_file_repository, + audio_converter_service=audio_converter_service, ) diff --git a/chain_service/services/file_uploader.py b/chain_service/services/file_uploader.py index 58ead49..55ec75b 100644 --- a/chain_service/services/file_uploader.py +++ b/chain_service/services/file_uploader.py @@ -1,8 +1,11 @@ from chain_service.database.models.chain import Chain from chain_service.database.models.uploaded_file import UploadedFile from chain_service.repositories.uploaded_file import UploadedFileRepository +from chain_service.services.audio_converter import AudioConverterService +from io import BytesIO from loguru import logger +from httpx import AsyncClient from planfix_client import PlanfixClient from planfix_client.exceptions import PlanfixAPIError @@ -13,9 +16,12 @@ class FileUploaderService: self, planfix_client: PlanfixClient, uploaded_file_repository: UploadedFileRepository, + audio_converter_service: AudioConverterService, ): + self.client = AsyncClient() self.planfix_client = planfix_client self.uploaded_file_repository = uploaded_file_repository + self.audio_converter_service = audio_converter_service async def upload_from_chain(self, chain: Chain): file_urls_to_upload = list() @@ -35,7 +41,22 @@ class FileUploaderService: if uploaded_file: return - uploaded_file_id = await self.planfix_client.upload_file_from_url(file_url) + if file_url.endswith(".mp3"): + + converted_content = await self.audio_converter_service.mp3_to_ogg( + mp3=BytesIO((await self.client.get(file_url)).read()) + ) + + uploaded_file_id = await self.planfix_client.upload_file( + file_content=converted_content + ) + + logger.info("Finished upload") + + else: + uploaded_file_id = await self.planfix_client.upload_file_from_url( + file_url + ) await self.uploaded_file_repository.upsert( UploadedFile(file_id=uploaded_file_id, file_url=file_url)