From 2e63aa4a4119105cfc94fac0b57d7f95acf07bf4 Mon Sep 17 00:00:00 2001 From: cwilvx Date: Wed, 3 Jul 2024 15:57:05 +0300 Subject: [PATCH] fix: artist track count + fix: album type on artits page + sort by release date help text on get all --- app/api/album.py | 2 +- app/api/getall/__init__.py | 2 +- app/lib/tagger.py | 12 ++++++++++-- app/lib/taglib.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/api/album.py b/app/api/album.py index 6deb7f7c..d03b3025 100644 --- a/app/api/album.py +++ b/app/api/album.py @@ -48,7 +48,7 @@ def get_album_tracks_and_info(body: AlbumHashSchema): tracks = TrackDb.get_tracks_by_albumhash(albumhash) album.trackcount = len(tracks) album.duration = sum(t.duration for t in tracks) - album.type = album.check_type( + album.check_type( tracks=tracks, singleTrackAsSingle=UserConfig().showAlbumsAsSingles ) diff --git a/app/api/getall/__init__.py b/app/api/getall/__init__.py index 5489803a..44e0f6f1 100644 --- a/app/api/getall/__init__.py +++ b/app/api/getall/__init__.py @@ -107,7 +107,7 @@ def get_all_items(path: GetAllItemsPath, query: GetAllItemsQuery): item_dict = serialize_album(item) if is_albums else serialize_artist(item) if sort_is_date: - item_dict["help_text"] = item.date + item_dict["help_text"] = datetime.fromtimestamp(item.date).year if sort_is_create_date: date = create_new_date(datetime.fromtimestamp(item.created_date)) diff --git a/app/lib/tagger.py b/app/lib/tagger.py index 052a7dff..46926aeb 100644 --- a/app/lib/tagger.py +++ b/app/lib/tagger.py @@ -210,6 +210,7 @@ class IndexArtists: for a in track.albumartists: if a not in this_artists: + a["in_track"] = False this_artists.append(a) for thisartist in this_artists: @@ -228,7 +229,11 @@ class IndexArtists: "playcount": track.playcount, "playduration": track.playduration, "trackcount": None, - "tracks": {track.trackhash}, + "tracks": ( + {track.trackhash} + if thisartist.get("in_track", True) + else set() + ), } else: artist = artists[thisartist["artisthash"]] @@ -236,12 +241,15 @@ class IndexArtists: artist["playcount"] += track.playcount artist["playduration"] += track.playduration artist["albums"].add(track.albumhash) - artist["tracks"].add(track.trackhash) artist["date"] = min(artist["date"], track.date) artist["lastplayed"] = max(artist["lastplayed"], track.lastplayed) artist["created_date"] = min(artist["created_date"], track.last_mod) artist["names"].add(thisartist["name"]) + + if thisartist.get("in_track", True): + artist["tracks"].add(track.trackhash) + if track.genres: artist["genres"].extend(track.genres) diff --git a/app/lib/taglib.py b/app/lib/taglib.py index a987cc17..e0a00ae1 100644 --- a/app/lib/taglib.py +++ b/app/lib/taglib.py @@ -269,7 +269,7 @@ def get_tags(filepath: str, artist_separators: set[str]): ] tags.artisthashes = list( - {a["artisthash"] for a in tags.artists + tags.albumartists} + {a["artisthash"] for a in tags.artists} ) # remove prod by