From 61aeef4de158db783d49984ec5e81c69c0e06fc3 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Tue, 7 Oct 2025 15:56:17 +0300 Subject: [PATCH] Fix top artists and top album counts Before, each track count would be multiplied by the number of collected records. Not a problem when there's just one, but if I have more than one then it would get weird quickly. --- lib/music_library/scrobble_activity.ex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/music_library/scrobble_activity.ex b/lib/music_library/scrobble_activity.ex index 8af0a126..1cd5338f 100644 --- a/lib/music_library/scrobble_activity.ex +++ b/lib/music_library/scrobble_activity.ex @@ -231,7 +231,7 @@ defmodule MusicLibrary.ScrobbleActivity do album_title: fragment("json_extract(album, '$.title')"), artist_name: fragment("json_extract(artist, '$.name')"), artist_musicbrainz_id: fragment("json_extract(artist, '$.musicbrainz_id')"), - play_count: count(t.scrobbled_at_uts), + play_count: count(t.scrobbled_at_uts, :distinct), cover_url: fragment("max(?)", t.cover_url), album_musicbrainz_id: fragment("json_extract(album, '$.musicbrainz_id')"), collected_record_id: cr.record_id, @@ -266,7 +266,7 @@ defmodule MusicLibrary.ScrobbleActivity do album_title: fragment("json_extract(album, '$.title')"), artist_name: fragment("json_extract(artist, '$.name')"), artist_musicbrainz_id: fragment("json_extract(artist, '$.musicbrainz_id')"), - play_count: count(t.scrobbled_at_uts), + play_count: count(t.scrobbled_at_uts, :distinct), cover_url: fragment("max(?)", t.cover_url), album_musicbrainz_id: fragment("json_extract(album, '$.musicbrainz_id')"), collected_record_id: cr.record_id, @@ -298,7 +298,7 @@ defmodule MusicLibrary.ScrobbleActivity do name: fragment("json_extract(artist, '$.name')"), musicbrainz_id: fragment("json_extract(artist, '$.musicbrainz_id')"), image_hash: ai.image_data_hash, - play_count: count(t.scrobbled_at_uts) + play_count: count(t.scrobbled_at_uts, :distinct) }, order_by: [desc: count(t.scrobbled_at_uts)], limit: ^limit @@ -335,7 +335,7 @@ defmodule MusicLibrary.ScrobbleActivity do name: fragment("json_extract(artist, '$.name')"), musicbrainz_id: fragment("json_extract(artist, '$.musicbrainz_id')"), image_hash: ai.image_data_hash, - play_count: count(t.scrobbled_at_uts) + play_count: count(t.scrobbled_at_uts, :distinct) }, order_by: [desc: count(t.scrobbled_at_uts)], limit: ^limit