I believe you can do this with beets. I have many fields for labeling songs by characteristics or personal preferences like `rating` then there is a plugin for smart playlists that let you define library queries and turn them into a playlist.
Others are right though the initial set up can be daunting though.