pc translate sentences
This commit is contained in:
@@ -24,6 +24,7 @@ from fastapi import (
|
||||
Request,
|
||||
UploadFile,
|
||||
)
|
||||
from pydantic import ValidationError
|
||||
from fastapi.responses import FileResponse, RedirectResponse, Response
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from starlette.concurrency import run_in_threadpool
|
||||
@@ -47,6 +48,7 @@ from .models import (
|
||||
SentenceExplanationRequest,
|
||||
SentenceExplanationResponse,
|
||||
AdminSubtitleTranslationResponse,
|
||||
LocalSubtitleTranslationRequest,
|
||||
SubtitleRetranslateRequest,
|
||||
SubtitleTranslationResponse,
|
||||
PasswordResetRequest,
|
||||
@@ -364,12 +366,28 @@ def create_app(
|
||||
"/api/v1/videos/{video_hash}/subtitle-translation",
|
||||
response_model=SubtitleTranslationResponse,
|
||||
)
|
||||
def translate_subtitles(
|
||||
async def translate_subtitles(
|
||||
request: Request,
|
||||
video_hash: str = SHA256_PATH,
|
||||
user: AuthenticatedUser = Depends(current_user),
|
||||
) -> SubtitleTranslationResponse:
|
||||
del user
|
||||
raw = await request.body()
|
||||
local_document = None
|
||||
if raw.strip():
|
||||
try:
|
||||
payload = LocalSubtitleTranslationRequest.model_validate_json(raw)
|
||||
local_document = SentenceBoundaryDocument(
|
||||
video_hash=video_hash,
|
||||
duration_ms=payload.duration_ms,
|
||||
algorithm_version=payload.algorithm_version,
|
||||
sentences=payload.sentences,
|
||||
)
|
||||
except ValidationError as exc:
|
||||
raise HTTPException(status_code=422, detail=exc.errors()) from exc
|
||||
try:
|
||||
if local_document is not None:
|
||||
return application.state.subtitle_translations.ensure_from_local(local_document)
|
||||
return application.state.subtitle_translations.ensure(video_hash)
|
||||
except KeyError:
|
||||
raise HTTPException(status_code=404, detail="Course is not available.") from None
|
||||
|
||||
Reference in New Issue
Block a user