Tracks not being scrobbled when media provider is not available

Issue description:

Hi,

Firstly, many thanks for building and maintaining the app, it’s a joy to use! I just have one issue with it: when the media provider is not available, the songs don’t seem to be scrobbled. I’ve lost track of entire album scrobbles because of this, which is quite annoying :(.

After the issue is sent, I’ll upload the logs from the app. I’ve listened to 4 songs (with the given abbreviations):

1 (PF). Had access to the media server during the complete song.
2 (SS). Stopped access after a few seconds of the song playing.
3 (DAI). No access to the media server during the complete song.
4 (SD). Restored access after a few seconds of the song playing.

All tracks except 3 are correctly scrobbled my the media provider. This leads me to think that, as the media provider is not available, the scrobble request gets dropped instead of being stored on a queue for being used when the connection is restored. Could the app behavior match the second scenario?

I see the similarities between my issue and this one, but I think the error on that case was on Jellyfin, which I am not using.

This is my first issue, so tell me if any other clarifications would be needed.

Thanks!

Logs:

Upload description: metalcasette

Additional information:

 

 

Reproduction steps:

 

  1. Make media provider unaccessible
  2. Listen to a few songs
  3. Reenable access to media provider

The listened songs are not sent to the media provider, even after listening to new tracks
 

Media provider:

Subsonic

Screenshots:

     

Considering that you have linked my old Jellyfin issue:
Here’s what has worked the most consistently for me.

Install PanoScrobbler on your phone and let that handle the scrobbling. You might have to disable a few energy saving options for the app depending on your phone vendor for it to work correctly. But then it handles fully offline scrobbles and online scrobbles pretty much flawlessly.
If you have conflicts/duplicate scrobbles etc. you might want to give multi-scrobbler a try and let that manage your scrobbles in addition to PanoScrobbler.
I use it to keep my LastFM account and a local Maloja instance in sync.

Jellyfin is bugged and unrelated to this please avoid pushing wrong solutions :wink:

I’m not using Jellyfin any more. This setup works perfectly for lms which lacks native lastFM scrobbling.

There is of course a queue and in the logs everything have worked correctly.

2025-05-06 16:46:09.646 Verbose MediaStateUpdater  Set played from media change for Pretty Fly (Reprise) [1,00/0.95]-[63218-63264/10000]
2025-05-06 16:47:18.704 Verbose MediaStateUpdater  Set played from media change for Soldier Side - Intro [1,00/0.95]-[63673-63720/10000]
2025-05-06 16:48:22.475 Verbose MediaStateUpdater  Set played from media change for Das Album Intro [1,00/0.95]-[63826-63816/10000]
2025-05-06 16:49:26.031 Verbose MediaStateUpdater  Set played from media change for Schuyler Defeated [1,00/0.95]-[63553-63600/10000]


2025-05-06 16:46:09.663 Verbose MediaUpdateManager  Adding Pretty Fly (Reprise) to sync queue (1/0)
2025-05-06 16:46:09.667 Verbose MediaUpdateManager  Updating: Pretty Fly (Reprise) (Song) - 1/0/1746542769
2025-05-06 16:47:18.719 Verbose MediaUpdateManager  Adding Soldier Side - Intro to sync queue (1/0)
2025-05-06 16:48:06.521 Verbose MediaUpdateManager  Updating: Soldier Side - Intro (Song) - 1/0/1746542838
2025-05-06 16:48:22.497 Verbose MediaUpdateManager  Adding Das Album Intro to sync queue (1/0)
2025-05-06 16:48:22.501 Verbose MediaUpdateManager  Updating: Das Album Intro (Song) - 1/0/1746542902
2025-05-06 16:49:26.049 Verbose MediaUpdateManager  Adding Schuyler Defeated to sync queue (1/0)
2025-05-06 16:49:26.055 Verbose MediaUpdateManager  Updating: Schuyler Defeated (Song) - 1/0/1746542966

2025-05-06 16:48:22.503 Verbose SubsonicLogger  --> [533] GET https://xxx/rest/scrobble.view?id=7abafad88e52c272658f7cbd1ee0b765&time=1746542902000&submission=true&u=REDACTED&t=REDACTED&s=REDACTED&v=1.13.0&c=Symfonium&f=json
2025-05-06 16:48:22.503 Verbose SubsonicLogger  --> [533] END GET
2025-05-06 16:48:22.638 Verbose SubsonicLogger  <-- [533] 200 https://xxx/rest/scrobble.view?id=7abafad88e52c272658f7cbd1ee0b765&time=1746542902000&submission=true&u=REDACTED&t=REDACTED&s=REDACTED&v=1.13.0&c=Symfonium&f=json (131ms, unknown-length body)
2025-05-06 16:48:22.638 Verbose SubsonicLogger  <-- [533] {"subsonic-response":{"status":"ok","version":"1.16.1","type":"navidrome","serverVersion":"0.53.3 (13af8ed4)","openSubsonic":true}}
2025-05-06 16:48:22.638 Verbose SubsonicLogger  <-- [533] END HTTP (131ms, 131-byte body)

The last one is Symfonium sending a playcount for DAI and Navidrome saying OK.

Maybe there’s some specifics inside Navidrome related to those, check the navidrome logs.
@deluan Maybe have insight about when it does not push to external scrobblers.

But it support listenbrainz :wink:

You’re right, but then I don’t understand how Navidrome could be responding if it should not be available to access it (I disconnected the VPN access :P). Anyways, checking the Navidrome logs, it is scrobbled indeed:

time="2025-05-06T14:48:19Z" level=info msg="Now Playing" artist="We Butter The Bread With Butter" player="Symfonium [Symfonium/Android]" requestId=54afaf646a6
9/AuHCbTPsBm-046965 title="Das Album Intro"
time="2025-05-06T14:48:23Z" level=info msg="Now Playing" artist="Phillipa Soo/Lin-Manuel Miranda/Leslie Odom Jr./Anthony Ramos" player="Symfonium [Symfonium/A
ndroid]" requestId=54afaf646a69/AuHCbTPsBm-046967 title="Schuyler Defeated"
time="2025-05-06T14:48:23Z" level=info msg=Scrobbled artist="We Butter The Bread With Butter" requestId=54afaf646a69/AuHCbTPsBm-046968 timestamp="2025-05-06 1
4:48:22 +0000 UTC" title="Das Album Intro"

Navidrome should be sending it to Multiscrobbler, but it is not received. The error must be happening somewhere there, I’ll look into it. Sorry for not checking the Navidrome logs first, I only started having this issue when moving to Symfonium so I assumed the issue was on this side.

Btw, could you redact the URL of the logs above? It’s pointing to a private IP anyways, but better if it’s not indexed by crawlers and that for me.

Thanks! I’ll update you if something is needed from the Navidrome or Multiscrobbler side.

For anybody else in the same situation, there seems to be an issue on multi-scrobbler describing exactly my scenario. Sorry for not noticing earlier…