as long as you're happy
You should note though that the strings above are quite flawed, and in in their current state, contain a lot of redundancy.
Believe it or not, all that it does at the moment is:
get all audio files
limit the list to 8 hours
limit that list to no more than 4 of any artist (this could remove files from the list reducing the running time)
remove dupes (this could further reduce the running time)
the only thing that happens from ~mix
to the end is ~sort=random.
~mix requires a given number of files to mix, and each part (search) of the mix needs a specific percentage or number also, and none of these have been provided above.
one of the problems you're facing here is the ~mix modifier requires a fixed number of files to, erm, well, mix, and that flies in direct conflict with the 8 hour time limit. we could pull from all audio, and then apply the time limit at the end, but this could break the percentages specified in the ~mix.
I'll have a play and see what I can come up with...
....