Is there a way to set metadata that marks a song to "Not play when friends are over"?
I have songs that I have in my iTunes library that are not "happy" party songs. But if I have friends over I'd like to just play my whole iTunes library but have an option to turn on that is the equivalent of "My guy friends are over so don't play any songs from my five albums of Spice Girls" option.
I know I can make a playlist of songs but I don't want to make a huge playlist. I'd rather mark the songs I don't want to play and just have them not play. Sort of a solo vs group music option.
Sounds like a job for a Smart Playlist. Smart Playlists allow you to specify rules, and build a list automatically that takes your rules into account. As you add and remove songs, the list gets automatically updated.
So you could for example make a rule that says [Artist] [does not contain] [Spice Girls] or you could use some other metadata to define the list, like genre, file type, etc.
Smart Playlists can contain multiple rules, and the rules can be nested. This allows you to make very complex requirements.
You can also make a rule that adds songs based on whether they are contained in another playlist. That lets you create a combined playlist from two or more other lists, so you could make a smart playlist that includes both romantic ballads and thrash metal hits if you want. Rules can be configured based on ALL of the rules matching, or ANY of them matching (example here.) That means you can make a playlist that contains only songs which are in both lists (intersection) or songs that appear in either list (union.) With this approach, you could make a playlist called "Only Play When I'm Alone" or something, and create a smart playlist that excludes those songs.