Skip to main content

spotify_monitor

GitHub Release PyPI Version GitHub Stars Python Versions License Last Commit Maintenance

Powerful real-time tracker for Spotify friend music activity: monitor listening habits, auto-sync playback to your local client, detect skipped tracks and receive instant notifications for every beat your friends play.

spotify_monitor_screenshot

🚀 Quick Install & Run

Python from PyPI

pip install spotify_monitor
spotify_monitor --setup

Docker Compose

On a native Linux container engine, the container needs your numeric user ID and group ID so files it creates in the current directory belong to you instead of root. Run the two export commands in the same terminal before the Compose commands. Docker-compatible runtimes on macOS and Windows normally handle bind-mount ownership, so users on those systems can usually skip both export commands.

curl -fsSLO https://raw.githubusercontent.com/misiektoja/spotify_monitor/refs/heads/main/docker-compose.yml
export SPOTIFY_MONITOR_UID="$(id -u)"
export SPOTIFY_MONITOR_GID="$(id -g)"
docker compose run --rm spotify_monitor --setup
docker compose up --no-log-prefix

Docker run

On macOS shells or Windows PowerShell with a Docker-compatible runtime that provides the docker CLI:

docker pull misiektoja/spotify-monitor:latest
docker run --rm -it --init -v "${PWD}:/data:z" misiektoja/spotify-monitor:latest --setup
docker run --rm -it --init -v "${PWD}:/data:z" misiektoja/spotify-monitor:latest --config-file /data/spotify_monitor.conf

The first command starts the setup wizard. The second starts monitoring with the files created by the wizard. Both commands keep configuration, private values and output in the current directory.

These commands use macOS shell or Windows PowerShell syntax. In Windows Command Prompt replace ${PWD} with %cd%.

On Linux, --user "$(id -u):$(id -g)" runs the container with your numeric user and group IDs. This lets the container write files that your host account can edit:

docker pull misiektoja/spotify-monitor:latest
docker run --rm -it --init --user "$(id -u):$(id -g)" -v "$PWD:/data:z" misiektoja/spotify-monitor:latest --setup
docker run --rm -it --init --user "$(id -u):$(id -g)" -v "$PWD:/data:z" misiektoja/spotify-monitor:latest --config-file /data/spotify_monitor.conf

For the manual single-file method, optional extras and upgrade commands for every method, see Installation.

Features

🔍 Real-time Tracking

  • Friend Activity: Monitor songs listened by Spotify users in real-time.
  • Presence Detection: Detect when friends get online or offline.
  • Session Stats: Display duration, track counts and songs on loop.

🎮 Playback Control

  • Auto-Sync: Automatically play friends' songs in your local Spotify client.
  • Smart Pause: Pause or switch tracks when the monitored user goes offline.
  • Crossfade Support: Detect and annotate crossfaded songs during transitions.

📊 Rich Insights

  • Track Context: View playlist, artist and album info with clickable URLs.
  • Skip Detection: Identify exactly when and how long a song was played.
  • Global Search: Instant links to Spotify, YouTube Music, Apple Music, Tidal, lyrics and more.

🔔 Smart Notifications

  • Multi-Channel: Instant alerts via Email and Webhooks (Discord, ntfy etc.).
  • Detailed Alerts: Choose activity, tracked-song, every-song, loop and error alerts.
  • Session Summaries: Receive detailed reports when a friend finishes a session.
  • Error Reporting: Be notified if the monitoring process hits a snag.

⚙️ Power Features

  • Auth Flexibility: Cookie or Desktop Client access with automatic web-player metadata fallback and optional legacy OAuth app support.
  • CSV Logging: Save every listened song with full timestamps to a CSV file.
  • Flexible Config: Support for files, dotenv and environment variables.
  • Signal Control: Manage the running script via system signals (macOS/Linux).
  • Docker Ready: Run through Docker Hub, Docker Compose or a local image with persistent configuration, secrets and output.

spotify_monitor_skipped

For pause and resume tracking, progress indicators and offline mode, see lastfm_monitor.

For Spotify profile and playlist change tracking, see spotify_profile_monitor.

For Spotify Web Player token and TOTP utilities, see Debugging Tools.

Documentation

Full documentation is available at misiektoja.github.io/spotify_monitor:

  • Installation - PyPI, manual script, Docker installation and upgrades
  • Quick Start - setup wizard, authentication and first run
  • Configuration - Spotify login, targets, SMTP, webhooks and secrets
  • Usage - command formats, monitoring, container operation, notifications, playback and output
  • Troubleshooting - the --doctor self-check and logging levels
  • Debugging Tools - TOTP token testing and secret extraction

Quick Start

New here? Run the setup wizard

The fastest way to get started is --setup. It asks who to monitor, how to connect to Spotify and which alerts you want then saves a ready-to-run configuration. Private values stay in .env.

On a native Linux container engine, set SPOTIFY_MONITOR_UID="$(id -u)" and SPOTIFY_MONITOR_GID="$(id -g)" before using Docker Compose. These values make files created by the container belong to your host user. Docker-compatible runtimes on macOS and Windows normally do not need them.

Use the command that matches how you run the tool:

# PyPI install
spotify_monitor --setup

# Manual Python script on macOS or Linux
python3 spotify_monitor.py --setup

# Manual Python script on Windows
python spotify_monitor.py --setup

