feat(merge-split): integrate merge-group pipeline into processQueue and cleanup handlers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
xRangerDE 2026-03-19 17:53:55 +01:00
parent 8501bd17f7
commit 409c976df0

View File

@ -3258,7 +3258,11 @@ async function processQueue(): Promise<void> {
for (let attempt = 1; attempt <= maxAttempts; attempt++) { for (let attempt = 1; attempt <= maxAttempts; attempt++) {
appendDebugLog('queue-item-attempt', { itemId: item.id, attempt, max: maxAttempts }); appendDebugLog('queue-item-attempt', { itemId: item.id, attempt, max: maxAttempts });
const result = await downloadVOD(item, (progress) => { const result = item.mergeGroup
? await processDownloadMergeGroup(item, (progress) => {
mainWindow?.webContents.send('download-progress', progress);
})
: await downloadVOD(item, (progress) => {
mainWindow?.webContents.send('download-progress', progress); mainWindow?.webContents.send('download-progress', progress);
}); });
@ -3784,6 +3788,18 @@ ipcMain.handle('remove-from-queue', (_, id: string) => {
appendDebugLog('queue-item-removed-active-cancelled', { id }); appendDebugLog('queue-item-removed-active-cancelled', { id });
} }
// Clean up merge-group temp files (must run for any merge group, not just active)
const removedItem = downloadQueue.find(item => item.id === id);
if (removedItem?.mergeGroup) {
const mg = removedItem.mergeGroup;
for (const key of Object.keys(mg.downloadedFiles)) {
try { if (fs.existsSync(mg.downloadedFiles[Number(key)])) fs.unlinkSync(mg.downloadedFiles[Number(key)]); } catch { }
}
if (mg.mergedFile) {
try { if (fs.existsSync(mg.mergedFile)) fs.unlinkSync(mg.mergedFile); } catch { }
}
}
downloadQueue = downloadQueue.filter(item => item.id !== id); downloadQueue = downloadQueue.filter(item => item.id !== id);
saveQueue(downloadQueue); saveQueue(downloadQueue);
emitQueueUpdated(); emitQueueUpdated();