rewrite get favorites to return playable data for cards

This commit is contained in:
mungai-njoroge 2023-12-03 23:30:03 +03:00
parent ddfa7f1b03
commit a007b6e1b7
4 changed files with 22 additions and 59 deletions

View File

@ -2,17 +2,15 @@ from flask import Blueprint, request
from app.db.sqlite.favorite import SQLiteFavoriteMethods as favdb from app.db.sqlite.favorite import SQLiteFavoriteMethods as favdb
from app.models import FavType from app.models import FavType
from app.serializers.album import serialize_for_card_many from app.serializers.album import serialize_for_card, serialize_for_card_many
from app.serializers.track import serialize_tracks from app.serializers.artist import serialize_for_card as serialize_artist
from app.serializers.track import serialize_track, serialize_tracks
from app.utils.bisection import UseBisection from app.utils.bisection import UseBisection
from app.store.artists import ArtistStore from app.store.artists import ArtistStore
from app.store.albums import AlbumStore from app.store.albums import AlbumStore
from app.store.tracks import TrackStore from app.store.tracks import TrackStore
from app.serializers.favorites_serializer import (
recent_fav_album_serializer,
recent_fav_artist_serializer,
)
api = Blueprint("favorite", __name__, url_prefix="/") api = Blueprint("favorite", __name__, url_prefix="/")
@ -196,23 +194,28 @@ def get_all_favorites():
break break
if fav[2] == FavType.album: if fav[2] == FavType.album:
try: album = next((a for a in albums if a.albumhash == fav[1]), None)
album = [a for a in albums if a.albumhash == fav[1]][0]
recents.append( if album is None:
{"type": "album", "item": recent_fav_album_serializer(album)}
)
except IndexError:
continue continue
recents.append({"type": "album", "item": serialize_for_card(album)})
if fav[2] == FavType.artist: if fav[2] == FavType.artist:
try: artist = next((a for a in artists if a.artisthash == fav[1]), None)
artist = [a for a in artists if a.artisthash == fav[1]][0]
recents.append( if artist is None:
{"type": "artist", "item": recent_fav_artist_serializer(artist)}
)
except IndexError:
continue continue
recents.append({"type": "artist", "item": serialize_artist(artist)})
if fav[2] == FavType.track:
track = next((t for t in tracks if t.trackhash == fav[1]), None)
if track is None:
continue
recents.append({"type": "track", "item": serialize_track(track)})
return { return {
"recents": recents[:album_limit], "recents": recents[:album_limit],
"tracks": tracks[:track_limit], "tracks": tracks[:track_limit],

View File

@ -37,7 +37,6 @@ class Track:
trackhash: str trackhash: str
last_mod: str | int last_mod: str | int
filetype: str = ""
image: str = "" image: str = ""
artist_hashes: str = "" artist_hashes: str = ""
is_favorite: bool = False is_favorite: bool = False

View File

@ -1,40 +0,0 @@
from app.models import Album, Artist, Track
def recent_fav_track_serializer(track: Track) -> dict:
"""
Simplifies a track object into a dictionary to remove unused
properties on the client.
"""
return {
"image": track.image,
"title": track.title,
"trackhash": track.trackhash,
"filepath": track.filepath,
}
def recent_fav_album_serializer(album: Album) -> dict:
"""
Simplifies an album object into a dictionary to remove unused
properties on the client.
"""
return {
"image": album.image,
"title": album.og_title,
"albumhash": album.albumhash,
"artist": album.albumartists[0].name,
"colors": album.colors,
}
def recent_fav_artist_serializer(artist: Artist) -> dict:
"""
Simplifies an artist object into a dictionary to remove unused
properties on the client.
"""
return {
"image": artist.image,
"name": artist.name,
"artisthash": artist.artisthash,
}

View File

@ -15,6 +15,7 @@ def serialize_track(track: Track, to_remove: set = {}, remove_disc=True) -> dict
"disc", "disc",
"track", "track",
"artist_hashes", "artist_hashes",
"created_date",
}.union(to_remove) }.union(to_remove)
if not remove_disc: if not remove_disc: