Releases: FoxxMD/multi-scrobbler
Releases · FoxxMD/multi-scrobbler
v0.4.2
Changelog
Features
- Added Mopidy as a Source #24
- Added ListenBrainz as a Source and Client #16
- Added MPRIS as a Source
- Rewrote Spotify Source to enable scrobbling music played on Spotify Connect devices #51
- "Recently played" tracks in UI now returns consolidated list of tracks discovered by MS, rather than relying on API from each source (better support for things like Spotify connect)
- Logging improvements
- labels are now cleaner
- log levels in UI now use a more color-blind friendly palette
- more insight into Source activity and reasons why a track isn't scrobbled (at debug log level)
Bug Fixes
- Fix log filter in UI not working for levels other than debug and info
- Fixed length arrays for storing client/source tracked scrobbles should prevent memory ballooning
Documentation
- Added documentation and updated schema for Mopidy, MPRIS, and Listenbrainz
v0.4.1
Changelog
Features
- Added source for Youtube Music #34
- Added webhooks for Gotify and Ntfy to notify on polling errors or scrobble errors #66
- Added healthcheck endpoint for monitoring sources/clients #66
- Added additional debug logging for jellyfin source #70
Bug Fixes
- Fix last.fm source credentials incorrectly passed #71
- Fix incorrect descontructing of polling retry options
Documentation
- Added Youtube Music source docs
- Added webhook and healthcheck endpoint docs
v0.4.0
Version 0.4.0 is a functionally-equivalent rewrite of multi-scrobbler in Typescript with many internal updates and docker improvements.
Changes were made with an effort to prevent any functional breaking changes but there may still be changes required for Docker users and building the application for native installs.
Migrating from <0.4.0
Native (Local Installs)
- Minimum Node version has been changed to 18. (Tip: Use nvm to manage node version)
- Typescript is required to build multi-scrobbler but this is all taken care of with npm scripts:
npm install && npm run build && npm run start
LOG_DIR
is no longer used. Log files will now always be stored underCONFIG_DIR/logs
Docker
- The container still uses
CONFIG_DIR
as the configuration file directory BUT it now defaults to/config
ifCONFIG_DIR
is not present. See the updated Docker install instructions for configuring this, if needed.LOG_DIR
is no longer used. Log files will now always be stored underCONFIG_DIR/logs
- If you run Docker on a Linux host (ubuntu, fedora, arch, etc...) it is highly recommended to set the environmental variables
PUID
andPGID
in order to prevent file permission issues. See the Linux Host instructions in the installation docs.
Changelog
Features
- Rewritten using typescript 4.9.5
- Ingress-based source (Plex/Tautulli/Jellyfin) have better/more logging for initial connections to help with troubleshooting
- Improved jellyfin track play data standardization and logging
- Improved debug logging for Memory-Source based sources (subsonic)
- A docker-compose file is now provided
- Docker image updated
- Updated base image
- Simplified volumes and volume paths
- Respects host file permissions using PUID and PGID env variables
Bug Fixes
- Fixed spotify authentication when using multiple-env based sources #63
- Fixed jellyfin source play data error #61 thanks @CPU-Blanc
- Fixed plex payload parsing and added additional debug logging #40
Documentation
- Added docker-compose usage, improved docker install instructions, and added TZ usage #55 thanks @iluvatyr
- Added missing jellyfin kitchensink usage and fixed documentation inconsistencies thank @sirjmann92
- Added auto-generated json schema for all source/clients/config along with schema explorer/editor/validator to the documentation
- Cleaned up example configs and added README pointing to config docs for additional info
- Example configs are now copied to clean config dir on docker container start #8
- Added FAQ with connection/configuration issue basic troubleshooting
- Added github issue template
v0.3.11
Bug Fixes
- Provide defaults to express-session to prevent deprecation message
- Use a different data shape for new scrobbles on maloja >= 3.0.3
- Use length as track length property for all maloja versions
Documentation
- Tautulli payload duration => duration_sec @northys
Features
- Support maloja >= 3.0.0
- Add scrobble client request data to logging
- Add arm docker build @northys
v0.3.10
New
- Implemented Deezer source
- Added readiness check for all scrobble clients and implemented database-aware readiness check for Maloja to resolve issues with manual waiting surfaced from #37
Bug Fixes
- Don't invoke scrobble function if source has no plays (reduces log noise and api calls to scrobblers)
v0.3.9
New
- Implemented websockets for live log streaming by @christophernewton in #29
- Lots of small QOL updates to UI by @christophernewton
- Better indication of last.fm scrobble failure (when scrobble is ignored) -- show error code returned, if any
- Github Action to replace dockerhub auto-build
Bug Fixes
v0.3.8
Jellyfin Integration and Subsonic Improvements
New
Changed
- Changed polling backoff behavior to use time-based backoff instead of interval count
- Implemented in-memory "recently played" logic for generic Source to better support scrobbling from sources without their own "recently played" source of truth or scrobbling behavior. Used for Subsonic to make scrobbling behavior more stable and on Jellyfin integration.
Fixed
- Fixed issue where Last.fm "now playing" entry returned from "recently played" broke last.fm scrobbling #22
Frontend Polish
New
The frontend has the same old functionality with a fresh new look thanks to @christophernewton !
v0.3.5
New
- Implemented request/polling retry behavior to make the app more resilient to temporary connection issues
maxPollRetries
- in any source config, the # of times polling can automatically restart if an error occurs.maxRequestRetries
- in all client/source configs, # of http request retries for an action before error is thrownretryMultiplier
- in all client/source configs, retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying- Log retry/poll attempts on error
- Added
sourceDefaults
andclientDefaults
properties toconfig.json
to allow setting defaults for all source/clients...- Supports the above new retry properties