These recommendations are good. I personally wrote my own Python script to use the Spotify API to get playlists and metadata then download the audio off YouTube.
It's similar to spotdl but the last time I used them, they were only taking the first audio (which could be the music video version). So for my script, I put a filter for duration, prioritize YouTube music, and use keywords like "lyrics" and "official audio" that's more likely to match the Spotify version
It doesn't download as you listen, but it'll do something smart and download all the tracks of a playlist/album/etc by grabbing high-quality audio from Youtube videos (and it magically avoids dreaded music video versions) if you feed it a Spotify URL. It also puts all the metadata in the tracks automatically.
Tip for anyone else that uses this: make sure your playlist is public or it can't download it. That seems really obvious now, but it didn't occur to me initially lol.
Spytify worked last I checked, it pretty much just rips from the audio output stream so it's essentially impossible to block. On the downside without creating a dev api key the metadata is kind of iffy (it will attempt to grab it from somewhere other than spotify without the api key) and being a stream copy it can only copy as fast as they can play.