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