Skip to content

Releases: FoxxMD/multi-scrobbler

Last.fm Integration

05 Jan 22:14
Compare
Choose a tag to compare

New

  • Implement Last.fm client
  • Add clients to UI (simple stats, auth for last.fm)

Changed

  • Update auth endpoints to differentiate between source and client (for last.fm)

Subsonic Integration

09 Dec 21:20
Compare
Choose a tag to compare

New

Changed

  • Refactored polling behavior to be more reusable (for use with Spotify and Subsonic) and removed unused generator code
  • Changed poll/auth/recent endpoints to be source agnostic (use query string to determine which source to work on)

Multi user support

08 Dec 15:22
Compare
Choose a tag to compare

Big update to support multi user configurations!

New

  • Source and Client configurations now have name properties to identify them (required for clients)
  • Source configurations can specify Client configurations to scrobble to based on name
  • Source/Client naming has validation for uniqueness
  • Support multiple clients in config.json
  • Plex/Tautulli configurations now also support filtering by libraries and server names
  • Logging label will include config name for easier identification
  • Clearer documentation and more examples

Changed

  • More thorough configuration validation and helpful validation messages (will display missing property, config type, and where it came from IE file)
  • Spotify auth status is more clearly displayed on status page
  • Maloja existing scrobble check has further been improved by fuzzy matching artist, track, and time played as well as checking all previously successfully scrobbled tracks (since app start)

Deprecated

  • Using plex and spotify top-levels props in config.json has been deprecated. These should be moved to the sources property and will be completely removed in the next major version

Breaking Changes

  • ENV properties no longer override json properties and are now treated as a separate config (see configuration docs)

Artist parsing fixes and spotify insight

04 Dec 14:38
Compare
Choose a tag to compare
  • Fix the way artists are sent to Maloja to hopefully make multi-artist detection more reliable
  • Implement spotify "recently played" page to give users more insight into what spotify is returning as last activity
  • Improve existing scrobble detection for Maloja by comparing track names with tokens instead of straight string comparisons

More logging, Maloja setup improvements, and Maloja zero-history use-cases

28 Nov 00:49
29cdf34
Compare
Choose a tag to compare
  • Added error stack logging and padding for logging labels
  • Check Maloja url and api key by using test api endpoint and checking server version
  • Improve handling for checking scrobble valid time frame and already scrobbled list when Maloja history is empty

Stability, Robustness, and Logging

24 Nov 20:23
Compare
Choose a tag to compare

Lots of internal changes to help future coding and handle information from track sources better, plus logging improvements!

  • All source/client tracks are now mapped to standardized objects
  • All source/client tracks are sorted based on play date instead of relying on order returned from source/client (Spotify had issues this week that shown a light on this problem)
  • [Spotify] Internal code re-write to have better single responsibility
  • [Spotify] Will now scrobble backlogged tracks -- if the last 20 tracks from spotify are not in scrobble client history they will be recorded (lays foundation for bigger things...)
  • Simplified logging with winston to pull from global instance and use separate loggers rather than passing around everywhere
  • Cleaned up the logging format so level/label are padded for easier reading and also added object serialization when passed
  • [Plex/Tautulli] Debug logging will show content sent in event for easier debugging
  • [Plex/Tautulli] Will log a warning if no users are specified in config (so all user content would be scrobbled!)

Class Rewrite and Plex/Tautulli

19 Nov 15:08
Compare
Choose a tag to compare
  • Rewrite most functionality into classes (Source/Client) to make it easier to extend in the future
  • Refactor spotify loop so it can only be run once at a time (switch from async to generator)
  • Implement Plex/Tautulli endpoints for scrobbling
  • Remove spotify dependency for "starting" the app because of new sources

QOL Improvements

16 Nov 16:57
Compare
Choose a tag to compare
  • Back off behavior when listening history is idle
  • Format datetimes using local timezone from system
  • Display connection status and a buffered log of last 50 events on root url GET
  • Better handling of file-less configurations (using envs only)

Initial MVP

13 Nov 22:22
Compare
Choose a tag to compare

This is the MVP (stable operation) for scrobbling spotify plays to Majola:

  • Triaged configuration possibilities using environment variables json objects, and json files
  • Handles spotify authentication when user visits callback, or uses existing access/refresh token if provided
  • Handles re-authenticating spotify as needed
  • Logging debug/info to stderr/out and rotating log files
  • Dockerized config dir and optionally logging dir using environmental variables