While I’m playing any song from any library, the song information shows up fine on my Discord profile, but then the time counter resets every 30 seconds, from 0:30 or 0:31 back to 0:00, which while it doesn’t bother me as much, it may seem confusing to people casually checking out my profile.
Logs:
Upload description: cnelfalk
Additional information:
I’ll be adding a short clip of how my Discord status updates. (also I uploaded the logs via the app by just putting “cnelfalk” so sorry if it’s difficult to find)
Reproduction steps:
Install a Navidrome server (v0.60.3) on your machine of choice
Install the official Discord RPC plugin (v0.3.0) and fill in the fields it requires to function
Link the Symfonium app with your Navidrome server
Play any song from of its libraries
Pay attention to your Discord profile status as the song plays
This is the limitations of Subsonic API. The scrobble part is not really meant to publish this with times.
This does not support pause state, this does not support playback speed, this does not support seeking.
They just take the event and make bold assumptions that it start from the start with default speed and no seek and that there won’t be more events sends. It works 80% of the cases at most.
@deluan how do you push the data to the plugin ? If there’s many users of this it makes sense to add a proper OS endpoint as other providers to support proper reporting with position and actual status for this kind of features.
The plugin assumes the NowPlaying is sent at the beginning of the playing song, and only once. This is the behaviour I see in all clients, and it is what is implied in Last.fm docs:
Used to notify Last.fm that a user has started listening to a track.
I see Symfonium keep sending NowPlayings periodically. While it does not affect the actual scrobbling, the plugin keeps thinking the song restarted and resets the time.
What the plugin is doing is the best that can be done with the current /rest/scrobble endpoint implementation/limitations. This endpoint is based on Last.fm and is not meant to track the status/position of the client. I think for other providers this is easy as they have to support this type of tracking for movies/tvshows, so they can simply extend it to music.
Anyway, yeah, I think it makes sense to have an OS extension for that.
The thing is that if you pause, no one knows. If you pause and restart playback a couple hours later, problem, you seek, problem, you use a different playback speed, problem. You can’t even send a stop.
This cover one simple use case, but fails on so many others.
Symfonium ping the server every 30 seconds as it does with all other providers to ensure data is in sync. I can remove the pings for Subsonic as it’s virtually useless, but this still won’t make the data accurate.