Skip to content

Releases: FoxxMD/multi-scrobbler

v0.4.2

10 Mar 20:25
Compare
Choose a tag to compare

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

27 Feb 16:26
Compare
Choose a tag to compare

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

22 Feb 17:38
Compare
Choose a tag to compare

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 under CONFIG_DIR/logs

Docker

  • The container still uses CONFIG_DIR as the configuration file directory BUT it now defaults to /config if CONFIG_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 under CONFIG_DIR/logs
  • If you run Docker on a Linux host (ubuntu, fedora, arch, etc...) it is highly recommended to set the environmental variables PUID and PGID 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

28 Apr 20:31
8b851d2
Compare
Choose a tag to compare

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

17 Dec 16:01
Compare
Choose a tag to compare

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

06 Oct 13:36
Compare
Choose a tag to compare

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

  • Fix missing auth variable for status render #31
  • Fix mishandled properties in last.fm scrobble request causing ignored track #33

v0.3.8

05 Jul 14:48
Compare
Choose a tag to compare

Changed

  • Refactor source/client initialization so that a failed connection/setup does not cause the whole app to exit
  • Add re-initialize action to web ui so that setup can be tried again in case of faiure

Fixed

  • Fixed typo preventing using users in jellyfin configuration #27

Jellyfin Integration and Subsonic Improvements

17 Mar 14:18
Compare
Choose a tag to compare

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

01 Mar 21:39
403af71
Compare
Choose a tag to compare

New

The frontend has the same old functionality with a fresh new look thanks to @christophernewton !

v0.3.5

22 Feb 14:14
Compare
Choose a tag to compare

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 thrown
    • retryMultiplier - 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 and clientDefaults properties to config.json to allow setting defaults for all source/clients...
    • Supports the above new retry properties