# Docker Compose (skip curl if you cloned the repository)
curl -fsSLO https://raw.githubusercontent.com/misiektoja/spotify_monitor/refs/heads/main/docker-compose.yml
docker compose run --rm spotify_monitor --setup

# Docker image on macOS or Windows
docker run --rm -it --init -v "${PWD}:/data:z" misiektoja/spotify-monitor:latest --setup

# Docker image on Linux
docker run --rm -it --init --user "$(id -u):$(id -g)" -v "$PWD:/data:z" misiektoja/spotify-monitor:latest --setup

Running the tool with no arguments offers the wizard if you have not saved a target. If a target is already saved, it starts monitoring that target. The wizard detects the installation method and shows matching commands.

Before monitoring

Spotify only shows a person's listening activity when both of these conditions are met:

  1. The Spotify account used by Spotify Monitor follows the person you want to monitor.
  2. That person has enabled listening activity sharing in Spotify.

The setup wizard checks whether the monitoring account follows the target. It can send the follow request after you confirm. To follow manually, open the target's profile in the Spotify desktop or mobile app. You can use Share > Copy link to profile and paste the complete link into the wizard. You do not need to extract the user ID. See Following the Monitored User.

Firefox import is the recommended login path for local and container installs. Docker users mount the host Firefox profile read-only for one import command then reuse the cookie saved in .env. Hidden manual sp_dc entry remains available as a fallback. See Container Operation or the full Quick Start guide for details.

Not sure which command you need?

I want to... Run this
Set up Spotify Monitor for the first time Use the setup command for your installation above
Start monitoring with existing authentication spotify_monitor TARGET, where TARGET is a raw ID, spotify:user: URI or profile URL
Start a target saved as TARGET_USER_URI_ID spotify_monitor --config-file spotify_monitor.conf or docker compose up --no-log-prefix
Check authentication, connectivity and one target spotify_monitor --doctor TARGET
List Spotify friends visible to the configured account spotify_monitor --list-friends
Import a Spotify login from Firefox Open Spotify Web Player in Firefox, sign in then run spotify_monitor --import-browser-cookie --browser firefox
Safely set or replace SP_DC_COOKIE Run spotify_monitor --set-sp-dc and enter sp_dc at the hidden prompt
Configure and test webhook alerts Use the setup wizard or follow Webhook Settings

Manual commands

The examples below use PyPI. For a manual script, replace spotify_monitor with python3 spotify_monitor.py on macOS or Linux. Use python spotify_monitor.py on Windows. Docker users can copy the complete command prefix from the Usage guide.

Sign in to Spotify Web Player with Firefox then import that login:

spotify_monitor --import-browser-cookie --browser firefox

If browser import is unavailable, enter sp_dc through a hidden prompt:

spotify_monitor --set-sp-dc

Start monitoring with a raw user ID, Spotify user URI or profile URL. A target saved by the wizard does not need to be repeated:

spotify_monitor <spotify_user_uri_id>
spotify_monitor "https://open.spotify.com/user/spotify_user_uri_id"
spotify_monitor --config-file spotify_monitor.conf

Run the self-check or view every command:

spotify_monitor --doctor <spotify_user_uri_id>
spotify_monitor --list-friends
spotify_monitor --help

For browser profiles, manual cookie extraction, Docker authentication, email and webhook setup, see Configuration. For notification choices, playback controls and output files, see Usage.

Change Log

See RELEASE_NOTES.md for details.

Maintainers

License

Licensed under GPLv3. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spotify_monitor-3.0.1.tar.gz (187.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spotify_monitor-3.0.1-py3-none-any.whl (122.5 kB view details)

Uploaded Python 3

File details

Details for the file spotify_monitor-3.0.1.tar.gz.

File metadata

  • Download URL: spotify_monitor-3.0.1.tar.gz
  • Upload date:
  • Size: 187.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for spotify_monitor-3.0.1.tar.gz
Algorithm Hash digest
SHA256 96804871e5e775107f109d5064b0e12a37d9534c1fc81833329007c1f3019d17
MD5 fa83e34af5d6557b888f3b68243b71f1
BLAKE2b-256 e090deb3067de0e73e2478062662bf9986eb115dadeb671cf08bf19f079a211d

See more details on using hashes here.

Provenance

The following attestation bundles were made for spotify_monitor-3.0.1.tar.gz:

Publisher: publish.yml on misiektoja/spotify_monitor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file spotify_monitor-3.0.1-py3-none-any.whl.

File metadata

  • Download URL: spotify_monitor-3.0.1-py3-none-any.whl
  • Upload date:
  • Size: 122.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for spotify_monitor-3.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 94f32a2c03a2a34ba3439f312a24253560243964b1e73fae85d35abcab1d9a3c
MD5 25543154e39996404e963c14d7c7eb06
BLAKE2b-256 ad93301b9c21afb8819781c6003e4a13cf7023255857115ef9984d5f06594d5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for spotify_monitor-3.0.1-py3-none-any.whl:

Publisher: publish.yml on misiektoja/spotify_monitor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

3.2.1

2 files

3.2

2 files

3.1.1

2 files

3.1

2 files

This release

3.0.1 This release

2 files

3.0

2 files

2.9.2

2 files

2.9.1

2 files

2.9

2 files

2.8

2 files

2.7

2 files

2.6

2 files

2.5

2 files

2.4

2 files

2.3.1

2 files

2.3

2 files

2.2.1

2 files

2.2

2 files

2.1.2

2 files

2.1.1

2 files

2.1

2 files

2.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page