fix: sort order on artists

This commit is contained in:
cwilvx
2024-08-22 20:09:00 +03:00
parent b4bc9cb3cd
commit 312f81b324
3 changed files with 11 additions and 6 deletions
+3 -5
View File
@@ -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)
+2 -1
View File
@@ -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]
+6
View File
@@ -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)