You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+24-35Lines changed: 24 additions & 35 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,66 +31,55 @@ A javascript app to scrobble plays from multiple sources to [Maloja](https://git
31
31
32
32
**But I already scrobble my music to Last.fm, is multi-scrobbler for me?**
33
33
34
-
Yes! You can use [Last.fm as a Source](/docs/configuration.md#lastfm-source) to mirror scrobbles from your Last.fm profile to Maloja. That way you can keep your current scrobble setup as-is but still get the benefit of capturing your data to a self-hosted location.
34
+
Yes! You can use [Last.fm as a **Source**](/docs/configuration.md#lastfm--source-) to mirror scrobbles from your Last.fm profile to Maloja. That way you can keep your current scrobble setup as-is but still get the benefit of capturing your data to a self-hosted location.
35
35
36
36
<imgsrc="/assets/status-ui.jpg"width="800">
37
37
38
-
## Installation
38
+
## How Does multi-scrobbler (MS) Work?
39
39
40
+
You set up configurations for one or more **Sources** and one or more **Clients**. MS monitors all of your configured **Sources**. When new tracks are played by a Source it grabs that information and then sends it (scrobbles it) to all **Clients** that Source is configured to scrobble to.
40
41
41
-
### Locally
42
+
### Source
42
43
43
-
Clone this repository somewhere and then install from the working directory
44
+
A **Source** is a data source that contains information about tracks you are playing like a music player or platform. Examples are **Spotify, Jellyfin, Plex, Airsonic**, etc...
* Any data needed to communicate or authenticate with the Source.
50
+
* An optional list of Client names that the Source should scrobble to. If omitted the Source also scrobbles to all configured Clients.
52
51
53
-
```
54
-
foxxmd/multi-scrobbler:latest
55
-
```
52
+
### Client
56
53
57
-
## Setup
54
+
A **Client** is an application that stores the historical information about what songs you have played (scrobbles). Examples are **Maloja, Last.fm, Listenbrainz**...
58
55
59
-
Some setup is required! See the [configuration](docs/configuration.md) docs for a full reference.
56
+
Client configurations consist of:
60
57
61
-
### TLDR, Minimal Example
62
-
63
-
You want to use multi-scrobbler to scrobble your plays from Spotify to Maloja:
Then use [config.json.example](/config/config.json.example) and drop it in your `CONFIG_DIR` directory
63
+
[See the **Installation** documentation](/docs/installation.md)
79
64
80
-
**Is there an example configuration using everything?**
65
+
## Configuration
81
66
82
-
Yes, check out the [kitchen sink example](/docs/kitchensink.md)
67
+
[See the **Configuration** documentation](/docs/configuration.md)
83
68
84
69
## Usage
85
70
86
71
A status page with statistics, recent logs, and some runtime configuration options can be found at
87
72
88
73
```
89
-
https://localhost:9078
74
+
http://localhost:9078
90
75
```
91
76
Output is also provided to stdout/stderr as well as file if specified in configuration.
92
77
93
-
On first startup you may need to authorize Spotify by visiting the callback URL (which can also be accessed from the status page). Visit the status page above to find the applicable link to trigger this.
78
+
On first startup you may need to authorize Spotify and/or Last.fm by visiting the callback URL (which can also be accessed from the status page). Visit the status page above to find the applicable link to trigger this.
79
+
80
+
## Help/FAQ
81
+
82
+
Having issues with connections or configuration? Check the [FAQ](/docs/FAQ.md) before creating an issue!
These are **example configurations** for all Source/Client types and AIO config.
2
+
3
+
These can be used as-is by renaming them to `.json` and filling or replacing sample data.
4
+
5
+
For docker installations these examples are copied to your configuration directory on first-time use.
6
+
7
+
These are **NOT** exhaustive examples. You should consult the **configuration** documentation and the **schema explorer links** for each source/config type to see a complete list of options and descriptions for all properties.
"maxPollRetries": 0,// optional, default # of automatic polling restarts on error. can be overridden by property in individual config
4
-
"maxRequestRetries": 1,// optional, default # of http request retries a source can make before error is thrown. can be overridden by property in individual config
5
-
"retryMultiplier": 1.5, // optional, default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying). can be overridden by property in individual config
3
+
"maxPollRetries": 0,
4
+
"maxRequestRetries": 1,
5
+
"retryMultiplier": 1.5
6
6
},
7
7
"clientDefaults": {
8
-
"maxRequestRetries": 1,// optional, default # of http request retries a client can make before error is thrown. can be overridden by property in individual config
9
-
"retryMultiplier": 1.5, // optional, default retry delay multiplier (retry attempt * multiplier = # of seconds to wait before retrying). can be overridden by property in individual config
8
+
"maxRequestRetries": 1,
9
+
"retryMultiplier": 1.5
10
10
},
11
11
"sources": [
12
12
{
13
-
"type": "spotify", // required, source type
14
-
"clients": ["myConfig"], // optional, a list of Client config names this Source should scrobble to. Using an empty list or not including this property will make this Source scrobble to all Clients.
15
-
"name": "mySpotifySource", // optional, friendly name for the log
"clients": [],// optional, list of scrobble clients (by config name) that this source should scrobble to. Using an empty list or not including this property will make this source scrobble to all clients.
4
+
"clients": [],
5
5
"data": {
6
-
"clientId": "string", // deezer APPLICATION ID -- required if not providing access token
7
-
"clientSecret": "string", // deezer SECRET KEY -- required if not providing access token
8
-
"accessToken": "string", // deezer access token -- required if not providing client id/secret
9
-
"redirectUri": "http://localhost:9078/deezer/callback",// deezer redirect URI -- required only if not the default shown here. URI must end in "deezer/callback"
10
-
"interval": 60, // optional, how long to wait before calling spotify for new tracks
11
-
// ALSO see config.json.example for default properties that can be overridden here (in sourceDefaults)
0 commit comments