mirror of
https://github.com/tcsenpai/swingmusic.git
synced 2025-06-06 19:25:34 +00:00
rewrite get favorites to return playable data for cards
This commit is contained in:
parent
ddfa7f1b03
commit
a007b6e1b7
@ -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],
|
||||||
|
@ -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
|
||||||
|
@ -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,
|
|
||||||
}
|
|
@ -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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user