github FoxxMD/multi-scrobbler 0.8.0
v0.8.0

latest releases: 0.8.8, 0.8.7, 0.8.6...
4 months ago

What's New?

Musikcube Source

Musikcube, a cross-platform terminal-based music player, is now supported as a Source.

Configuration Normalization

In previous versions many of the common, optional options for source/clients, such as maxRequestRetries or maxPollRetries, were mixed into the data property for configs alongside properties that were specific to that source/client. Additionally, there was an existing options property that already had some common properties, but not all...

jellyfin.json

[
  {
    "name": "default",
    "enable": false,
    "clients": [],
    "data": {
      "maxRequestRetries": 3,
      "scrobbleThresholds": {
        "percent": 30,
        "duration": 30
      },
      "users": ["MyUser"]
    },
    "options": {
      "logPayload": false
    }
  }
]

These common properties have been refactored into the options object so that data is now solely for data that is specific to the source/client. This should make configs easier to reason about as well as making programmatic config validity checks easier.

[
  {
    "name": "default",
    "enable": false,
    "clients": [],
    "data": {
      "users": ["MyUser"]
    },
    "options": {
      "logPayload": false,
      "maxRequestRetries": 3,
      "scrobbleThresholds": {
        "percent": 30,
        "duration": 30
      }
    }
  }
]

This is potentially a breaking change, behaviorally, but MS will continue to operate without any changes to your config. The options that have been moved are all optional, minor settings that help fine-tune your experience with MS but do not majorly affect how it works or functionally affect how your sources/clients behave.

If you use any of the properties that have been migrated but have not moved them then MS will simply ignore them until they are moved.

For a complete list of moved properties and how to migrate them see this comment.

Docker Image Change

Due to consistent issues with DNS in alpine-based images ( #160 #126 #134) the image base is being changed to Debian. The image size will increase relatively significantly ( 60MB -> 120MB ) but the benefit is a more stable experience for docker users. Thanks to @Ardakilic for helping diagnose docker image issues and extensive testing/usage of the debian image.

This is not a breaking change but is still a significant refactor. If you have issues with the new default image please open an issue. Alternatively, there will still be an alpine-based image published with a -alpine suffix so you can continue to use the original image if you would prefer, though this may go away in the future.

TLDR

Previously...

  • latest or develop or 0.7.1 -> alpine based
  • latest-debian or develop-debian ... -> debian-based

Now...

  • latest or develop or 0.8.0 -> debian based
  • latest-alpine or develop-alpine ... -> alpine-based and may go away in the future

Youtube Music Improvements

The monitoring behavior for YTM has been improved to prevent duplicate scrobbling as well as provide insight into YTM history issues. #156

Additionally, the authentication method for YTM has been improved to save updated cookies from YTM if/when they are changed which may help with authentication issues in long-running MS instances.

Full Changelog

Bug Fixes

  • (chromecast) Add missing avahi-utils package for debian image
  • (spotify) Convert URL to string for redirectUri
  • (vite) Use default base string if no other path detected
  • (webscrobbler) Add preflight route #157
  • (webscrobbler) Fix formatting of slug url in logs
  • (youtube) Catch auth issues that occur during polling #158
  • (No Category) Refactor Base URL normalization to cover more cases #155

Documentation

  • (No Category) BREAKING: Update schema
  • (No Category) Clarify BASE_URL usage and add more examples #155
  • (No Category) Add scripting on deploy for plausible analytics
  • (No Category) Update screenshot

Features

  • (client) Implement initial refresh count and config control #153
  • (docker) BREAKING: Use debian image as default
  • (youtube) Surface library history playlist and raw recently played for debugging #156
  • (youtube) Sync cookies with those returned from YTM responses #158
  • (youtube) Use full-fat list diffing to watch for new plays #156
  • (No Category) Update normalize-url to prevent port erasure #155

Miscellaneous Tasks

  • (ci) Update setup-node to v4 to squash node deprecation warnings
  • (No Category) Npm audit fixes
  • (No Category) Update dependencies

Refactor

  • (client) Use same init logic as source
  • (config) BREAKING: Move scrobble thresholds to options
  • (config) BREAKING: Move source retry config to options
  • (config) BREAKING: Move remaining common options out of source data and into options
  • (config) BREAKING: Move common options out of client config and into new option property
  • (No Category) Move all init logic into common abstract base class
  • (No Category) Use @foxxmd/get-version to render app version

Ci

  • (No Category) Use checked out repo to get git info rather than GH variables
  • (No Category) Implement gated automated PR building
  • (No Category) Add package cleanup and manual triggers

Don't miss a new multi-scrobbler release

NewReleases is sending notifications on new releases.