diff --git a/backend/lib/ytdlp.js b/backend/lib/ytdlp.js index 4f5067f..2155b67 100644 --- a/backend/lib/ytdlp.js +++ b/backend/lib/ytdlp.js @@ -173,10 +173,13 @@ async function downloadTrack({ jobId, artist, rawArtist, albumArtist, title, alb .filter(l => l.trim() && !l.startsWith('[debug]')) .forEach(l => log(jobId, l.trim())); }); - proc.on('error', reject); - proc.on('close', code => - (code === 0 || code === 101) ? resolve() : reject(new Error(`yt-dlp code ${code}: ${stderr.slice(-300)}`)) - ); + proc.on('error', resolve); + proc.on('close', code => { + // 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';