From e0ecafadd59b07d3908ef6f91a50a83805dff022 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Thu, 18 Sep 2025 20:11:02 +0300 Subject: [PATCH] Join top artists with respective artist infos to get image hashes --- lib/music_library/scrobble_activity.ex | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/music_library/scrobble_activity.ex b/lib/music_library/scrobble_activity.ex index 26308426..0124d172 100644 --- a/lib/music_library/scrobble_activity.ex +++ b/lib/music_library/scrobble_activity.ex @@ -282,6 +282,8 @@ defmodule MusicLibrary.ScrobbleActivity do query = from t in Track, + join: ai in Artists.ArtistInfo, + on: ai.id == fragment("json_extract(?, '$.musicbrainz_id')", t.artist), group_by: [ fragment("json_extract(artist, '$.name')"), fragment("json_extract(artist, '$.musicbrainz_id')") @@ -289,6 +291,7 @@ defmodule MusicLibrary.ScrobbleActivity do select: %{ artist_name: fragment("json_extract(artist, '$.name')"), artist_musicbrainz_id: fragment("json_extract(artist, '$.musicbrainz_id')"), + image_hash: ai.image_data_hash, play_count: count(t.scrobbled_at_uts) }, order_by: [desc: count(t.scrobbled_at_uts)], @@ -315,6 +318,8 @@ defmodule MusicLibrary.ScrobbleActivity do query = from t in Track, + join: ai in Artists.ArtistInfo, + on: ai.id == fragment("json_extract(?, '$.musicbrainz_id')", t.artist), where: t.scrobbled_at_uts >= ^cutoff_timestamp, group_by: [ fragment("json_extract(artist, '$.name')"), @@ -323,6 +328,7 @@ defmodule MusicLibrary.ScrobbleActivity do select: %{ artist_name: fragment("json_extract(artist, '$.name')"), artist_musicbrainz_id: fragment("json_extract(artist, '$.musicbrainz_id')"), + image_hash: ai.image_data_hash, play_count: count(t.scrobbled_at_uts) }, order_by: [desc: count(t.scrobbled_at_uts)],