With the caveat that it's imperfect and not packaged correctly, you can check out music2json.ts at https://github.com/CharlesWiltgen/music2json to get the idea. In short, I just dump a JSON of artists, albums (with genres), and tracks, feed that to an LLM, and then ask it to recommend other artists and albums I might like (e.g. "Please recommend additional compilations, artists, and albums I may like based on this music library"). The biggest problem at the moment is that it will often recommend things that are already in my library.
> it will often recommend things that are already in my library.
This is going to be a really dumb suggestion, not because I think you are dumb, but because LLMs are. This happened to me the other day:
Me: "I'm going to upload a list of [things]; please suggest similar [things]. Please do not repeat any [things] on the original list."
ChatGPT°: [Blah blah blah] <List with about 1/5 repeats>
Me: "Please do not repeat any [things] on my original list."
ChatGPT: "I'm sorry, here's a list of [things] without any [things] on the list you gave me: <list without any repeats>"
No idea why that worked, and maybe it doesn't always.
°Bog-standard web interface, not an API request with a system prompt. No idea which ChatGPT flavor; I can't be bothered to keep track. Maybe doing something fancy stops that from happening in the first place, but I was dumb enough to try something dumb and whaddaya know?
Oh, forgot to say: the new list only repeated about 2/3 of the (real) suggestions it gave me. (I naively expected it to reproduce the list, with all the repeated output pruned, which would have been fine with me.) It also gave me a further eight or ten new suggestions, most of which I thought were better than its originals.
I know we're not supposed to anthropomorsize these things, but it sure felt like giving a task to a teenager who half-asses it, and only does the real work after you call them out on it. It's a brave new world, that has such creatures in it.