Exemple #1
0
 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"))
Exemple #2
0
    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)
Exemple #3
0
 def __album_key(self):
     return (human(self("albumsort", "")),
             self.get("album_grouping_key") or self.get("labelid") or
             self.get("musicbrainz_albumid") or "")