diff --git a/app/api/artist.py b/app/api/artist.py index 18fee334..c1f95796 100644 --- a/app/api/artist.py +++ b/app/api/artist.py @@ -18,6 +18,7 @@ from app.api.apischemas import ( from app.config import UserConfig from app.db.userdata import SimilarArtistTable +from app.lib.sortlib import sort_tracks from app.serializers.album import serialize_for_card_many from app.serializers.artist import serialize_for_cards, serialize_for_card @@ -47,9 +48,7 @@ def get_artist(path: ArtistHashSchema, query: TrackLimitSchema): return {"error": "Artist not found"}, 404 tracks = TrackStore.get_tracks_by_trackhashes(entry.trackhashes) - tracks = sorted(tracks, key=lambda t: t.title) - tracks = sorted(tracks, key= lambda t: t.playcount, reverse=True) - print([{t.title, t.playcount, t.trackhash} for t in tracks]) + tracks = sort_tracks(tracks, key="playcount", reverse=True) tcount = len(tracks) artist = entry.artist @@ -164,8 +163,7 @@ def get_all_artist_tracks(path: ArtistHashSchema): Returns all artists by a given artist. """ tracks = ArtistStore.get_artist_tracks(path.artisthash) - tracks = sorted(tracks, key=lambda t: t.title) - tracks = sorted(tracks, key= lambda t: t.playcount, reverse=True) + tracks = sort_tracks(tracks, key="playcount", reverse=True) return serialize_tracks(tracks) diff --git a/app/api/playlist.py b/app/api/playlist.py index b05cde8c..4ab9fa1e 100644 --- a/app/api/playlist.py +++ b/app/api/playlist.py @@ -18,6 +18,7 @@ from app.lib import playlistlib from app.lib.albumslib import sort_by_track_no from app.lib.home.recentlyadded import get_recently_added_playlist from app.lib.home.recentlyplayed import get_recently_played_playlist +from app.lib.sortlib import sort_tracks from app.models.playlist import Playlist from app.serializers.playlist import serialize_for_card from app.serializers.track import serialize_tracks @@ -75,7 +76,7 @@ def get_artist_trackhashes(artisthash: str): Returns a list of trackhashes for an artist. """ tracks = TrackStore.get_tracks_by_artisthash(artisthash) - tracks = sorted(tracks, key= lambda t: t.playcount, reverse=True) + tracks = sort_tracks(tracks, key="playcount", reverse=True) return [t.trackhash for t in tracks] diff --git a/app/lib/sortlib.py b/app/lib/sortlib.py index 3198f855..a1f49944 100644 --- a/app/lib/sortlib.py +++ b/app/lib/sortlib.py @@ -26,6 +26,12 @@ def sort_tracks(tracks: list[Track], key: str, reverse: bool = False): return flatten([sort_by_track_no(list(g)) for k, g in groups]) + # INFO: sort tracks by title for a fallback value + tracks = sorted(tracks, key=lambda t: t.title) + + if key == "title": + return tracks + return sorted(tracks, key=sortfunc, reverse=reverse)