def sort_key(self): return (self.album_key, self("~#disc"), self("~#track"), human(self("artistsort")), self.get("musicbrainz_artistid", ""), human(self.get("title", "")), self.get("~filename"))
def sort_by_func(tag): """Returns a fast sort function for a specific tag (or pattern). Some keys are already in the sort cache, so we can use them.""" def title_sort(song): key = song.sort_key return (key[5], key) def artist_sort(song): key = song.sort_key return (key[3], key) if callable(tag): return lambda song: (human(tag(song)), song.sort_key) elif tag == "albumsort": return lambda song: song.sort_key elif tag == "title": return title_sort elif tag == "artistsort": return artist_sort elif tag.startswith("~#") and "~" not in tag[2:]: return lambda song: (song(tag), song.sort_key) return lambda song: (human(song(tag)), song.sort_key)
def __album_key(self): return (human(self("albumsort", "")), self.get("album_grouping_key") or self.get("labelid") or self.get("musicbrainz_albumid") or "")