If you navigate to a playlist page and run this code in your browser console, it should fetch all the songs:
(async () => { const songRows = document.querySelectorAll('div[data-testid="song-row"]'); for (const row of songRows) { const link = row.querySelector('a[href^="/song/"]'); const title = row.querySelector('span[title]').title; const id = link.href.split('/song/')[1]; const response = await fetch(`https://cdn1.suno.ai/${id}.mp3`); const blob = await response.blob(); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `${title}.mp3`; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); } })();
https://github.com/yt-dlp/yt-dlp/issues/10368
and that's the normally the most comprehensive.
https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites....
(When I tried the "generic" command suggested in that issue, it downloaded only the first song in the playlist.)
If you navigate to a playlist page and run this code in your browser console, it should fetch all the songs: