add help text to artist tracks

This commit is contained in:
cwilvx
2024-09-08 12:52:05 +03:00
parent 3e61d86a19
commit ee3c432e9c
+21 -4
View File
@@ -22,7 +22,7 @@ from app.lib.sortlib import sort_tracks
from app.serializers.album import serialize_for_card_many from app.serializers.album import serialize_for_card_many
from app.serializers.artist import serialize_for_cards, serialize_for_card from app.serializers.artist import serialize_for_cards, serialize_for_card
from app.serializers.track import serialize_tracks from app.serializers.track import serialize_track
from app.store.albums import AlbumStore from app.store.albums import AlbumStore
from app.store.artists import ArtistStore from app.store.artists import ArtistStore
@@ -69,16 +69,25 @@ def get_artist(path: ArtistHashSchema, query: TrackLimitSchema):
if decade: if decade:
artist.genres.insert(0, {"name": decade, "genrehash": decade}) artist.genres.insert(0, {"name": decade, "genrehash": decade})
duration = sum(t.duration for t in tracks) if tracks else 0
tracks = [
{
**serialize_track(t),
"help_text": "unplayed" if t.playcount == 0 else f"{t.playcount} play{'' if t.playcount == 1 else 's'}"
}
for t in tracks[:limit]
]
return { return {
"artist": { "artist": {
**serialize_for_card(artist), **serialize_for_card(artist),
"duration": sum(t.duration for t in tracks) if tracks else 0, "duration": duration,
"trackcount": tcount, "trackcount": tcount,
"albumcount": artist.albumcount, "albumcount": artist.albumcount,
"genres": artist.genres, "genres": artist.genres,
"is_favorite": artist.is_favorite, "is_favorite": artist.is_favorite,
}, },
"tracks": serialize_tracks(tracks[:limit]), "tracks": tracks,
} }
@@ -164,7 +173,15 @@ def get_all_artist_tracks(path: ArtistHashSchema):
""" """
tracks = ArtistStore.get_artist_tracks(path.artisthash) tracks = ArtistStore.get_artist_tracks(path.artisthash)
tracks = sort_tracks(tracks, key="playcount", reverse=True) tracks = sort_tracks(tracks, key="playcount", reverse=True)
return serialize_tracks(tracks) tracks = [
{
**serialize_track(t),
"help_text": "unplayed" if t.playcount == 0 else f"{t.playcount} play{'' if t.playcount == 1 else 's'}"
}
for t in tracks
]
return tracks
@api.get("/<artisthash>/similar") @api.get("/<artisthash>/similar")