diff --git a/src/main.ts b/src/main.ts index 1531636..2aa57a6 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3002,6 +3002,11 @@ async function processDownloadMergeGroup( return { success: false, error: 'Streamlink fehlt.' }; } + const ffmpegReady = await ensureFfmpegInstalled(); + if (!ffmpegReady) { + return { success: false, error: 'FFmpeg fehlt.' }; + } + const streamer = mg.items[0].streamer.replace(/[^a-zA-Z0-9_-]/g, ''); const date = new Date(mg.items[0].date); const dateStr = `${date.getDate().toString().padStart(2, '0')}.${(date.getMonth() + 1).toString().padStart(2, '0')}.${date.getFullYear()}`; @@ -3165,7 +3170,7 @@ async function processDownloadMergeGroup( }); }, (currentPart, totalParts) => { - const overallProgress = 90 + (currentPart / totalParts) * 10; // split = 90-100% + const overallProgress = 90 + ((currentPart - 1) / totalParts) * 10; // split = 90-100% onProgress({ id: item.id, progress: overallProgress, @@ -3179,6 +3184,10 @@ async function processDownloadMergeGroup( ); if (!splitResult.success) { + // Clean up any partial split files + for (const partFile of splitResult.files) { + try { if (fs.existsSync(partFile)) fs.unlinkSync(partFile); } catch { } + } return { success: false, error: 'FFmpeg Split fehlgeschlagen.' }; } diff --git a/src/renderer-queue.ts b/src/renderer-queue.ts index 921d21e..a39cda6 100644 --- a/src/renderer-queue.ts +++ b/src/renderer-queue.ts @@ -219,7 +219,7 @@ function renderQueue(): void { ? ' ' : ''; const mergeMetaExtra = isMergeGroup - ? ` (${item.mergeGroup!.items.length} VODs)` + ? ` (${UI_TEXT.mergeGroup.metaLabel.replace('{count}', String(item.mergeGroup!.items.length))})` : ''; return `