From 00249bcbed7ef4c9bc4948a7b4e4cba7e499b86f Mon Sep 17 00:00:00 2001 From: xRangerDE Date: Fri, 13 Feb 2026 13:00:27 +0100 Subject: [PATCH] Germanize queue/download wording and clip errors (v3.8.4) Align visible queue and clip messages to German terminology, remove remaining mixed English labels, and reuse resilient streamlink command resolution for clip downloads to keep behavior consistent across environments. --- typescript-version/package-lock.json | 4 ++-- typescript-version/package.json | 2 +- typescript-version/src/index.html | 8 ++++---- typescript-version/src/main.ts | 17 +++++++++-------- typescript-version/src/renderer-queue.ts | 2 +- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/typescript-version/package-lock.json b/typescript-version/package-lock.json index f1337c4..ce1f485 100644 --- a/typescript-version/package-lock.json +++ b/typescript-version/package-lock.json @@ -1,12 +1,12 @@ { "name": "twitch-vod-manager", - "version": "3.8.3", + "version": "3.8.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "twitch-vod-manager", - "version": "3.8.3", + "version": "3.8.4", "license": "MIT", "dependencies": { "axios": "^1.6.0", diff --git a/typescript-version/package.json b/typescript-version/package.json index 53494e1..4a0ab19 100644 --- a/typescript-version/package.json +++ b/typescript-version/package.json @@ -1,6 +1,6 @@ { "name": "twitch-vod-manager", - "version": "3.8.3", + "version": "3.8.4", "description": "Twitch VOD Manager - Download Twitch VODs easily", "main": "dist/main.js", "author": "xRangerDE", diff --git a/typescript-version/src/index.html b/typescript-version/src/index.html index f487f8b..e5a0d1b 100644 --- a/typescript-version/src/index.html +++ b/typescript-version/src/index.html @@ -58,13 +58,13 @@ 00:01:00 - +
-
Leer lassen = Part 1
+
Leer lassen = Teil 1
@@ -335,7 +335,7 @@

Updates

-

Version: v3.8.3

+

Version: v3.8.4

@@ -346,7 +346,7 @@
Nicht verbunden - v3.8.3 + v3.8.4 diff --git a/typescript-version/src/main.ts b/typescript-version/src/main.ts index b32c558..dc2f0ed 100644 --- a/typescript-version/src/main.ts +++ b/typescript-version/src/main.ts @@ -8,7 +8,7 @@ import { autoUpdater } from 'electron-updater'; // ========================================== // CONFIG & CONSTANTS // ========================================== -const APP_VERSION = '3.8.3'; +const APP_VERSION = '3.8.4'; const UPDATE_CHECK_URL = 'http://24-music.de/version.json'; // Paths @@ -1155,7 +1155,7 @@ function downloadVODPart( return; } - const genericError = lastErrorLine || `Streamlink Exit-Code ${code ?? -1}`; + const genericError = lastErrorLine || `Streamlink Fehlercode ${code ?? -1}`; appendDebugLog('download-part-failed', { itemId, filename, code, error: genericError }); resolve({ success: false, error: genericError }); }); @@ -1599,10 +1599,10 @@ ipcMain.handle('download-clip', async (_, clipUrl: string) => { if (match1) clipId = match1[1]; else if (match2) clipId = match2[1]; - else return { success: false, error: 'Invalid clip URL' }; + else return { success: false, error: 'Ungueltige Clip-URL' }; const clipInfo = await getClipInfo(clipId); - if (!clipInfo) return { success: false, error: 'Clip not found' }; + if (!clipInfo) return { success: false, error: 'Clip nicht gefunden' }; const folder = path.join(config.download_path, 'Clips', clipInfo.broadcaster_name); fs.mkdirSync(folder, { recursive: true }); @@ -1611,8 +1611,9 @@ ipcMain.handle('download-clip', async (_, clipUrl: string) => { const filename = path.join(folder, `${safeTitle}.mp4`); return new Promise((resolve) => { - const streamlinkPath = getStreamlinkPath(); - const proc = spawn(streamlinkPath, [ + const streamlinkCmd = getStreamlinkCommand(); + const proc = spawn(streamlinkCmd.command, [ + ...streamlinkCmd.prefixArgs, `https://clips.twitch.tv/${clipId}`, 'best', '-o', filename, @@ -1623,12 +1624,12 @@ ipcMain.handle('download-clip', async (_, clipUrl: string) => { if (code === 0 && fs.existsSync(filename)) { resolve({ success: true, filename }); } else { - resolve({ success: false, error: 'Download failed' }); + resolve({ success: false, error: `Download fehlgeschlagen (Exit-Code ${code ?? -1})` }); } }); proc.on('error', () => { - resolve({ success: false, error: 'Streamlink not found' }); + resolve({ success: false, error: 'Streamlink nicht gefunden' }); }); }); }); diff --git a/typescript-version/src/renderer-queue.ts b/typescript-version/src/renderer-queue.ts index 5f03306..5db0f89 100644 --- a/typescript-version/src/renderer-queue.ts +++ b/typescript-version/src/renderer-queue.ts @@ -22,7 +22,7 @@ async function clearCompleted(): Promise { function getQueueStatusLabel(item: QueueItem): string { if (item.status === 'completed') return 'Abgeschlossen'; if (item.status === 'error') return 'Fehlgeschlagen'; - if (item.status === 'downloading') return 'Lauft'; + if (item.status === 'downloading') return 'Laeuft'; return 'Wartet'; }