Skip to main content

Kitchen Sink

What's This?

On this page you find contrived, complex usecases for multi-scrobbler that provide examples of equivalent configuration types to fulfill that usecase.

These example are useful for:

  • getting an idea of what you can do with Multi-scrobbler
  • using these examples as a starting point for your own configuration
  • providing an example of the same configuration across different configuration types
tip

More common, straightforward scenarios can be found in the quickstart guide.

Examples

Multiple Sources to Multiple Clients

You are the only user of Multi-scrobbler. You have many Sources you listen to and want to scrobble them to multiple services.

  • You want to scrobble from...
    • A Spotify account
    • A Navidrome instance that you want to use with the built-in listenbrainz scrobble function
    • A shared Plex instance that you want to scrobble only from a specific library named oldies
  • You want to scrobble to...
    • Your decades-old Last.fm account
    • A Koito server for backup
Configuration

Using ENV Config

compose.yaml
services:
multi-scrobbler:
image: foxxmd/multi-scrobbler
container_name: multi-scrobbler
environment:
- TZ=Etc/GMT # Specify timezone from TZ Database name found here https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# spotify
- SPOTIFY_ID=foxxSpotify
- SPOTIFY_CLIENT_ID=H2UvGv8okrFlv2OUoc1lAtK7Xe5EGDgs
- SPOTIFY_CLIENT_SECRET=HvoFE5Ce2hdblNE6vaFBEx6dRVcDdo43
- SPOTIFY_REDIRECT_URI=https://multiscrobbler.example.com/callback

# navidrome listenbrainz endpoint
- LZE_ID=myLzNavidrome
- LZE_TOKEN=myToken

# plex
- PLEX_ID=foxxPlex
- PLEX_URL=192.168.0.233:32400
- PLEX_TOKEN=JtRnwQWD__XMJF8sT3jc
- PLEX_USERS_ALLOW=foxx
- PLEX_LIBRARIES_ALLOW=oldies

# lastfm
- LASTFM_ID=myLFM
- LASTFM_API_KEY=myApiKey
- LASTFM_SECRET=mySecret
- LASTFM_REDIRECT_URI=https://multiscrobbler.example.com/lastfm/callback

# koito
- KOITO_ID=foxxKoi
- KOITO_TOKEN=029b081ba-9156-4pe7-88e5-3be671f5ea2b
- KOITO_USER=admin
- KOITO_URL=http://192.168.0.100:4110

volumes:
- "./config:/config"
ports:
- "9078:9078"
restart: unless-stopped

Scrobble for Multiple People to Multiple Clients

ENV Config Not Possible

In this usescase there is more than one of the same type of Source/Client.

This means only File or AIO configuration types are possible because ENV configuration only supports one Source/Client per type.

You want to scrobble plays for yourself (Foxx), Fred, and Mary:

  • The three of you want to scrobble from...
  • The three of you want to scrobble to...
    • Fred and Mary each have their own Last.fm accounts
    • You have a Koito server
Configuration

Using File Config

CONFIG_DIR/jellyin.json
[
{
"id": "fredJf",
"name": "Freds Jellyfin",
"clients": ["fredLFM"],
"data": {
"url": "https://jellyfin.fred.com",
"user": "Fred",
"apiKey": "c9fae8756fbf481ebd9c5bb56bd6540c"
}
},
{
"id": "maryJf",
"name": "Marys Jellyfin",
"clients": ["maryLFM"],
"data": {
"url": "https://jellyfin.mary.com",
"user": "Mary",
"apiKey": "26fe9c5dc6374542adc4f4d5e8352838"
}
}
]
CONFIG_DIR/plex.json
[
{
"id": "foxxPlex",
"name": "Foxx Plex",
"clients": ["foxxKoi"],
"data": {
"token": "JtRnwQWD__XMJF8sT3jc",
"url": "192.168.0.233:32400"
}
}
]
CONFIG_DIR/lastfm.json
[
{
"id": "maryLFM",
"name": "Marys Lastfm",
"configureAs": "client",
"data": {
"apiKey": "maryApiKey",
"secret": "marySecret",
"redirectUri": "http://localhost:9078/lastfm/callback"
}
},
{
"id": "fredLFM",
"name": "Freds Lastfm",
"configureAs": "client",
"data": {
"apiKey": "fredApiKey",
"secret": "fredSecret",
"redirectUri": "http://localhost:9078/lastfm/callback"
}
}
]
CONFIG_DIR/koito.json
[
{
"id": "foxxKoi",
"name": "Foxx Koito",
"configureAs": "client",
"data": {
"token": "029b081ba-9156-4pe7-88e5-3be671f5ea2b",
"username": "admin",
"url": "http://192.168.0.100:4110"
}
}
]

Use Musicbrainz to Fix Scrobbles from Navidrome

You have multiple Sources of music but your personal, on-filesystem music collection is not well organized.

You want to use the Musicbrainz Transformer to fix any scrobbles that use Navidrome, where your personal collection is located, so that the scrobble artists/album/title are all standardized.

  • You want to scrobble from...
    • A Spotify account
    • A Navidrome instance that you want to use with the built-in listenbrainz scrobble function
      • Plays from this Source should be fixed by Musicbrainz before going to your scrobble Clients
  • You want to scrobble to...
Configuration

Using ENV Config

compose.yaml
services:
multi-scrobbler:
image: foxxmd/multi-scrobbler
container_name: multi-scrobbler
environment:
- TZ=Etc/GMT # Specify timezone from TZ Database name found here https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

# required setup for musicbrainz
- MB_CONTACT=contact@mydomain.com # a real email
# searches with sensible release sorting with the searchOrder
# isrc => basic => artist (native mode)
- MB_PRESETS=default,sensible,native

# spotify
- SPOTIFY_ID=foxxSpotify
- SPOTIFY_CLIENT_ID=H2UvGv8okrFlv2OUoc1lAtK7Xe5EGDgs
- SPOTIFY_CLIENT_SECRET=HvoFE5Ce2hdblNE6vaFBEx6dRVcDdo43
- SPOTIFY_REDIRECT_URI=https://multiscrobbler.example.com/callback

# navidrome listenbrainz endpoint
- LZE_ID=myLzNavidrome
- LZE_TOKEN=myToken
# applies musicbrainz Stage to preTransform of navidrome source
- LZE_TRANSFORMS=musicbrainz

# lastfm
- LASTFM_ID=myLFM
- LASTFM_API_KEY=myApiKey
- LASTFM_SECRET=mySecret
- LASTFM_REDIRECT_URI=https://multiscrobbler.example.com/lastfm/callback

volumes:
- "./config:/config"
ports:
- "9078:9078"
restart: unless-stopped