github FoxxMD/multi-scrobbler 0.5.0-RC1
v0.5.0-RC1

latest releases: 0.8.8, 0.8.7, 0.8.6...
pre-release14 months ago

🎉 0.5.0 contains a significant internal rewrite for the entire front-end and some fundamentals of the back-end.

Updates and Rewrites

Scrobble Source State Tracking

The way MS monitors Sources has seen a major overhaul. Previously MS kept track of some basic information about what was being listened to -- title/artist info, when it was first seen, and some meta info -- in a somewhat ad-hoc manner.

Now, MS implements a full source "player state" model that mirrors the current state of the source as much as possible. This allows MS to keep track of things like:

  • Current playing status (paused, stopped, playing, etc.)
  • What ranges of the current track have been listened to (if MS starts monitor in the middle of a track of user seeks in track)
  • How much of the current track has been listened to based on those ranges so scrobble thresholds are more accurate
  • Ensures better accuracy for de-duplicating scrobbles

And much more. A preview of this technical info can be enabled by setting LOG_LEVEL=debug and enabling "options": {"logPlayerState": true} in your config:

[nodemon-server] 2023-08-24T11:23:02-04:00 debug   : [Sources] [Spotify - default] [Player 10ef8b79eb-foxx-arch-SingleUser] New Play: (2fkAbl3FCAj9BKc4Z5GIdr) The Free Label - Boys Don't Sob
[nodemon-server] 2023-08-24T11:23:02-04:00 debug   : [Sources] [Spotify - default] [Player 10ef8b79eb-foxx-arch-SingleUser] Started new Player listen range.
[nodemon-server] 2023-08-24T11:23:02-04:00 debug   : [Sources] [Spotify - default] [Player 10ef8b79eb-foxx-arch-SingleUser] 
[nodemon-server] (2fkAbl3FCAj9BKc4Z5GIdr) The Free Label - Boys Don't Sob @ 2023-08-24T15:23:02.546Z
[nodemon-server] Reported: PLAYING | Calculated: UNKNOWN | Stale: No | Orphaned: No | Last Update: 2023-08-24T15:23:02.546Z
[nodemon-server] [▇▇▇▇▇▇—————————]43% 75/176s | Listened For: 0s 0%

...

[nodemon-server] 2023-08-24T11:23:18-04:00 debug   : [Sources] [Spotify - default] [Player 10ef8b79eb-foxx-arch-SingleUser] Player position changed between current -> last update. Updated calculated status to playing
[nodemon-server] 2023-08-24T11:23:18-04:00 debug   : [Sources] [Spotify - default] [Player 10ef8b79eb-foxx-arch-SingleUser] 
[nodemon-server] (2fkAbl3FCAj9BKc4Z5GIdr) The Free Label - Boys Don't Sob @ 2023-08-24T15:23:02.546Z
[nodemon-server] Reported: PLAYING | Calculated: PLAYING | Stale: No | Orphaned: No | Last Update: 2023-08-24T15:23:18.695Z
[nodemon-server] [▇▇▇▇▇▇▇▇———————]52% 91/176s | Listened For: 16s 9%

This enables eventually implementing a "Now Playing" web interface #74 which is now possible due to the other big update...

Front-end Rewrite

The web dashboard, previously written as server-side rendered pages written in EJS/express, has been replaced by a standalone, CRA-based React web app. This also required a new API implementation for the backend which will eventually be documented.

The UI looks and behaves essentially the same in this release but it is now much better positioned for future improvements. (Now Playing being the first up).

Breaking Changes

If you are using MS with ENV configuration or "bare minimum" file configs, with docker, there should be no breaking changes. I expect 99% of MS users will be able to upgrade in-place. However, for those of you using a slightly more advanced setup:

Config Options

If your configs include logPayload or logFilterFailure properties in the data object (Plex, Tautulli, Jellyfin) you will need to move these to "options" as a sibling of "data" like this:

OLD Config

[
  {
    "name": "MyJellyfin",
    "clients": [],
    "data": {
      "users": ["FoxxMD"],
      "servers": ["myServer","anotherServer"],
      "logPayload": false,
      "logFilterFailure": "warn"
    }
  }
]

NEW Config

[
  {
    "name": "MyJellyfin",
    "clients": [],
    "data": {
      "users": ["FoxxMD"],
      "servers": ["myServer","anotherServer"]
    },
    "options": {
      "logPayload": false,
      "logFilterFailure": "warn"
    }
  }
]

Running MS Locally

The default port for the UI/api is now 9079. This can be changed by setting the env PORT=9078 or adding a .env file to the project root with PORT=9078

Development

This only applies if you are developing MS.

Development mode is now started with npm run dev. In development mode:

  • the front end is available on ENV PORT, defaulting to 3000.
  • the back end (api) is available on ENV API_PORT, defaulting to 9079.

Feedback

If you have any trouble running 0.5.0-RC1 or find a breaking change please open a ticket and let me know.

Don't miss a new multi-scrobbler release

NewReleases is sending notifications on new releases.