fix(backend): don't abort cascade on yt-dlp non-zero exit (e.g. video not available)

spawnYtdlp now always resolves so the hasAudio() cascade continues when a
single YTM result is geo-blocked or unavailable. Error is still logged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-06-19 10:23:59 +02:00
1 parent 88d3e336c8
commit 4804023a98
1 file changed
+7 -4
+7 -4
View File
@@ -173,10 +173,13 @@ async function downloadTrack({ jobId, artist, rawArtist, albumArtist, title, alb
.filter(l => l.trim() && !l.startsWith('[debug]')) .filter(l => l.trim() && !l.startsWith('[debug]'))
.forEach(l => log(jobId, l.trim())); .forEach(l => log(jobId, l.trim()));
}); });
proc.on('error', reject); proc.on('error', resolve);
proc.on('close', code => proc.on('close', code => {
(code === 0 || code === 101) ? resolve() : reject(new Error(`yt-dlp code ${code}: ${stderr.slice(-300)}`)) // Treat all non-zero exits as "no result" so the cascade continues.
); // Fatal errors (network, bad args) are logged via stderr above; hasAudio() decides outcome.
if (code !== 0 && code !== 101) log(jobId, `⚠️ yt-dlp exit ${code}: ${stderr.slice(-200).trim()}`);
resolve();
});
}); });
const YTM_SONGS_PARAM = 'EgWKAQIIAWoKEAkQBRAKEAMQBA%3D%3D'; const YTM_SONGS_PARAM = 'EgWKAQIIAWoKEAkQBRAKEAMQBA%3D%3D';