MediaRouter / app /api /video.py
basyx's picture
Upload 142 files
fba6023 verified
Raw
History Blame Contribute Delete
3.3 kB
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 compress_video, normalize_video
from app.operations.concat import concat_video
from app.operations.convert import convert_video
from app.operations.crop import crop_video
from app.operations.extract_audio import mute_video, remove_audio, replace_audio
from app.operations.merge import merge_video
from app.operations.resize import pad_video, resize_video, scale_video
from app.operations.rotate import (
change_bitrate,
change_fps,
change_speed,
reverse_video,
rotate_video,
slow_motion,
)
from app.operations.subtitles import burn_subtitles, soft_subtitles
from app.operations.thumbnails import (
blur_video,
denoise_video,
extract_frames,
generate_gif,
sharpen_video,
thumbnail,
)
from app.operations.trim import trim_video
from app.operations.watermark import overlay_video, watermark_video
from app.services.media_service import Operation
router = APIRouter(prefix="/v1/video", tags=["video"])
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("/compress", "video.compress", compress_video)
operation_route("/resize", "video.resize", resize_video)
operation_route("/convert", "video.convert", convert_video)
operation_route("/crop", "video.crop", crop_video)
operation_route("/merge", "video.merge", merge_video)
operation_route("/trim", "video.trim", trim_video)
operation_route("/concat", "video.concat", concat_video)
operation_route("/rotate", "video.rotate", rotate_video)
operation_route("/reverse", "video.reverse", reverse_video)
operation_route("/overlay", "video.overlay", overlay_video)
operation_route("/watermark", "video.watermark", watermark_video)
operation_route("/frames", "video.extract_frames", extract_frames)
operation_route("/gif", "video.gif", generate_gif)
operation_route("/thumbnail", "video.thumbnail", thumbnail)
operation_route("/replace-audio", "video.replace_audio", replace_audio)
operation_route("/remove-audio", "video.remove_audio", remove_audio)
operation_route("/mute", "video.mute", mute_video)
operation_route("/speed", "video.speed", change_speed)
operation_route("/speed-up", "video.speed_up", change_speed)
operation_route("/slow-motion", "video.slow_motion", slow_motion)
operation_route("/fps", "video.fps", change_fps)
operation_route("/bitrate", "video.bitrate", change_bitrate)
operation_route("/subtitles/burn", "video.subtitles.burn", burn_subtitles)
operation_route("/subtitles/soft", "video.subtitles.soft", soft_subtitles)
operation_route("/scale", "video.scale", scale_video)
operation_route("/pad", "video.pad", pad_video)
operation_route("/blur", "video.blur", blur_video)
operation_route("/sharpen", "video.sharpen", sharpen_video)
operation_route("/denoise", "video.denoise", denoise_video)
operation_route("/normalize", "video.normalize", normalize_video)