https://github.com/vjeranc/cmus-status-scrobbler
Standalone scrobbler program, not a continuously running process, written in Python 3 that works together with cmus. Allows offline mode, scrobbling multiple servers simultaneously, sending a now playing request and handles pause status well.
https://github.com/vjeranc/cmus-status-scrobbler
cmus cmus-status lastfm librefm listenbrainz no-dependencies offline-capable python python3 scrobbler standalone termux
Last synced: 5 months ago
JSON representation
Standalone scrobbler program, not a continuously running process, written in Python 3 that works together with cmus. Allows offline mode, scrobbling multiple servers simultaneously, sending a now playing request and handles pause status well.
- Host: GitHub
- URL: https://github.com/vjeranc/cmus-status-scrobbler
- Owner: vjeranc
- License: gpl-3.0
- Created: 2021-05-16T20:29:08.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2026-01-10T21:18:05.000Z (5 months ago)
- Last Synced: 2026-01-11T06:29:15.643Z (5 months ago)
- Topics: cmus, cmus-status, lastfm, librefm, listenbrainz, no-dependencies, offline-capable, python, python3, scrobbler, standalone, termux
- Language: Python
- Homepage:
- Size: 174 KB
- Stars: 21
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# cmus-status-scrobbler

Works with [cmus](https://cmus.github.io/). Requires Python 3.9+ and has no
additional dependencies.
**Features:**
* offline mode,
* multiple servers,
* now playing request,
* uses [MusicBrainz](https://musicbrainz.org) id if present,
* handles pause status well and
* is a short-lived program (not a continuously running process).
## How to use?
Leave `cmus_status_scrobbler.ini` file as is after removing servers you don't use.
1. Call the program with `--auth` option and follow instructions.
2. After authenticating with services, `cmus_status_scrobbler.ini` file is edited and saved with new credentials.
3. Set `cmus_status_scrobbler.py` as your only status display program by invoking
`:set status_display_program=path/to/cmus_status_scrobbler.py` in `cmus` or add it to your
existing script for `cmus`.
Bash script example:
```bash
# some other display programs
cmus_status_scrobbler.py "$@" &
# more display programs
```
### Termux
https://github.com/vjeranc/cmus-status-scrobbler/issues/10#issuecomment-1970103562
Make sure to run `chmod +rx status_display_program.sh` (or `chmod +rx cmus_status_scrobbler.py`) before `:set status_display_program=...`.
### Arch Linux (AUR)
https://aur.archlinux.org/packages/cmus-status-scrobbler-git
## Configuration
Example file `cmus_status_scrobbler.ini` is in the repository.
It is assumed that this configuration file is stored in `~/.config/cmus/`
directory. You can configure `db_path` and other options if you do not like the
defaults.
Delete the block for the service that you aren't using.
## Handling pause
Pausing a track will not make it scrobble. Continuing the paused track and
finishing or stopping it will result in a scrobble if new playing time and
playing time before pause satisfy the scrobble requirement (playing time >=
50% of track duration or at least 4 minutes).
## Implementation details
Uses [sqlite3](https://docs.python.org/3/library/sqlite3.html) to support
offline mode and to synchronize the processes in case of multiple status
updates (like holding the pause/play button too long).
## My own usage
I use this Python script to scrobble to librefm, lastfm, listenbrainz and
my own family scrobbling service.