Spaces:
Running
Running
| from __future__ import annotations | |
| from fastapi import APIRouter, Request | |
| from app.api.media import execute_operation | |
| from app.core.response import SuccessResponse | |
| from app.operations.compress import normalize_audio | |
| from app.operations.concat import concat_audio | |
| from app.operations.convert import convert_audio | |
| from app.operations.extract_audio import ( | |
| extract_audio, | |
| fade_audio, | |
| noise_reduction, | |
| remove_silence, | |
| set_volume, | |
| ) | |
| from app.operations.merge import merge_audio | |
| from app.operations.trim import trim_audio | |
| from app.services.media_service import Operation | |
| router = APIRouter(prefix="/v1/audio", tags=["audio"]) | |
| def operation_route(path: str, name: str, operation: Operation) -> None: | |
| async def endpoint(request: Request) -> SuccessResponse: | |
| return await execute_operation(request, name, operation) | |
| endpoint.__name__ = name.replace(".", "_") | |
| router.add_api_route( | |
| path, endpoint, methods=["POST"], response_model=SuccessResponse, name=name | |
| ) | |
| operation_route("/extract", "audio.extract", extract_audio) | |
| operation_route("/convert", "audio.convert", convert_audio) | |
| operation_route("/normalize", "audio.normalize", normalize_audio) | |
| operation_route("/trim", "audio.trim", trim_audio) | |
| operation_route("/merge", "audio.merge", merge_audio) | |
| operation_route("/concat", "audio.concat", concat_audio) | |
| operation_route("/fade", "audio.fade", fade_audio) | |
| operation_route("/volume", "audio.volume", set_volume) | |
| operation_route("/remove-silence", "audio.remove_silence", remove_silence) | |
| operation_route("/noise-reduction", "audio.noise_reduction", noise_reduction) | |