BEETBRAINZ-REPLAY(1)
π BEETBRAINZ-REPLAY π
okay bestie, welcome to the beetbrainz-replay(1) manual β section 1, User Commands, she's a little command-line icon and she's here to save your scrobbles β¨
πΈ NAME πΈ
beetbrainz-replay β replays all your queued Beetbrainz scrobbles from the local spool directory. like, it literally goes and rescues them π«Ά
π SYNOPSIS π
beetbrainz-replay
no flags, no args, no drama. just vibes. π
π¦ DESCRIPTION π¦
so here's the tea: beetbrainz-replay resubmits scrobbles that beetbrainz(1) already wrote to disk back when ListenBrainz was unavailable. she kept receipts, and now she's mailing them in.
Those scrobbles live as append-only JSON Lines (.jsonl) files inside the spool directory. every single line is a complete ListenBrainz payload, exactly as it would have been submitted. no editing, no remixing, the original thing fr fr. β¨
The replay command reads those files and tries to resubmit the scrobbles to ListenBrainz using the same configuration and authentication tokens as the running beetbrainz service. same fit, same energy. π
π₯ BEHAVIOR π₯
Replay has the following properties, and honestly? she ate:
- Processes spool files in chronological order β oldest tea first, no skipping the line β³
- Preserves original timestamps (
listened_at) β the moment stays the moment π - Skips
playing_nowentries β we don't do half-finished over here, periodt π - Deletes spool files only after successful submission β no deleting before the mission is complete, that would be a crime π
- Safe to re-run at any time β run her again, run her ten times, she's chill like that π§
If ListenBrainz is unavailable during replay, files are left intact and no data is lost. she's not gonna ghost your scrobbles bestie, she's just gonna wait. π
β AUTOMATIC REPLAY β
A user-level systemd service and timer are typically provided, because who has the energy to run things manually:
beetbrainz-replay.servicebeetbrainz-replay.timer
When enabled, the timer periodically executes beetbrainz-replay β typically hourly β and automatically drains any backlog once ListenBrainz becomes reachable again. set it and forget it, main character energy only. π
Enable automatic replay with:
systemctl --user enable --now beetbrainz-replay.timer
And if user lingering is enabled via:
loginctl enable-linger <username>
then the replay timer will keep running even when the user is logged out. she does not need you watching. she simply continues. π
π SPOOL DIRECTORY π
The spool directory is controlled by this environment variable:
BEETBRAINZ_SPOOL_DIRβ the spot where all your spool files hang out. Default:~/.local/state/beetbrainz/spool
If you don't explicitly set it, the default location is used. that's it, that's the whole vibe check. β¨
π EXIT STATUS π
0β Replay completed successfully, or no spool files were present. (either way, we're thriving πΈ)1β An error occurred during replay, e.g. a network failure or a submission error. (ngl, not the moment π)
π SEE ALSO π
beetbrainz(1), beets(1), systemd(1), systemctl(1)
go read those too, the whole friend group is iconic. iykyk π
π AUTHORS π
gbcox β thank you for your service, we are obsessed π«Ά
and that's the whole page, bestie!! this was the Beetbrainz Documentation for BEETBRAINZ-REPLAY(1), dated March 3, 2026. go drain that backlog. slay. π
β¨ππ¦
π¦ where this page comes from
- fedora 44: golang-codeberg-gbcox-beetbrainz 1.13.1-2.20260825gitea5fc82.fc44 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms