diff --git a/src-tauri/capabilities/shell.json b/src-tauri/capabilities/shell.json index d881508..5fe39a8 100644 --- a/src-tauri/capabilities/shell.json +++ b/src-tauri/capabilities/shell.json @@ -66,9 +66,9 @@ "args": true }, { - "name": "sh", - "cmd": "sh", - "args": true + "name": "sh", + "cmd": "sh", + "args": true } ] }, @@ -131,9 +131,9 @@ "args": true }, { - "name": "sh", - "cmd": "sh", - "args": true + "name": "sh", + "cmd": "sh", + "args": true } ] } diff --git a/src-tauri/tauri.linux-flatpak.conf.json b/src-tauri/tauri.linux-flatpak.conf.json index f6e82cb..4cceabb 100644 --- a/src-tauri/tauri.linux-flatpak.conf.json +++ b/src-tauri/tauri.linux-flatpak.conf.json @@ -37,7 +37,6 @@ "icons/icon.ico" ], "externalBin": [ - "binaries/yt-dlp", "binaries/deno" ], "resources": { diff --git a/src/App.tsx b/src/App.tsx index d46e48a..62b16b0 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -257,7 +257,10 @@ export default function App({ children }: { children: React.ReactNode }) { const fetchYtDlpVersion = async () => { setIsFetchingYtDlpVersion(true); try { - const command = Command.sidecar('binaries/yt-dlp', ['--version']); + const isFlatpak = await invoke('is_flatpak'); + const command = isFlatpak + ? Command.create('sh', ['-c', `yt-dlp --version`]) + : Command.sidecar('binaries/yt-dlp', ['--version']); const output = await command.execute(); if (output.code === 0) { const version = output.stdout.trim(); diff --git a/src/helpers/use-downloader.ts b/src/helpers/use-downloader.ts index 96fcd7f..1fb44b5 100644 --- a/src/helpers/use-downloader.ts +++ b/src/helpers/use-downloader.ts @@ -196,7 +196,10 @@ export default function useDownloader() { } } - const command = Command.sidecar('binaries/yt-dlp', args); + const isFlatpak = await invoke('is_flatpak'); + const command = isFlatpak + ? Command.create('sh', ['-c', `yt-dlp ${args.map(arg => arg.includes(' ') ? `"${arg}"` : arg).join(' ')}`]) + : Command.sidecar('binaries/yt-dlp', args); let jsonOutput = ''; @@ -557,7 +560,10 @@ export default function useDownloader() { } console.log('Starting download with args:', args); - const command = Command.sidecar('binaries/yt-dlp', args); + const isFlatpak = await invoke('is_flatpak'); + const command = isFlatpak + ? Command.create('sh', ['-c', `yt-dlp ${args.map(arg => arg.includes(' ') ? `"${arg}"` : arg).join(' ')}`]) + : Command.sidecar('binaries/yt-dlp', args); command.on('close', async (data) => { if (data.code !== 0) { diff --git a/src/helpers/use-ytdlp-updater.ts b/src/helpers/use-ytdlp-updater.ts index fc6cec1..50d562b 100644 --- a/src/helpers/use-ytdlp-updater.ts +++ b/src/helpers/use-ytdlp-updater.ts @@ -21,7 +21,13 @@ export function useYtDlpUpdater() { setIsUpdatingYtDlp(true); LOG.info('NEODLP', 'Updating yt-dlp to latest version'); try { - const command = currentPlatform === 'linux' && !isFlatpak ? Command.create('pkexec', ['yt-dlp', '--update-to', ytDlpUpdateChannel]) : Command.sidecar('binaries/yt-dlp', ['--update-to', ytDlpUpdateChannel]); + const command = currentPlatform === 'linux' && isFlatpak + ? ytDlpUpdateChannel === 'nightly' + ? Command.create('sh', ['-c', 'pip3 install -U --pre "yt-dlp[default,curl-cffi]"']) + : Command.create('sh', ['-c', 'pip3 install -U "yt-dlp[default,curl-cffi]"']) + : currentPlatform === 'linux' + ? Command.create('pkexec', ['yt-dlp', '--update-to', ytDlpUpdateChannel]) + : Command.sidecar('binaries/yt-dlp', ['--update-to', ytDlpUpdateChannel]); const output = await command.execute(); if (output.code === 0) { console.log("yt-dlp updated successfully:", output.stdout);