|
10 | 10 | * [Subsonic](#subsonic) |
11 | 11 | * [Jellyfin](#jellyfin) |
12 | 12 | * [Last.fm (Source)](#lastfm--source-) |
| 13 | + * [Listenbrainz (Source)](#listenbrainz--source-) |
13 | 14 | * [Deezer](#deezer) |
14 | 15 | * [Youtube Music](#youtube-music) |
| 16 | + * [MPRIS (Linux Desktop)](#mpris) |
| 17 | + * [Mopidy](#mopidy) |
15 | 18 | * [Client Configurations](#client-configurations) |
16 | 19 | * [Maloja](#maloja) |
17 | 20 | * [Last.fm](#lastfm) |
| 21 | + * [Listenbrainz](#listenbrainz) |
18 | 22 | * [Monitoring](#monitoring) |
19 | 23 | * [Webhooks](#webhook-configurations) |
20 | 24 | * [Health Endpoint](#health-endpoint) |
@@ -266,6 +270,20 @@ No support for ENV based for Last.fm as a client (only source) |
266 | 270 |
|
267 | 271 | See [`lastfm.json.example`](/config/lastfm.json.example), change `configureAs` to `source`. Or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FLastfmSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) |
268 | 272 |
|
| 273 | +# [Listenbrainz (Source)](https://listenbrainz.org) |
| 274 | + |
| 275 | +You will need to run your own Listenbrainz server or have an account [on the official instance](https://listenbrainz.org/login/) |
| 276 | + |
| 277 | +On your [profile page](https://listenbrainz.org/profile/) find your **User Token** to use in the configuration. |
| 278 | + |
| 279 | +**NOTE:** You cannot use ENV variables shown in the [Listenbrainz Client config](#listenbrainz) -- multi-scrobbler assumes Listenbrainz ENVs are always used for the **client** configuration. You must use the file-based config from below to setup Listenbrainz as a Source. |
| 280 | + |
| 281 | +### File-Based |
| 282 | + |
| 283 | +See [`listenbrainz.json.example`](/config/listenbrainz.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23%2Fdefinitions%2FListenBrainzSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) |
| 284 | + |
| 285 | +**Change `configureAs` to `source`** |
| 286 | + |
269 | 287 | ## [Deezer](https://deezer.com/) |
270 | 288 |
|
271 | 289 | Create a new application at [Deezer Developers](https://developers.deezer.com/myapps) |
@@ -322,6 +340,125 @@ NOTES: |
322 | 340 |
|
323 | 341 | See [`ytmusic.json.example`](/config/ytmusic.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FYTMusicSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) |
324 | 342 |
|
| 343 | +## [MPRIS](https://specifications.freedesktop.org/mpris-spec/latest/) |
| 344 | + |
| 345 | +MPRIS is a standard interface for communicating with Music Players on **linux operating systems.** |
| 346 | + |
| 347 | +If you run Linux and have a notification tray that shows what media you are listening to, you likely have access to MPRIS. |
| 348 | + |
| 349 | + |
| 350 | + |
| 351 | +multi-scrobbler can listen to this interface and scrobble tracks played by **any media player** that communicates to the operating system with MPRIS. |
| 352 | + |
| 353 | +**NOTE:** multi-scrobbler needs to be running as a [**Local Installation**](/docs/installation.md#local) in order to use MPRIS. This cannot be used from docker. |
| 354 | + |
| 355 | +### ENV-Based |
| 356 | + |
| 357 | +| Environmental Variable | Required? | Default | Description | |
| 358 | +|------------------------|-----------|---------|----------------------------------------------------------------------------------| |
| 359 | +| MPRIS_ENABLE | No | | Use MPRIS as a Source (useful when you don't need any other options) | |
| 360 | +| MPRIS_BLACKLIST | No | | Comma-delimited list of player names not to scrobble from | |
| 361 | +| MPRIS_WHITELIST | No | | Comma-delimited list of players names to ONLY scrobble from. Overrides blacklist | |
| 362 | + |
| 363 | +### File-Based |
| 364 | + |
| 365 | +See [`mpris.json.example`](/config/mpris.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23%2Fdefinitions%2FMPRISSourceConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) |
| 366 | + |
| 367 | +## [Mopidy](https://mopidy.com/) |
| 368 | + |
| 369 | +Mopidy is a headless music server that supports playing music from many [standard and non-standard sources such as Pandora, Bandcamp, and Tunein.](https://mopidy.com/ext/) |
| 370 | + |
| 371 | +multi-scrobbler can scrobble tracks played from any Mopidy backend source, regardless of where you listen to them. |
| 372 | + |
| 373 | +### File-Based |
| 374 | + |
| 375 | +See [`mopidy.json.example`](/config/mopidy.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23%2Fdefinitions%2FMopidySourceConfig/%23%2Fdefinitions%2FMopidyData?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fsource.json) |
| 376 | + |
| 377 | +Configuration Options: |
| 378 | + |
| 379 | +##### `url` |
| 380 | + |
| 381 | +The URL used to connect to the Mopidy server. You MUST have [Mopidy-HTTP extension](https://mopidy.com/ext/http) enabled. |
| 382 | + |
| 383 | +If no `url` is provided a default is used which assumes Mopidy is installed on the same server as multi-scrobbler: `ws://localhost:6680/mopidy/ws/` |
| 384 | + |
| 385 | +Make sure the hostname and port number match what is found in the Mopidy configuration file `mopidy.conf`: |
| 386 | + |
| 387 | +``` |
| 388 | +... |
| 389 | +
|
| 390 | +[http] |
| 391 | +hostname = localhost |
| 392 | +port = 6680 |
| 393 | +
|
| 394 | +... |
| 395 | +``` |
| 396 | + |
| 397 | +The URL used to connect ultimately must be formed like this: `[protocol]://[hostname]:[port]/[path]` |
| 398 | +If any part of this URL is missing multi-scrobbler will use a default value, for your convenience. This also means that if any part of your URL is **not** standard you must explicitly define it. |
| 399 | + |
| 400 | +Part => Default Value |
| 401 | + |
| 402 | +* Protocol => `ws://` |
| 403 | +* Hostname => `localhost` |
| 404 | +* Port => `6680` |
| 405 | +* Path => `/mopidy/ws/` |
| 406 | + |
| 407 | +EX |
| 408 | + |
| 409 | +```json |
| 410 | +{ |
| 411 | + "url": "mopidy.mydomain.com" |
| 412 | +} |
| 413 | +``` |
| 414 | + |
| 415 | +MS transforms this to: `ws://mopidy.mydomain.com:6680/mopidy/ws/` |
| 416 | + |
| 417 | +```json |
| 418 | +{ |
| 419 | + "url": "192.168.0.101:3456" |
| 420 | +} |
| 421 | +``` |
| 422 | + |
| 423 | +MS transforms this to: `ws://192.168.0.101:3456/mopidy/ws/` |
| 424 | + |
| 425 | +```json |
| 426 | +{ |
| 427 | + "url": "mopidy.mydomain.com:80/MOPWS" |
| 428 | +} |
| 429 | +``` |
| 430 | + |
| 431 | +MS transforms this to: `ws://mopidy.mydomain.com:80/MOPWS` |
| 432 | + |
| 433 | + |
| 434 | +#### URI Blacklist/Whitelist |
| 435 | + |
| 436 | +If you wish to disallow or only allow scrobbling from some sources played through Mopidy you can specify these using `uriBlacklist` or `uriWhitelist` in your config. multi-scrobbler will check the list to see if any string matches the START of the `uri` on a track. If whitelist is used then blacklist is ignored. All strings are case-insensitive. |
| 437 | + |
| 438 | +EX: |
| 439 | + |
| 440 | +```json |
| 441 | +{ |
| 442 | + "uriBlacklist": ["soundcloud"] |
| 443 | +} |
| 444 | +``` |
| 445 | + |
| 446 | +Will prevent multi-scrobbler from scrobbling any Mopidy track that start with a `uri` like `soundcloud:song:MySong-1234` |
| 447 | + |
| 448 | +#### Album Blacklist |
| 449 | + |
| 450 | +For certain sources (Soundcloud) Mopidy does not have all track info (Album) and will instead use "Soundcloud" as the Album name. You can prevent multi-scrobbler from using this bad Album data by adding the fake Album name to this list. Multi-scrobbler will still scrobble the track, just without the bad data. All strings are case-insensitive. |
| 451 | + |
| 452 | +EX: |
| 453 | + |
| 454 | +```json |
| 455 | +{ |
| 456 | + "albumBlacklist": ["SoundCloud", "Mixcloud"] |
| 457 | +} |
| 458 | +``` |
| 459 | + |
| 460 | +If a track would be scrobbled like `Album: Soundcloud, Track: My Cool Track, Artist: A Cool Artist` |
| 461 | +then multi-scrobbler will instead scrobble `Track: My Cool Track, Artist: A Cool Artist` |
325 | 462 |
|
326 | 463 | # Client Configurations |
327 | 464 |
|
@@ -361,6 +498,25 @@ or replace `localhost:9078` with your own base URL |
361 | 498 |
|
362 | 499 | See [`lastfm.json.example`](/config/lastfm.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23/%23%2Fdefinitions%2FLastfmClientConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fclient.json) |
363 | 500 |
|
| 501 | +## [Listenbrainz](https://listenbrainz.org) |
| 502 | + |
| 503 | +You will need to run your own Listenbrainz server or have an account [on the official instance](https://listenbrainz.org/login/) |
| 504 | + |
| 505 | +On your [profile page](https://listenbrainz.org/profile/) find your **User Token** to use in the configuration. |
| 506 | + |
| 507 | +### ENV-Based |
| 508 | + |
| 509 | + |
| 510 | +| Environmental Variable | Required? | Default | Description | |
| 511 | +|------------------------|-----------|-------------------------------|---------------------------------| |
| 512 | +| LZ_TOKEN | Yes | | User token from your LZ profile | |
| 513 | +| LZ_USER | Yes | | Your LZ username | |
| 514 | +| LZ_URL | No | https://api.listenbrainz.org/ | The base URL for the LZ server | |
| 515 | + |
| 516 | +### File-Based |
| 517 | + |
| 518 | +See [`listenbrainz.json.example`](/config/listenbrainz.json.example) or [explore the schema with an example and live editor/validator](https://json-schema.app/view/%23%2Fdefinitions%2FListenBrainzClientConfig?url=https%3A%2F%2Fraw.githubusercontent.com%2FFoxxMD%2Fmulti-scrobbler%2Fdevelop%2Fsrc%2Fcommon%2Fschema%2Fclient.json) |
| 519 | + |
364 | 520 | # Monitoring |
365 | 521 |
|
366 | 522 | multi-scrobbler supports some common webhooks and a healthcheck endpoint in order to monitor Sources and Clients for errors. |
|
0 commit comments