From 93bbd07487a7f1cc6bb13a51bcb94777ae255806 Mon Sep 17 00:00:00 2001 From: Jos Vooges | STH Date: Sun, 30 Aug 2026 21:33:00 +0200 Subject: [PATCH] Fail loudly on subtitle download and write sidecar with retry (media-node 1.3.2). Co-authored-by: Cursor --- apps/admin-ui/src/app/downloads/page.tsx | 56 ++++- .../migration.sql | 3 + apps/master-api/prisma/schema.prisma | 4 + apps/master-api/src/app.ts | 9 + apps/master-api/src/downloads/routes.ts | 10 + apps/master-api/src/downloads/service.ts | 219 +++++++++++++++--- apps/master-api/src/opensubtitles/client.ts | 16 +- .../src/opensubtitles/org-client.ts | 3 + apps/master-api/src/websocket/manager.ts | 49 ++++ deploy/docker/Dockerfile.master-api | 2 +- node/media-node/cmd/media-node/main.go | 2 +- node/media-node/internal/control/client.go | 72 +++++- .../media-node/internal/importmedia/import.go | 47 ++-- packages/protocol/src/index.ts | 22 ++ 14 files changed, 455 insertions(+), 59 deletions(-) create mode 100644 apps/master-api/prisma/migrations/20260830210000_subtitle_content/migration.sql diff --git a/apps/admin-ui/src/app/downloads/page.tsx b/apps/admin-ui/src/app/downloads/page.tsx index b03620e..03e0b56 100644 --- a/apps/admin-ui/src/app/downloads/page.tsx +++ b/apps/admin-ui/src/app/downloads/page.tsx @@ -55,6 +55,10 @@ interface JobRow { movieYear: number | null; posterUrl: string | null; error: string | null; + hasSubtitle?: boolean; + subtitlePath?: string | null; + subtitleError?: string | null; + importedPath?: string | null; } function formatBytes(n: number): string { @@ -317,6 +321,18 @@ export default function DownloadsPage() { loadJobs(); } + async function retrySubtitle(id: string) { + const res = await fetch(`/api/v1/admin/downloads/jobs/${id}/retry-subtitle`, { + method: "POST", + credentials: "include", + }); + const data = await res.json().catch(() => ({})); + if (!res.ok) { + alert(data.error?.message ?? "Ondertitel schrijven mislukt"); + } + loadJobs(); + } + return ( <>