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'; }