Navidrome can do this with smart playlists. I wouldn’t call it recommendations - it’s not smart enough from that - but you can absolutely create a smart playlist that will randomly pick a given number of songs from certain genres, that are (not) recently played, etc. that will refresh every time it’s accessed
You could implement the schedule play music with just a cron job triggering playback via the API