Skip to content

Commit 7eb822b

Browse files
committed
Merge remote-tracking branch 'upstream/main'
2 parents 46f74f7 + d4fbc4c commit 7eb822b

14 files changed

Lines changed: 72 additions & 88 deletions

README.md

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Powerful real-time tracker for Spotify friend music activity: monitor listening
2525
pip install spotify_monitor
2626
```
2727

28-
Run setup by itself:
28+
Run setup wizard:
2929

3030
```sh
3131
spotify_monitor --setup
@@ -41,30 +41,16 @@ Use a macOS shell or Windows PowerShell with a Docker-compatible runtime that pr
4141
docker run --rm --pull=always -it --init -v "${PWD}:/data:z" misiektoja/spotify-monitor:latest --setup
4242
```
4343

44-
After setup finishes, start monitoring with the files created by the wizard:
45-
46-
```sh
47-
docker run --rm -it --init -v "${PWD}:/data:z" misiektoja/spotify-monitor:latest --config-file /data/spotify_monitor.conf
48-
```
49-
50-
The setup command pulls the current image. Both commands keep configuration, private values and output in the current directory.
51-
52-
In Windows Command Prompt replace `${PWD}` with `%cd%`. Windows hosts must use Linux containers.
44+
In Windows Command Prompt replace `${PWD}` with `%cd%` above.
5345

5446
##### Linux
5547

56-
`--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.
48+
Run the container with your numeric user and group IDs (`--user "$(id -u):$(id -g)"` below). This lets the container write files that your host account can edit.
5749

5850
```sh
5951
docker run --rm --pull=always -it --init --user "$(id -u):$(id -g)" -v "$PWD:/data:z" misiektoja/spotify-monitor:latest --setup
6052
```
6153

62-
After setup finishes, start monitoring:
63-
64-
```sh
65-
docker run --rm -it --init --user "$(id -u):$(id -g)" -v "$PWD:/data:z" misiektoja/spotify-monitor:latest --config-file /data/spotify_monitor.conf
66-
```
67-
6854
#### Docker Compose - shorter recurring commands
6955

7056
Download the Compose file:
@@ -82,18 +68,12 @@ export SPOTIFY_MONITOR_GID="$(id -g)"
8268

8369
Docker-compatible runtimes on macOS and Windows normally do not need these values.
8470

85-
Run setup by itself:
71+
Run setup wizard:
8672

8773
```sh
8874
docker compose run --rm --pull=always spotify_monitor --setup
8975
```
9076

