Skip to content

bug: Subsonic - Songs on Loop only count as one scrobble #375

@4rft5

Description

@4rft5

Please check existing knowledge before opening an issue

Describe the Bug

When listening to a song on loop on a Subsonic client (in my case, Navidrome/Amperfy), playing a song on loop causes the percentage listened to rise over 100%. When the loop finally ends or another song is played, only one instance of the listen ends up being scrobbled. I assume this results from the limitation of the Subsonic API not reporting the playback location.

Image Image

In these screenshots the looping song was eventually played three times but only shows as once in recently played.

Maybe it'd be possible if the percentage played goes over 100% and playback state changes (stopped/a new song is played) to calculate the amount of times a song was played from the percentage or track length and scrobble that many listens?

An alternative could be just sending the scrobble when it hits each increment of 100% so it keeps the scrobble times accurate. When playback ends that final percentage could then be applied to the scrobble rules to see if it applies or not. If it ends on say, 258%, it'd already be scrobbled twice, but would then be scrobbled a third time if the scrobble rules allow for over 50% since it ends at 58%

Just spitballing, there's probably a better solution.

Thank you

Platform

Docker

Versions

  • multi-scrobbler 0.10.0
  • navidrome 0.58.0

Logs

[2025-10-23 23:47:16.332 -0600] DEBUG  : [App] [Cache] [Scrobble] Saved cache to file
[2025-10-23 23:47:14.674 -0600] INFO   : [App] [Scrobblers] [Koito - unnamed-koito] Scrobbled (Backlog) => (Subsonic) Nedaj - CODE @ 2025-10-23T23:38:02-06:00 (S)
[2025-10-23 23:47:14.653 -0600] DEBUG  : [App] [Scrobblers] [Koito - unnamed-koito] Found 40 recent scrobbles
[2025-10-23 23:47:14.604 -0600] DEBUG  : [App] [Scrobblers] [Koito - unnamed-koito] Refreshing recent scrobbles
[2025-10-23 23:47:14.603 -0600] DEBUG  : [App] [Scrobblers] [Koito - unnamed-koito] [Upstream Refresh] Should refresh => newest queued scrobble playDate is newer than last refresh
[2025-10-23 23:47:14.451 -0600] DEBUG  : [App] [Scrobblers] [Lastfm - unnamed-lfm] Raw Payload: 
[2025-10-23 23:47:14.450 -0600] INFO   : [App] [Scrobblers] [Lastfm - unnamed-lfm] Scrobbled (Backlog) => (Subsonic) Nedaj - CODE @ 2025-10-23T23:38:02-06:00 (S)
[2025-10-23 23:47:14.127 -0600] DEBUG  : [App] [Scrobblers] [Lastfm - unnamed-lfm] Found 40 recent scrobbles
[2025-10-23 23:47:13.688 -0600] DEBUG  : [App] [Scrobblers] [Lastfm - unnamed-lfm] Refreshing recent scrobbles
[2025-10-23 23:47:13.687 -0600] DEBUG  : [App] [Scrobblers] [Lastfm - unnamed-lfm] [Upstream Refresh] Should refresh => newest queued scrobble playDate is newer than last refresh
[2025-10-23 23:47:12.803 -0600] DEBUG  : [App] [Sources] [Subsonic - unnamed] Last activity was at 23:47:12-06:00 | Next check in 10.00s
[2025-10-23 23:47:12.801 -0600] INFO   : [App] [Sources] [Subsonic - unnamed] Discovered => Nedaj - CODE @ 2025-10-23T23:38:02-06:00 (S)
[2025-10-23 23:47:12.800 -0600] DEBUG  : [App] [Sources] [Subsonic - unnamed] [Player 1-4rft5] Started new Player listen range.
[2025-10-23 23:47:12.800 -0600] VERBOSE: [App] [Sources] [Subsonic - unnamed] [Player 1-4rft5] (fBL6NFMnTFfw1FgtewMaYa) Nedaj - CODE added after met thresholds with tracked time of 540.00s (wanted 240s) and tracked percent of 298.00% (wanted 50%) and not matching any prior plays
[2025-10-23 23:47:12.799 -0600] DEBUG  : [App] [Sources] [Subsonic - unnamed] [Player 1-4rft5] Generating play object with playDateCompleted
[2025-10-23 23:47:12.799 -0600] VERBOSE: [App] [Sources] [Subsonic - unnamed] [Player 1-4rft5] New Play: (RDaBxisXbabORDlyZWiLPj) Foo Fighters - Everlong
[2025-10-23 23:47:12.798 -0600] DEBUG  : [App] [Sources] [Subsonic - unnamed] [Player 1-4rft5] Ended current Player listen range.
[2025-10-23 23:47:12.798 -0600] DEBUG  : [App] [Sources] [Subsonic - unnamed] [Player 1-4rft5] Incoming play state ((RDaBxisXbabORDlyZWiLPj) Foo Fighters - Everlong) does not match existing state, removing existing: (fBL6NFMnTFfw1FgtewMaYa) Nedaj - CODE

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions