convert mp3 to ogg
This commit is contained in:
parent
f41b8aabd9
commit
888da4b299
|
|
@ -2,6 +2,7 @@ from chain_service.services.file_uploader import FileUploaderService
|
||||||
|
|
||||||
from .planfix_client import PlanfixClientDependency
|
from .planfix_client import PlanfixClientDependency
|
||||||
from .uploaded_file_repository import UploadedFileRepositoryDependency
|
from .uploaded_file_repository import UploadedFileRepositoryDependency
|
||||||
|
from .audio_converter_service import AudioConverterServiceDependency
|
||||||
|
|
||||||
from fastapi import Depends
|
from fastapi import Depends
|
||||||
from typing import Annotated
|
from typing import Annotated
|
||||||
|
|
@ -10,9 +11,12 @@ from typing import Annotated
|
||||||
def get_file_uploader_service(
|
def get_file_uploader_service(
|
||||||
planfix_client: PlanfixClientDependency,
|
planfix_client: PlanfixClientDependency,
|
||||||
uploaded_file_repository: UploadedFileRepositoryDependency,
|
uploaded_file_repository: UploadedFileRepositoryDependency,
|
||||||
|
audio_converter_service: AudioConverterServiceDependency,
|
||||||
) -> FileUploaderService:
|
) -> FileUploaderService:
|
||||||
return 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,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
from chain_service.database.models.chain import Chain
|
from chain_service.database.models.chain import Chain
|
||||||
from chain_service.database.models.uploaded_file import UploadedFile
|
from chain_service.database.models.uploaded_file import UploadedFile
|
||||||
from chain_service.repositories.uploaded_file import UploadedFileRepository
|
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 loguru import logger
|
||||||
|
from httpx import AsyncClient
|
||||||
from planfix_client import PlanfixClient
|
from planfix_client import PlanfixClient
|
||||||
from planfix_client.exceptions import PlanfixAPIError
|
from planfix_client.exceptions import PlanfixAPIError
|
||||||
|
|
||||||
|
|
@ -13,9 +16,12 @@ class FileUploaderService:
|
||||||
self,
|
self,
|
||||||
planfix_client: PlanfixClient,
|
planfix_client: PlanfixClient,
|
||||||
uploaded_file_repository: UploadedFileRepository,
|
uploaded_file_repository: UploadedFileRepository,
|
||||||
|
audio_converter_service: AudioConverterService,
|
||||||
):
|
):
|
||||||
|
self.client = AsyncClient()
|
||||||
self.planfix_client = planfix_client
|
self.planfix_client = planfix_client
|
||||||
self.uploaded_file_repository = uploaded_file_repository
|
self.uploaded_file_repository = uploaded_file_repository
|
||||||
|
self.audio_converter_service = audio_converter_service
|
||||||
|
|
||||||
async def upload_from_chain(self, chain: Chain):
|
async def upload_from_chain(self, chain: Chain):
|
||||||
file_urls_to_upload = list()
|
file_urls_to_upload = list()
|
||||||
|
|
@ -35,7 +41,22 @@ class FileUploaderService:
|
||||||
if uploaded_file:
|
if uploaded_file:
|
||||||
return
|
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(
|
await self.uploaded_file_repository.upsert(
|
||||||
UploadedFile(file_id=uploaded_file_id, file_url=file_url)
|
UploadedFile(file_id=uploaded_file_id, file_url=file_url)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user