{"id":13552831,"url":"https://github.com/FoxxMD/multi-scrobbler","last_synced_at":"2025-04-03T04:30:47.567Z","repository":{"id":37898176,"uuid":"311688903","full_name":"FoxxMD/multi-scrobbler","owner":"FoxxMD","description":"Scrobble plays from multiple sources to multiple clients","archived":false,"fork":false,"pushed_at":"2025-03-31T18:33:30.000Z","size":12631,"stargazers_count":535,"open_issues_count":21,"forks_count":19,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-31T21:44:00.633Z","etag":null,"topics":["deezer","docker","jellyfin","kodi","lastfm","listenbrainz","maloja","mopidy","mpris","music","plex","scrobble","self-hosted","spotify","subsonic","tautulli","youtube-music"],"latest_commit_sha":null,"homepage":"https://foxxmd.github.io/multi-scrobbler","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FoxxMD.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-10T14:45:38.000Z","updated_at":"2025-03-31T18:32:00.000Z","dependencies_parsed_at":"2024-02-19T17:05:01.551Z","dependency_job_id":"ae10ca20-b94b-4128-956f-8c69078afcb5","html_url":"https://github.com/FoxxMD/multi-scrobbler","commit_stats":null,"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FoxxMD%2Fmulti-scrobbler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FoxxMD%2Fmulti-scrobbler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FoxxMD%2Fmulti-scrobbler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FoxxMD%2Fmulti-scrobbler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FoxxMD","download_url":"https://codeload.github.com/FoxxMD/multi-scrobbler/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246939069,"owners_count":20857916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deezer","docker","jellyfin","kodi","lastfm","listenbrainz","maloja","mopidy","mpris","music","plex","scrobble","self-hosted","spotify","subsonic","tautulli","youtube-music"],"created_at":"2024-08-01T12:02:11.245Z","updated_at":"2025-04-03T04:30:47.560Z","avatar_url":"https://github.com/FoxxMD.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","Scrobble Clients (w/ Native Support)","Media","🌌 Related"],"sub_categories":["Other","📜 Snippets"],"readme":"# multi-scrobbler\n\n[![Latest Release](https://img.shields.io/github/v/release/foxxmd/multi-scrobbler)](https://github.com/FoxxMD/multi-scrobbler/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Docker Pulls](https://img.shields.io/docker/pulls/foxxmd/multi-scrobbler)](https://hub.docker.com/r/foxxmd/multi-scrobbler)\n[![Docs](https://img.shields.io/badge/Read%20The%20Docs-1082c2)](https://foxxmd.github.io/multi-scrobbler/)\n\n\n\u003cimg src=\"/assets/icon.png\" align=\"right\"\nalt=\"multi-scrobbler logo\" width=\"180\" height=\"180\"\u003e\n\nA javascript app to scrobble music you listened to, to [Maloja](https://github.com/krateng/maloja), [Last.fm](https://www.last.fm), and [ListenBrainz](https://listenbrainz.org)\n\n* Supports scrobbling from many **Sources**\n  * [Spotify](https://foxxmd.github.io/multi-scrobbler/docs/configuration#spotify)\n  * [Plex](https://foxxmd.github.io/multi-scrobbler/docs/configuration#plex) or [~~Tautulli~~](https://foxxmd.github.io/multi-scrobbler/docs/configuration#tautulli)\n  * [Subsonic-compatible APIs](https://foxxmd.github.io/multi-scrobbler/docs/configuration#subsonic) (like [Airsonic](https://airsonic.github.io/) and [Navidrome](https://www.navidrome.org/))\n  * [Jellyfin](https://foxxmd.github.io/multi-scrobbler/docs/configuration#jellyfin)\n  * [WebScrobbler](https://foxxmd.github.io/multi-scrobbler/docs/configuration#webscrobbler)\n  * [Youtube Music](https://foxxmd.github.io/multi-scrobbler/docs/configuration#youtube-music)\n  * [Last.fm](https://foxxmd.github.io/multi-scrobbler/docs/configuration#lastfm-source)\n  * [Last.fm (Endpoint)](https://foxxmd.github.io/multi-scrobbler/docs/configuration#lastfm-endpoint)\n  * [ListenBrainz](https://foxxmd.github.io/multi-scrobbler/docs/configuration#listenbrainz-source)\n  * [ListenBrainz (Endpoint)](https://foxxmd.github.io/multi-scrobbler/docs/configuration#listenbrainz-endpoint)\n  * [~~Deezer~~](https://foxxmd.github.io/multi-scrobbler/docs/configuration#deezer)\n  * [MPRIS (Linux Desktop)](https://foxxmd.github.io/multi-scrobbler/docs/configuration#mpris)\n  * [Mopidy](https://foxxmd.github.io/multi-scrobbler/docs/configuration#mopidy)\n  * [JRiver](https://foxxmd.github.io/multi-scrobbler/docs/configuration#jriver)\n  * [Kodi](https://foxxmd.github.io/multi-scrobbler/docs/configuration#kodi)\n  * [Google Cast (Chromecast)](https://foxxmd.github.io/multi-scrobbler/docs/configuration#google-cast-chromecast)\n  * [Musikcube](https://foxxmd.github.io/multi-scrobbler/docs/configuration#muikcube)\n  * [MPD (Music Player Daemon)](https://foxxmd.github.io/multi-scrobbler/docs/configuration#mpd-music-player-daemon)\n  * [VLC](https://foxxmd.github.io/multi-scrobbler/docs/configuration#vlc)\n  * [Azuracast](https://foxxmd.github.io/multi-scrobbler/docs/configuration#azuracast)\n  * [Yamaha MusicCast](https://foxxmd.github.io/multi-scrobbler/docs/configuration#yamaha-musiccast)\n  * [Icecast](https://foxxmd.github.io/multi-scrobbler/docs/configuration#icecast)\n* Supports scrobbling to many **Clients**\n  * [Maloja](https://foxxmd.github.io/multi-scrobbler/docs/configuration#maloja)\n  * [Last.fm](https://foxxmd.github.io/multi-scrobbler/docs/configuration#lastfm)\n  * [ListenBrainz](https://foxxmd.github.io/multi-scrobbler/docs/configuration#listenbrainz)\n* Monitor status of Sources and Clients using [webhooks (Gotify, Ntfy, Apprise)](https://foxxmd.github.io/multi-scrobbler/docs/configuration#webhook-configurations) or [healthcheck endpoint](https://foxxmd.github.io/multi-scrobbler/docs/configuration#health-endpoint)\n* Supports configuring for single or multiple users (scrobbling for your friends and family!)\n* Web server interface for stats, basic control, and detailed logs\n* Graceful network and client failure handling (queued scrobbles that auto-retry)\n* Smart handling of credentials (persistent, authorization through app)\n* Easy configuration through ENVs or JSON\n* Modify data before scrobbling with [regular expression or search patterns](https://foxxmd.github.io/multi-scrobbler/docs/configuration/transforms)\n* Install using [Docker images for x86/ARM](https://foxxmd.github.io/multi-scrobbler/docs/installation#docker) or [locally with NodeJS](https://foxxmd.github.io/multi-scrobbler/docs/installation#nodejs)\n\n[**Quick Start Guide**](https://foxxmd.github.io/multi-scrobbler/docs/quickstart)\n\n\u003cimg src=\"/assets/status-ui.png\" width=\"800\"\u003e\n\n**Why should I use this over a browser extension and/or mobile app scrobbler?**\n\n* **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!\n* **Open-source** -- Get peace of mind knowing exactly how your personal data is being handled.\n* **Track your activity regardless of where you listen** -- Scrobble from many Sources to one Client with ease and without duplicating tracks.\n* **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.\n\n**But I already scrobble my music to Last.fm/ListenBrainz, is multi-scrobbler for me?**\n\nYes! You can use [Last.fm as a **Source**](https://foxxmd.github.io/multi-scrobbler/docs/configuration#lastfm-source) or [Listenbrainz as a **Source**](https://foxxmd.github.io/multi-scrobbler/docs/configuration#listenbrainz-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.\n\n## How Does multi-scrobbler (MS) Work?\n\nYou 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.\n\n### Source\n\nA **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...\n\nSource configurations consist of:\n\n* A friendly name.\n* Any data needed to communicate or authenticate with the Source.\n* An optional list of Client names that the Source should scrobble to. If omitted the Source also scrobbles to all configured Clients.\n\n### Client\n\nA **Client** is an application that stores the historical information about what songs you have played (scrobbles). Examples are **Maloja, Last.fm, Listenbrainz**...\n\nClient configurations consist of:\n\n* A friendly name.\n* Any data needed to communicate or authenticate with the Client.\n\n## Quick Start\n\n[See the **Quick Start Guide**](https://foxxmd.github.io/multi-scrobbler/docs/quickstart)\n\n## Installation\n\n[See the **Installation** documentation](https://foxxmd.github.io/multi-scrobbler/docs/installation)\n\n## Configuration\n\n[See the **Configuration** documentation](https://foxxmd.github.io/multi-scrobbler/docs/configuration)\n\n## Usage\n\nA status page with statistics, recent logs, and some runtime configuration options can be found at\n\n```\nhttp://localhost:9078\n```\nOutput is also provided to stdout/stderr as well as file if specified in configuration.\n\nOn 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.\n\n## Help/FAQ\n\nHaving issues with connections or configuration? Check the [FAQ](https://foxxmd.github.io/multi-scrobbler/docs/FAQ) before creating an issue!\n\n## Development\n\n[Detailed architecture and development guides for Sources/Clients](https://foxxmd.github.io/multi-scrobbler/docs/development/dev-common)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFoxxMD%2Fmulti-scrobbler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFoxxMD%2Fmulti-scrobbler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFoxxMD%2Fmulti-scrobbler/lists"}