Releases: FoxxMD/multi-scrobbler
Releases · FoxxMD/multi-scrobbler
Last.fm Integration
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
New
- Implement Subsonic api compatible sources
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
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
andspotify
top-levels props inconfig.json
has been deprecated. These should be moved to thesources
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
- 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
- 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
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
- 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
- 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
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