diff --git a/package-lock.json b/package-lock.json index 8377cac..1411729 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "twitch-vod-manager", - "version": "5.1.0-alpha.2", + "version": "5.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "twitch-vod-manager", - "version": "5.1.0-alpha.2", + "version": "5.0.1", "license": "MIT", "dependencies": { "axios": "^1.6.0", diff --git a/package.json b/package.json index 8bfcf72..244ac0b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "twitch-vod-manager", - "version": "5.1.0-alpha.2", + "version": "5.0.1", "description": "Twitch VOD Manager - Download Twitch VODs easily", "main": "dist/main.js", "author": "xRangerDE", diff --git a/src/main.ts b/src/main.ts index fbc9649..a982dcc 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5373,15 +5373,24 @@ async function processDownloadMergeGroup( const vodWeight = vodDuration / totalDurationSec; const priorWeight = mg.items.slice(0, i).reduce((s, v) => s + parseDuration(v.duration_str), 0) / totalDurationSec; + // Persistente per-part vodProgress, damit Path-A-Ticks (progress=-1, + // 1s-rhythmus mit unknown-total) den determinate Bar nicht auf + // priorWeight zuruecksetzen. Wir merken uns die letzte positive + // Streamlink-Prozentangabe (Path B) und nutzen sie, bis ein neuer + // Wert kommt. Ohne das oszilliert die Bar zwischen indeterminate + // und priorWeight, optisch eingefroren. + let lastVodProgress = 0; const result = await downloadVODPart( vodItem.url, tmpFilename, null, // startTime: null = full VOD null, // endTime: null = full VOD (progress) => { + if (progress.progress > 0 && progress.progress <= 100) { + lastVodProgress = progress.progress; + } // Weighted progress: download phase = 0-70% - const vodProgress = progress.progress > 0 ? progress.progress : 0; - const overallProgress = (priorWeight + vodWeight * (vodProgress / 100)) * 70; + const overallProgress = (priorWeight + vodWeight * (lastVodProgress / 100)) * 70; onProgress({ ...progress, id: item.id, diff --git a/src/renderer-vod-hover.ts b/src/renderer-vod-hover.ts index f754d6e..fae21db 100644 --- a/src/renderer-vod-hover.ts +++ b/src/renderer-vod-hover.ts @@ -12,6 +12,7 @@ interface ActiveHover { vodId: string; intervalId: number; overlay: HTMLElement; + card: HTMLElement; // .vod-card, fuer preview-active toggle (separat vom overlay-host) } const vodStoryboardClientCache = new Map(); @@ -79,8 +80,7 @@ function clearHoverPreview(): void { pendingHoverVodId = null; if (!activeHover) return; window.clearInterval(activeHover.intervalId); - const card = activeHover.overlay.parentElement; - if (card) card.classList.remove('preview-active'); + activeHover.card.classList.remove('preview-active'); // Brief opacity fade-out, then remove from DOM. activeHover.overlay.style.opacity = '0'; const overlayToRemove = activeHover.overlay; @@ -124,20 +124,29 @@ async function activateHoverPreview(card: HTMLElement, vodId: string): Promise { card.classList.add('preview-active'); }); @@ -148,7 +157,7 @@ async function activateHoverPreview(card: HTMLElement, vodId: string): Promise