91-
After setup finishes, start monitoring with the shorter recurring command:
92-
93-
```sh
94-
docker compose up --no-log-prefix
95-
```
96-
9777
For the manual single-file method, optional extras and upgrade commands for every method, see [Installation](https://misiektoja.github.io/spotify_monitor/installation/).
9878

9979
<a id="features"></a>
@@ -147,12 +127,10 @@ Spotify only shows a person's listening activity when both of these conditions a
147127

148128
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](https://misiektoja.github.io/spotify_monitor/configuration/#following-the-monitored-user).
149129

150-
Firefox import is the recommended login path for local and container installs. See [Container Operation](https://misiektoja.github.io/spotify_monitor/usage/#import-firefox-into-container-authentication) for the host-specific import commands.
151-
152130
<a id="common-commands"></a>
153131
## Common Commands
154132

155-
Use [Quick Install & Run](#-quick-install-run) above for first-time setup. The table uses PyPI commands. For manual script, direct Docker and Docker Compose equivalents, see [Run Individual Commands](https://misiektoja.github.io/spotify_monitor/quick-start/#run-individual-commands).
133+
Use [Quick Install & Run](#-quick-install-run) above for first-time setup. The table uses PyPI commands. For manual script, direct Docker and Docker Compose equivalents, see [Run Individual Commands](https://misiektoja.github.io/spotify_monitor/setup-and-first-run/#run-individual-commands).
156134

157135
| I want to... | Run this |
158136
| --- | --- |
@@ -166,7 +144,7 @@ Use [Quick Install & Run](#-quick-install-run) above for first-time setup. The t
166144

167145
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.
168146

169-
For authentication, saved targets, configuration backups and setup recovery, see the [full Quick Start guide](https://misiektoja.github.io/spotify_monitor/quick-start/).
147+
For authentication, saved targets, configuration backups and setup recovery, see the [full Setup & First Run guide](https://misiektoja.github.io/spotify_monitor/setup-and-first-run/).
170148

171149
For browser profiles, manual cookie extraction, Docker authentication, email and webhook setup, see [Configuration](https://misiektoja.github.io/spotify_monitor/configuration/). For notification choices, playback controls and output files, see [Usage](https://misiektoja.github.io/spotify_monitor/usage/).
172150

@@ -176,7 +154,7 @@ For browser profiles, manual cookie extraction, Docker authentication, email and
176154
Full documentation is available at **[misiektoja.github.io/spotify_monitor](https://misiektoja.github.io/spotify_monitor/)**:
177155

178156
- [Installation](https://misiektoja.github.io/spotify_monitor/installation/) - PyPI, manual script, Docker installation and upgrades
179-
- [Quick Start](https://misiektoja.github.io/spotify_monitor/quick-start/) - setup wizard, authentication and first run
157+
- [Setup & First Run](https://misiektoja.github.io/spotify_monitor/setup-and-first-run/) - setup wizard, authentication and first run
180158
- [Configuration](https://misiektoja.github.io/spotify_monitor/configuration/) - Spotify login, targets, SMTP, webhooks and secrets
181159
- [Usage](https://misiektoja.github.io/spotify_monitor/usage/) - command formats, monitoring, container operation, notifications, playback and output
182160
- [Troubleshooting](https://misiektoja.github.io/spotify_monitor/troubleshooting/) - the `--doctor` self-check and logging levels

RELEASE_NOTES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
This is a high-level summary of the most important changes.
44

5+
# Changes in 3.1.1 (24 Jul 2026)
6+
7+
**Bug fixes**:
8+
9+
- **BUGFIX:** Updated the built-in guide link to the renamed **Setup & First Run** page so CLI help and recovery guidance no longer point to the retired Quick Start URL
10+
511
# Changes in 3.1 (23 Jul 2026)
612

713
Version **3.1** makes **Docker onboarding portable across macOS, Linux and Windows**. Setup now centers on **host-aware Firefox authentication**, keeps configuration and secrets on the persistent **`/data` bind mount** and carries exact **Doctor and monitoring commands** through recovery.

docs/configuration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ Follow these steps:
140140

141141
As an alternative, [Cookie-Editor by cgagnier](https://cookie-editor.com/) can display the `sp_dc` value. Only use a browser extension that you trust because browser extensions can access sensitive login cookies.
142142

143-
The recommended `--set-sp-dc` command validates the cookie with Spotify before changing `.env`. Existing cookie replacement requires confirmation. See the [copy-paste commands](quick-start.md#run-individual-commands) for PyPI, downloaded-script, Docker Compose and Docker installations.
143+
The recommended `--set-sp-dc` command validates the cookie with Spotify before changing `.env`. Existing cookie replacement requires confirmation. See the [copy-paste commands](setup-and-first-run.md#run-individual-commands) for PyPI, downloaded-script, Docker Compose and Docker installations.
144144

145145
You can also provide `SP_DC_COOKIE` in these ways:
146146

docs/debugging.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ The command prints the access token response. Example output:
3535
3636
```sh
3737
python3 spotify_monitor_totp_test.py --sp-dc "your_sp_dc_cookie_value" --fetch-secrets
38+
```
39+
40+
```sh
3841
python3 spotify_monitor_totp_test.py --sp-dc "your_sp_dc_cookie_value" --download-secrets
3942
```
4043

docs/index.md

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Powerful real-time tracker for Spotify friend music activity: monitor listening
2525
pip install spotify_monitor
2626
```
2727

28-
Run setup by itself:
28+
Run setup wizard:
2929

3030
```sh
3131
spotify_monitor --setup
@@ -41,32 +41,16 @@ Use a macOS shell or Windows PowerShell with a Docker-compatible runtime that pr
4141
docker run --rm --pull=always -it --init -v "${PWD}:/data:z" misiektoja/spotify-monitor:latest --setup
4242
```
4343

44-
After setup finishes, start monitoring with the files created by the wizard:
45-
46-
```sh
47-
docker run --rm -it --init -v "${PWD}:/data:z" misiektoja/spotify-monitor:latest --config-file /data/spotify_monitor.conf
48-
```
49-
50-
The setup command pulls the current image. Both commands keep configuration, private values and output in the current directory.
51-
52-
In Windows Command Prompt replace `${PWD}` with `%cd%`. Windows hosts must use Linux containers.
53-
54-
When setup asks how to import Firefox on Windows, choose PowerShell or Command Prompt. The wizard prints the matching direct Docker command with the current directory mounted at `/data` and the Firefox profile under `%APPDATA%\Mozilla\Firefox` mounted read-only. The same host choice also prints the matching Docker Compose import command.
44+
In Windows Command Prompt replace `${PWD}` with `%cd%` above.
5545

5646
##### Linux
5747

58-
`--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.
48+
Run the container with your numeric user and group IDs (`--user "$(id -u):$(id -g)"` below). This lets the container write files that your host account can edit.
5949

6050
```sh
6151
docker run --rm --pull=always -it --init --user "$(id -u):$(id -g)" -v "$PWD:/data:z" misiektoja/spotify-monitor:latest --setup
6252
```
6353

64-
After setup finishes, start monitoring:
65-
66-
```sh
67-
docker run --rm -it --init --user "$(id -u):$(id -g)" -v "$PWD:/data:z" misiektoja/spotify-monitor:latest --config-file /data/spotify_monitor.conf
68-
```
69-
7054
#### Docker Compose - shorter recurring commands
7155

7256
Download the Compose file:
@@ -75,26 +59,22 @@ Download the Compose file:
7559
curl -fsSLO https://raw.githubusercontent.com/misiektoja/spotify_monitor/refs/heads/main/docker-compose.yml
7660
```
7761

78-
On a native Linux container engine, export your numeric user ID and group ID so files created in the current directory belong to you instead of `root`. Docker-compatible runtimes on macOS and Windows normally do not need these values.
62+
Linux container engine requires to export your numeric user ID and group ID so files created in the current directory belong to you instead of `root`.
7963

8064
```sh
8165
export SPOTIFY_MONITOR_UID="$(id -u)"
8266
export SPOTIFY_MONITOR_GID="$(id -g)"
8367
```
8468

85-
Run setup by itself:
69+
Docker-compatible runtimes on macOS and Windows normally do not need these values.
8670

87-
```sh
88-
docker compose run --rm --pull=always spotify_monitor --setup
89-
```
90-
91-
After setup finishes, start monitoring with the shorter recurring command:
71+
Run setup wizard:
9272

9373
```sh
94-
docker compose up --no-log-prefix
74+
docker compose run --rm --pull=always spotify_monitor --setup
9575
```
9676

97-
For the manual single-file method, optional extras and upgrade commands for every method, see [Installation](installation.md).
77+
For the manual single-file method, optional extras and upgrade commands for every method, see [Installation](https://misiektoja.github.io/spotify_monitor/installation/).
9878

9979
<a id="features"></a>
10080
## Features

docs/installation.md

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ Choose either the Python path or the container path.
1111

1212
- [Python](https://www.python.org/downloads/) 3.9 or higher
1313
- Core libraries: `requests`, `python-dateutil`, `urllib3`, `pyotp`, `python-dotenv`, `wcwidth`, `Pillow`
14-
- `spotipy` is optional and is needed only for legacy OAuth metadata access
15-
- `pycookiecheat` is optional and is needed only to import cookies from Chrome, Brave or Chromium
14+
- [spotipy](https://github.com/spotipy-dev/spotipy) is optional and is needed only for legacy OAuth metadata access
15+
- [pycookiecheat](https://github.com/n8henrie/pycookiecheat) is optional and is needed only to import cookies from Chrome, Brave or Chromium
1616

1717
**Container path** (Python is included in the image):
1818

@@ -30,9 +30,9 @@ The examples use the `docker` command. Check that it works with `docker --versio
3030

3131
Tested on:
3232

33-
* **macOS**: Ventura, Sonoma, Sequoia, Tahoe
34-
* **Linux**: Raspberry Pi OS (Bullseye, Bookworm, Trixie), Ubuntu 24/25, Rocky Linux 8.x/9.x, Kali Linux 2024/2025
35-
* **Windows**: 10, 11
33+
* **macOS**: Tahoe, Sequoia, Sonoma, Ventura
34+
* **Linux**: Raspberry Pi OS (Trixie, Bookworm, Bullseye), Ubuntu 24/25, Rocky Linux 8.x/9.x, Kali Linux 2026/2025/2024
35+
* **Windows**: 11, 10
3636

3737
It should work on other versions of macOS, Linux, Unix and Windows as well.
3838

@@ -127,13 +127,19 @@ Use `python spotify_monitor.py --version` on Windows.
127127
<a id="docker-image"></a>
128128
### Install from Docker Hub
129129

130-
The published [`misiektoja/spotify-monitor`](https://hub.docker.com/r/misiektoja/spotify-monitor) image supports `linux/amd64` and `linux/arm64`:
130+
The published [`misiektoja/spotify-monitor`](https://hub.docker.com/r/misiektoja/spotify-monitor) image supports `linux/amd64` and `linux/arm64`.
131131

132-
No separate image download is required. Continue to [Quick Start](quick-start.md#new-here-run-the-setup-wizard). Its first-run command uses `docker run --pull=always` to pull the current image and start the setup wizard in one step.
132+
No separate image download is required. Its first-run command uses `docker run --pull=always` to pull the current image and start the setup wizard in one step, so for Docker installing and setting up are a single command:
133+
134+
```sh
135+
docker run --rm --pull=always -it --init -v "${PWD}:/data:z" misiektoja/spotify-monitor:latest --setup
136+
```
137+
138+
On a native Linux container engine, add `--user "$(id -u):$(id -g)"` immediately after `--init`. [Setup & First Run](setup-and-first-run.md#new-here-run-the-setup-wizard) shows the exact command for macOS shells, Windows PowerShell and native Linux engines then explains what the wizard asks.
133139

134140
Normal monitoring commands reuse the installed image and do not check for a newer release. The [upgrade instructions](#upgrade-a-direct-docker-installation) pull explicitly when you choose to upgrade.
135141

136-
Normal runs make the current directory available as `/data` in the container. Configuration and output written there remain on the host after the temporary container stops. On a native Linux container engine, the command also passes your numeric user and group IDs so new files belong to you. [Quick Start](quick-start.md#new-here-run-the-setup-wizard) shows the complete commands for macOS shells, Windows PowerShell and native Linux engines.
142+
Normal runs make the current directory available as `/data` in the container. Configuration and output written there remain on the host after the temporary container stops. On a native Linux container engine, the command also passes your numeric user and group IDs so new files belong to you.
137143

138144
The macOS shell and Windows PowerShell examples use `${PWD}`. In Windows Command Prompt use `%cd%` for the current directory. Native Linux examples use `$PWD` and pass your numeric user and group IDs.
139145

@@ -170,7 +176,13 @@ SPOTIFY_MONITOR_GID=1000
170176

171177
The values above are only examples. Use the numbers returned on your system. The setup wizard keeps unrelated entries in this file. Docker-compatible runtimes on macOS and Windows normally handle bind-mount ownership, so users on those systems can usually skip this step. If `/data` is not writable, set the host user and group IDs as shown above.
172178

173-
Compose makes the current host directory available as `/data` inside the container. This is called a bind mount. The setup wizard creates `spotify_monitor.conf` and `.env` there, so the files remain on your computer when the container is replaced. Keep this directory and continue with [Quick Start](quick-start.md#new-here-run-the-setup-wizard). Its Compose setup command pulls the current image with `--pull=always`, so no separate `docker compose pull` is needed during onboarding.
179+
Compose makes the current host directory available as `/data` inside the container. This is called a bind mount. The setup wizard creates `spotify_monitor.conf` and `.env` there, so the files remain on your computer when the container is replaced. From this directory your first command is the setup wizard:
180+
181+
```sh
182+
docker compose run --rm --pull=always spotify_monitor --setup
183+
```
184+
185+
The `--pull=always` flag pulls the current image first, so no separate `docker compose pull` is needed during onboarding. On a native Linux container engine, export the UID and GID shown above in the same terminal before you run setup. See [Setup & First Run](setup-and-first-run.md#new-here-run-the-setup-wizard) for the wizard walkthrough.
174186

175187
<a id="build-docker-locally"></a>
176188
### Build the Docker Image Locally
@@ -187,7 +199,7 @@ To use this image through Compose, comment out `image:` in `docker-compose.yml`
187199
<a id="next-step"></a>
188200
## Next Step
189201

190-
Continue to [Quick Start](quick-start.md). It shows the setup wizard command for every installation method then explains authentication and the first monitoring run.
202+
Continue to [Setup & First Run](setup-and-first-run.md). It shows the setup wizard command for every installation method then explains authentication and the first monitoring run.
191203

192204
<a id="upgrading"></a>
193205
## Upgrading
Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
# Quick Start
1+
# Setup & First Run
22

33
<a id="new-here-run-the-setup-wizard"></a>
4-
## New here? Run the setup wizard
4+
## Run the setup wizard
55

6-
Quick Start configures an existing installation. If you opened this page first, choose [PyPI](installation.md#install-from-pypi), the [manual Python script](installation.md#manual-installation), the [Docker image](installation.md#docker-image) or [Docker Compose](installation.md#docker-compose). Complete that method's prerequisites and return here.
6+
This page assumes Spotify Monitor is already installed (see [Installation](installation.md)). It walks through the interactive setup wizard then your first monitoring run. If you opened this page first, choose [PyPI](installation.md#install-from-pypi), the [manual Python script](installation.md#manual-installation), the [Docker image](installation.md#docker-image) or [Docker Compose](installation.md#docker-compose), finish that method's steps then return here.
77

88
Then use the interactive setup wizard. It asks who to monitor, how to connect to Spotify and which alerts to enable. You can review and change your answers before saving. Regular settings go in `spotify_monitor.conf`. Private values such as login cookies and webhook URLs go in `.env`.
99

@@ -74,7 +74,7 @@ After saving authentication, the wizard checks whether the monitoring account fo
7474

7575
For Docker or Docker Compose, choose **Import from Firefox after setup**. The wizard asks whether Docker runs on macOS, standard Linux, Linux with Snap, Linux with Flatpak, Windows PowerShell or Windows Command Prompt. It then prints the matching command to mount the signed-in host profile read-only once and save `SP_DC_COOKIE` in the host `.env` file. Windows commands use the Firefox profile under `%APPDATA%\Mozilla\Firefox`. Use [manual extraction](configuration.md#manual-cookie-extraction) only when that mount is unavailable.
7676

77-
If the selected configuration contains `TARGET_USER_URI_ID`, running Spotify Monitor without a target starts that saved user. If no target is saved, an interactive no-argument run shows quick-start guidance and offers the setup wizard.
77+
If the selected configuration contains `TARGET_USER_URI_ID`, running Spotify Monitor without a target starts that saved user. If no target is saved, an interactive no-argument run shows setup guidance and offers the setup wizard.
7878

7979
If the selected `.env` file already contains a saved `SP_DC_COOKIE`, container setup offers to keep it. Otherwise Firefox import remains the default. Setup does not run Doctor while that import is pending. It finishes with the host-specific import command followed by the Doctor and monitoring commands.
8080

@@ -198,3 +198,8 @@ To see all supported command-line arguments and flags:
198198
```sh
199199
spotify_monitor --help
200200
```
201+
202+
<a id="next-step"></a>
203+
## Next Step
204+
205+
With authentication saved and a first run working, continue to [Configuration](configuration.md) for targets, Spotify login, SMTP and secrets. See [Usage](usage.md) for command formats, monitoring, container operation, notifications, playback and output.

mkdocs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ validation:
7070
nav:
7171
- Home: index.md
7272
- Installation: installation.md
73-
- Quick Start: quick-start.md
73+
- Setup & First Run: setup-and-first-run.md
7474
- Configuration: configuration.md
7575
- Usage: usage.md
7676
- Troubleshooting: troubleshooting.md

0 commit comments

Comments
 (0)