Playlist code: painfully rewritten & refractored (e.g. correctly deals with files that have been deleted from disk but are still in the playlist)