Find a file
FoxxMD 04ffc0a589 refactor: Restructure server directory
* Rename to backend to better reflect what it is
* Move server functionality out of entry file and into own server subdirectory
* Rename 'apis' folder to 'vendor' to reflect usage and move into common
* Rename 'clients' folder to 'scrobblers' reflect usage and prevent ambiguity with client CRA folder
2023-08-24 11:12:27 -04:00
.github chore(github): Update trigger branch for docs deploy to master 2023-07-13 16:12:31 -04:00
assets chore: Clean up site metadata and update logo 2023-08-24 10:26:45 -04:00
codeshift Implement codeshift for transforming import extensions 2023-08-18 12:53:45 -04:00
config docs: Update example configs 2023-08-24 09:40:59 -04:00
docker/root/etc/s6-overlay/s6-rc.d Switch back to NPM because of yarn prod dependency issue 2023-08-18 14:32:56 -04:00
docsite chore: Clean up site metadata and update logo 2023-08-24 10:26:45 -04:00
flatpak chore: Clean up site metadata and update logo 2023-08-24 10:26:45 -04:00
patches POC CRA with existing express server 2023-08-02 14:18:02 -04:00
public chore: Clean up site metadata and update logo 2023-08-24 10:26:45 -04:00
src refactor: Restructure server directory 2023-08-24 11:12:27 -04:00
.dockerignore refactor: Restructure server directory 2023-08-24 11:12:27 -04:00
.gitignore fix(web): Implement log prefetch for dashboard 2023-08-17 13:40:30 -04:00
.mocharc.json feat: Implement test skeleton and basic testing for LZ listen parsing 2023-08-22 12:52:49 -04:00
.nvmrc Update yarn lock and nvm 2023-08-15 12:47:51 -04:00
.nycrc.json refactor: Restructure server directory 2023-08-24 11:12:27 -04:00
cliff.toml chore: Add git-cliff template 2023-06-07 10:01:30 -04:00
docker-compose.yml feat: Add more IP info and docker hint at server startup 2023-08-23 12:33:32 -04:00
Dockerfile feat: Add more IP info and docker hint at server startup 2023-08-23 12:33:32 -04:00
LICENSE Create LICENSE 2020-12-06 21:51:20 -05:00
nodemon.json Add nodemon config to prevent auth json file writes from causing server to restart 2023-08-17 16:06:10 -04:00
package-lock.json refactor: Restructure server directory 2023-08-24 11:12:27 -04:00
package.json refactor: Restructure server directory 2023-08-24 11:12:27 -04:00
README.md Migrate all docs to docsite 2023-07-13 15:40:48 -04:00
register.js refactor: Restructure server directory 2023-08-24 11:12:27 -04:00
tailwind.config.js refactor: Re-organize server/client structure so everything exists on same port 2023-08-16 14:47:21 -04:00
tsconfig.json refactor: Restructure server directory 2023-08-24 11:12:27 -04:00
typedoc.json feat: Implement somewhat-working docusaurus site 2023-07-13 15:08:00 -04:00
webpack.config.server.js refactor: Restructure server directory 2023-08-24 11:12:27 -04:00

multi-scrobbler

Latest Release License: MIT Docker Pulls

multi-scrobbler logo

A javascript app to scrobble music you listened to, to Maloja, Last.fm, and ListenBrainz

Why should I use this over a browser extension and/or mobile app scrobbler?

  • Platform independent -- Because multi-scrobbler communicates directly with service APIs it will scrobble everything you play regardless of where you play it. No more need for apps on every platform you use!
  • Open-source -- Get peace of mind knowing exactly how your personal data is being handled.
  • Track your activity regardless of where you listen -- Scrobble from many Sources to one Client with ease and without duplicating tracks.
  • Manage scrobbling for others -- Scrobble for your friends and family without any setup on their part. Easily silo sources to specific clients to keep plays separate.

But I already scrobble my music to Last.fm/ListenBrainz, is multi-scrobbler for me?

Yes! You can use Last.fm as a Source or Listenbrainz as a Source to forward scrobbles from your profile to any other Client! 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.

How Does multi-scrobbler (MS) Work?

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.

Source

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, Youtube Music, Airsonic, etc...

Source configurations consist of:

  • A friendly name.
  • Any data needed to communicate or authenticate with the Source.
  • An optional list of Client names that the Source should scrobble to. If omitted the Source also scrobbles to all configured Clients.

Client

A Client is an application that stores the historical information about what songs you have played (scrobbles). Examples are Maloja, Last.fm, Listenbrainz...

Client configurations consist of:

  • A friendly name.
  • Any data needed to communicate or authenticate with the Client.

Installation

See the Installation documentation

Configuration

See the Configuration documentation

Usage

A status page with statistics, recent logs, and some runtime configuration options can be found at

http://localhost:9078

Output is also provided to stdout/stderr as well as file if specified in configuration.

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.

Help/FAQ

Having issues with connections or configuration? Check the FAQ before creating an issue!

License

MIT