Releases: FoxxMD/multi-scrobbler
v0.9.10
v0.9.9
What's New?
This is a small release mainly for some bug fixes and documentation improvements.
Plex Source Temporary Fix
Plex 1.41.9.9912 introduced changes in their API that have not been accounted for in the underlying library multi-scrobbler uses to communicate with Plex. This causes issues in multi-scrobbler so this release merges a temporary fix for this error. No interaction is required to fix this error from the user side.
Another minor release will be cut once @lukehagar/plexjs merges the upstream fix for the API.
Intentional Scrobble Repeat Detection
Improvements to how multi-scrobbler tracks Sources that provide Player position data now prevents scrobbles from being detected as duplicates when they are intentionally repeated by the user. #328 #318
You can now keep that track on repeat to your heart's content knowing MS will scrobble all 20+ consecutive plays. I don't judge ❤️
Full Changelog
Bug Fixes
- (lastfm) Fix lastfm providing empty string for non-defined album #323
- (listenbrainz) Fix sending undefined release_name in scrobble #323
- (plex) Fix regression with allowing non-music when using librariesAllow
- (plex) Temporary fix for library response validation #314
- (No Category) Add last played data and check for repeat on new Play #318
Documentation
- (No Category) Add Source client config guidance #325
- (No Category) Update docusaurus to 3.8
- (No Category) Fix social card image
- (No Category) Add clarifying callout for multi-use components
- (No Category) Remove koito mentions from LZ docs
- (No Category) Update readme Koito entries
- (No Category) Improve wording around Now Playing state
Features
- (No Category) Track if play is a repeat and use in duplicate scrobble detection #318
Refactor
- (No Category) Move Play position closeness and duration comparisons to own functions
0.9.8
What's New?
Koito Source/Client
v0.9.4 introduced Koito support using the existing Listenbrainz Source/Client.
Now, this release introduces full Source and Client implementations for Koito which enables better support/functionality for Koito configuration and any future features.
Thanks to all the feedback and testers in #300 !
Important
If you are currently using Koito with Listenbrainz Source/Client you DO NOT need to migrate. The existing LZ implementation will continue to support Koito.
It is still recommended to migrate as the LZ implementation has limited functionality for Koito and future releases will definitely add more functionality. Migrating is also easy! Just rename a few variables/fields and check your URL. See below:
Migrating
Instructions below based on which type of MS config you are using:
ENV Config
Rename LZ_ prefixed envs to KOITO_
File Config
Rename listenbrainz.json to koito.json. If you have additional non-koito listenbrainz client/sources then make sure to separate them into different files.
AIO Config
Rename "type": "listenbrainz" to "type": "koito"
Koito URL
Your existing URL config will continue to work as-is. However, I recommend that you change it to the Koito base url only as this will be easier for MS to work with. The "base url" is the same URL you would use to access Koito through a browser.
KOITO_URL |
MS Detected Base URL | Example Scrobble Api URL |
|---|---|---|
http://192.168.0.100:4110 |
http://192.168.0.100:4110 |
http://192.168.0.100:4110/apis/listenbrainz/1 |
https://koito.mydomain.com |
https://koito.mydomain.com |
https://koito.mydomain.com/apis/listenbrainz/1 |
http://192.168.0.100:4110/apis/listenbrainz |
http://192.168.0.100:4110 |
http://192.168.0.100:4110/apis/listenbrainz/1 |
http://192.168.0.100:80/koito |
http://192.168.0.100:80/koito |
http://192.168.0.100:80/koito/apis/listenbrainz/1 |
Docs Update
Docs have had a minor refresh. Some highlights:
- Source/Clients sorted alphabetically for better readability
- Removed outdated information in FAQ and on Flatpak sections
- Fixed anchor scrolling
- Added Koito to Quickstart clients
- Added MPRIS guidance for Docker installs and remote socket instructions
Full Changelog
Features
- (koito) Implement Koito client
- (koito) Implement Koito Source
- (listenbrainz) Add submission_client #224
- (listenbrainz) Add additional player/service meta info for LZ scrobbles #224
- (mpris) Better handling of socket error on connection check
- (plex) Add libraries allow/block warning
- (No Category) Add more logging to apprise errors #158
- (No Category) Add RT Player metrics to player logging
Bug Fixes
- (plex) Increase max drift to 35 seconds to account for symfonium lag #271
- (plex) Strict comparison of library names #326
- (No Category) Only return interpolated album value if not undefined
- (No Category) Superagent type error false positive
Documentation
- (mpris) Add remote socket guidance
- (No Category) Add Koito quickstart instructions
- (No Category) Add Koito client/source docs
- (No Category) Update MPRIS instructions for docker
- (No Category) Remove flatpak install guidance
- (No Category) Update docker installation wording
- (No Category) Sort Source/Clients alphabetically
- (No Category) Remove old FAQ entries
- (No Category) Add updating instructions
- (No Category) Fix anchor scrolling by specifying logo height
- (No Category) Hide navbar on scroll
Miscellaneous Tasks
- (listenbrainz) Add guidance in logging to switch to Koito source/client
- (No Category) Update superagent types
0.9.7
What's New?
Now Playing
Multi-scrobbler can now report the currently playing track (Now Playing) for scrobble services that support this functionality -- Last.fm and Listenbrainz.
This functionality is default enabled for all clients but can be configured globally through ENVs or individually per-client. Consult the docs to see how this functionality works and how it can be customized.
Thanks to @msparkles for the PR providing initial support for this feature! 🎉
Full Changelog
Features
- (subsonic) Implement filtering plays by user in #319
- (lastfm) Now Playing by @msparkles in #316 #164
- (listenbrainz) Implement Now Playing functionality #74
- (listenbrainz) Include more ids/fields in submit additional_info #311
- (No Category) Add config source to startup logging #309
Bug Fixes
- Guard against undefined type in config.json #310
Documentation
- Improve example config rendering for ambiguous configs #310
Now Playing Release Candidate 1
What's New?
This is a pre-release that introduces Now Playing functionality for Last.fm and Listenbrainz scrobble Clients. Please see this comment for MS behavior/configuration for this functionality and report any issues, thanks.
v0.9.6
v0.9.5
What's New?
Deezer ARL Source
Thanks to @Ectalite providing a premium account for development, as well as a proof of concept for accessing Deezer with ARL, the previously deprecated Deezer Source now has a new, working implementation! 🎉
See the documentation for setup and configuration
This new implementation comes with a few caveats to be aware of:
- Only works with a premium account because Deezer only records full plays of a track which is a feature only available with premium
- The method for accessing Deezer's API (ARL), while widely used by other projects, is unofficial:
- Deezer may break this functionality at any time
- Using it likely violates Deezer's TOS. Use this method at your own risk.
If you have any issues with Deezer reporting duplicate plays when using third party devices (Sonos), see the docs to tweak detection behavior.
Full Changelog
Features
- (deezer internal) Add fuzzy discovery ignore option
- (No Category) Implement Deezer Internal (ARL) Source #296
- (No Category) Fuzzy diff threshold configurable
- (No Category) Implement better during/range temporal comparisons
Documentation
- (deezer) Rewrite Deezer Source with ARL implementation
0.9.4
What's New?
Initial Koito Implementation
Multi-scrobbler now supports Koito, a new scrobbler application, as both a Client and a Source using the existing Listenbrainz implementation.
Use a Listenbrainz configuration, as a Client or Source, with a custom url pointing to the Koito scrobble endpoint like http://your_koito_server/apis/listenbrainz/1.
A more fully-featured, independent, Koito implementation will be introduced in a future release.
Full Changelog
Features
- (jellyfin) Add musicbrainz metadata #297
- (listenbrainz) Detect /1/ version prefix on base URL
- (listenbrainz) Implement limited support for Koito as Listenbrainz Source/Client #300
Bug Fixes
- (listenbrainz) Normalize URL and join parts correctly
v0.9.3
What's New?
Removed Flatpak
Flatpak has been a technical burden that has not gotten easier to maintain since its inception. Due to being a tiny percentage of the install base, and a disproportionate developer effort for this percentage, I have decided to drop support for this installation method.
You can read more about the challenges MS has had with Flathub here. If anyone is willing to contribute and maintain a flatpak distribution I would be willing to support it again.
Fixes for Plex
Previous refactoring to introduce real-time player emulation has had a few kinks since implementing the new Plex Source, mainly due to some inconsistencies with how Plex reports duration and playback position. This release includes a few fixes that should resolve these bugs and make the Plex Source more stable.
Full Changelog
Bug Fixes
- (plex) On Plex webhook routes filter plex sources to get webhook source only #291
- (ui) Guard against null listenedDuration #285
- (No Category) Fix NaN and undefined initial states for rt player #292
Documentation
- (No Category) Remove flatpak installation method #287
Miscellaneous Tasks
- (No Category) Update flatpak description
- (No Category) Update devcontainer to node 20 to match docker image
Testing
- (No Category) Fix real time player not triggered during event loop
0.9.2
What's New?
So many new Sources! With this release Multi-Scrobbler now supports 20+ Sources!
Additionally, many improvements to resuming scrobbles from long-lived Sources have made their way into this release. Users who keep their players open for long periods should see less false positive scrobbles.
Listenbrainz and Last.fm "Scrobble Endpoint" Sources
Multi-scrobbler can now "pretend" to be a custom Listenbrainz or Last.fm server so that your apps that support scrobbling to custom endpoints for these services can now use Multi-scrobbler instead. See Source configuration for Listenbrainz (Endpoint) and Last.fm (Endpoint).
Azuracast Source
Monitor an Azuracast radio station and scrobble tracks when it is live, has X number of listeners, or manually from the UI.
Icecast Source
Monitor an Icecast or Shoutcast radio station and scrobble tracks automatically or manually from the UI.
Yamaha MusicCast
Scrobble from Yamaha receiver/devices that support the MusicCast service. Currently supports any music played from USB/Network/CD inputs.
Changelog Highlights
Bug Fixes
- (player) Check for 0 duration before finalizing listen session with duration-based calculation
- (source) Do not calculate polling interval decrease if duration does not exist
- (ui) Update status indicator for ingress sources
- (ytm) Recover artist/album from YTM when not surfaced by youtube.js #280
- (No Category) Missing optional period on vs. when parsing artist
- (No Category) Filter components by name and check for undefined #273
- (No Category) Use last known position for final range when cleaning up stale RT player
- (No Category) Better handling of 0 duration tracks
Documentation
- (No Category) Fix extra array in title modification example
- (No Category) Add primary artist extraction examples for scrobble modification
Features
- (azuracast) Add azuracast source implementation
- (icecast) Implement Icecast Source
- (lastm) Implement Lastfm endpoint source
- (listenbrainz) Implement LZ endpoint source
- (musiccast) Implement MusicCast Source
- (source) Add stale/orphaned intervals as user configurable
- (source) Clear listening range on stale to prevent erroneous scrobble on resume
- (source) Add relative time since last activity to logging
- (No Category) Use human-friendly timestamp for stale/ophan interva logging
- (No Category) Add ENVs for default scrobble threshold for duration/percent
Miscellaneous Tasks
- (No Category) Add more log guidance on bug report
- (No Category) Bump YTM dependency version
- (ci) Add context to build-push so it uses checked out PR ref
Testing
- (No Category) Add modification example for parsing a primary artist from delimited string
- (No Category) Add tests for scrobble behavior when cleaning up players
Full Changelog: 0.9.1...0.9.2