I haven't used it in a while, but this was a big advantage of Pandora for me. With pandora, you start a 'station' with a few seed songs and as you like/dislike songs, it keeps refining the station.
The downside to Pandora is that you can't choose your music. You can seed a station with a specific song, but that song might not be the first one played.
What I really liked with Pandora was that it was really good at producing endless playlists for me to listen to at work or car rides. I was a paid subscriber when I worked night shifts and drove a lot more. Spotify stations are really hit or miss. Sometimes the Spotify stations dive into foreign music and I can't find a way to specify which language of music I want to hear.
I have good and bad experiences with Pandora. The biggest issue was telling it I didn't like a song and having it recommend another mix of the same song. Dislike that one and get yet another mix of the same song
I worked in a shop where 8 employees were constantly voting amongst ourselves to up-vote/down-vote each song as it appeared on a given Pandora station/playlist that was broadcast throughout the shop. This made for a great sense of consensus and discussion amongst a group of music nerds.
However, one issue with Pandora was that no-matter the genre it would inevitably throw in a song by Morrissey, which would be met by a round of groans and calls by everyone in the shop to aggressively down-vote the song. The joke became that all roads eventually lead to Morrissey.
I have had a great time exploring the entrances to various rabbit roles with pandora, but once I try to actually descend deeper and really narrow the focus I experience the same behavior. It's like it just doesn't have a big enough catalog and is pulling from too small a pool.
Like some others have said, I've found Deezer's flow (shuffle algorithm) to give the best results. I've been using it for a few years now, so I have no idea how fast it could learn for a newcomer.
They just added a "moods" choice to flow a few days ago: focus, sport, party... I think there are 6 of them. But they added it only to the mobile app and not the webapp which is the one I use the most, so I can't really say how good they are.
Deezer flow is my go to for this, and they've recently added moods, which really helps.
I find I often start flow, get a few songs in and jump onto an album based on the currently playing song. Really great for discovery of music I've not heard (before or for a while).
Spotify seems to always end up merging back to some generic tracks that I've heard so many times before.
That said, I've been training Deezer (they have both like and dislike, as well as never recommend song / artist) for over 10 years, so they better get it right!
I spent the latter half of 2019 trying to build this as a startup. Ultimately I pivoted (now I do newsletter recommendations instead), but if I hadn't made some mistakes I think it could've gotten more traction. Mostly I should've simplified the idea to make it easier to build. If anyone's interested in working on this, here's what I would do:
(But first some background: The way I saw it, you can split music recommendation into two tasks: (1) picking a song you already know that should be played right now, and (2) picking a new song you've never heard of before. (Music recommendation is unique in this way since in most other domains there isn't much value in re-recommending items). I think #1 is more important, and if you nail that, you can do a so-so job of #2 and still have a good system.)
Make a website that imports your Last.fm history. Organize the history into sessions (say, groups of listen events with a >= 30 minute gap in between). Feed those sessions into a collaborative filtering library like Surprise[1], as a CSV of `<session ID>, <song ID>, 1` (1 being a rating--in this case we only have positive ratings). Then make some UI that lets people create and export playlists. e.g. I pick a couple seed songs from my listening history, then the app uses Surprise to suggest more songs. Present a list of 10 songs at a time. Click a song to add it, and have a "skip all" button that gets a new list of songs. Save these interactions as ratings--e.g. if I skip a song, that's a -1 rating for this playlist. For some percentage of the suggestions (20% by default? Make it configurable), use Last.fm's or Spotify's API to pick a new song not in your history, based on the songs in the current playlist. Also sometimes include songs that were added to the playlist previously--if you skip them, they get removed from the playlist. Then you can spend a couple minutes every week refreshing your playlists. Export the playlists to Spotify/Apple Music/whatever.
As you get more users, you can do "regular" collaborative filtering (i.e. with different users) to recommend new songs instead of relying on external APIs. There are probably lots of other things you could do too--e.g. scrape wikipedia to figure out what artists have done collaborations or something. In general I think the right approach is to build a model for artist similarity rather than individual song similarity. At recommendation time, you pick an artist and then suggest their top songs (and sometimes pick an artist already in the user's history, and suggest songs they haven't heard yet--that's even easier).
This is the simplest thing I can think of that would solve my "I love music but I listen to the same old songs everyday because I'm busy and don't want to futz around with curating my music library" problem. You wouldn't have to waste time building a crappy custom music app, and users won't have to use said crappy custom music app (speaking from personal experience...). You wouldn't have to deal with music rights or integrating with Spotify/Apple Music since you're not actually playing any music.
If you want to go further with it, you could get traction first and then launch your own streaming service or something. (Reminds me a bit of Readwise starting with just highlights and then launching their own reader recently). I think it'd be neat to make an indie streaming service--kind of like Bandcamp but with an algorithm to help you find the good stuff. Let users upload and listen to their own MP3s so it can still work with popular music. Of course it'd be nicer for users in the short term if you just made deals with the big record labels, however this would help you not end up in Spotify's position of pivoting to podcasts so you can get out of paying record labels. And then maybe in a few decades all the good music won't be on the big labels anyway :).
Anyway if anyone is remotely interested in building something like this, I'll be your first user. I really need it. Otherwise I'll probably build it myself at some point in the next year or two as a side project.