If you’re able and willing to self-host, I’ve developed a pretty great system that automates my entire process. The app I’m using on mobile is also available on iOS
zemmy.cc/post/25500

I’ve just created my perfect automated music setup, including getting new recommendations - Zemmy
cross-posted from: https://zemmy.cc/post/25499 [https://zemmy.cc/post/25499] >
You may have seen my previous post over here
[https://lemmy.dbzer0.com/post/770169], after I had just gotten everything setup
initially. > > I’ve now expanded this with an additional script, a github repo
[https://github.com/Zetaphor/personal-auto-radio], and proper documentation. > >
Here’s a cleaner explanation: > > I’ve taken on the challenge of self-hosting
more of the services I regularly depend on. The latest target is Spotify. This
meant I needed a simple and convenient way to listen to my music from anywhere,
get new music into my collection, and also still receive recommendations based
on my interests and listening habits. > > I now have what I think is the pretty
ideal setup, here’s what it includes: > > * A 24/7 radio station that plays my
entire catalog (link here if you’re interested [radio.zetaphor.com/]). This is
powered by Azuracast [https://www.azuracast.com/] along with the scripts in the
repo. The station link is using the Public Pages feature in Azuracast with a
bunch of custom CSS. > > * A Spotify-like experience that also supports mobile
and offline. This is powered by Navidrome [https://www.navidrome.org/] for
web/desktop and Substreamer [https://substreamerapp.com/] for mobile.
Substreamer connects to Navidrome using the Subsonic API. > > * A couple of
scripts that allow me to easily download tracks/albums/playlists from Spotify
and Youtube. I used these to bootstrap the collection and export my existing
playlists from each service. > > * A couple of scripts that automatically grab
my latest recommendations from Spotify and LastFM, add them into Navidrome, and
provide me a nearly fully automated way to parse out tracks I want to keep
permanently. > > That last point is the most interesting part in my opinion.
Both scripts run on a weekly cron job that downloads my Discover Weekly playlist
from spotify, and current recommendations from LastFM. It then creates a
playlist for each source for that weeks collection and moves it into Navidrome.
> > I then browse that weeks playlist at my leisure, using the “star” feature in
Navidrome to decide what to keep. Once I’m done I run another script manually
that takes all of the starred tracks from those two playlists and moves them
into my catalog, and then deletes the remaining tracks and the playlists. > >
This means I just need to go through and listen to recommendations and click a
button on what to keep, and the rest is discarded automatically. It really
doesn’t get any simpler than this! > > What remains will then be available for
on-demand playback through Navidrome and also added to the full catalog that
powers the 24/7 radio station. > > FAQs from the last thread > > What is being
used to download from X? - spotdl is being used for Spotify.pytube is being used
for LastFM and Youtube. spotdl is also just downloading tracks from Youtube
under the hood. > > What is the audio quality of the downloaded tracks? - Since
these are coming from Youtube, everything is a 128kbps VBR Opus codec. It’s
certainly not FLAC but it’s good enough for my enjoyment.