From 46b23424c2e1c175a9d3913abfef71ac22ee99c6 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Tue, 28 Apr 2026 09:28:13 -0400 Subject: [PATCH] feat(cmd): start scrobble worker alongside HTTP server --- cmd/minstrel/main.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cmd/minstrel/main.go b/cmd/minstrel/main.go index 91461b74..a78835f3 100644 --- a/cmd/minstrel/main.go +++ b/cmd/minstrel/main.go @@ -16,6 +16,8 @@ import ( "git.fabledsword.com/bvandeusen/minstrel/internal/db" "git.fabledsword.com/bvandeusen/minstrel/internal/library" "git.fabledsword.com/bvandeusen/minstrel/internal/logging" + "git.fabledsword.com/bvandeusen/minstrel/internal/scrobble" + "git.fabledsword.com/bvandeusen/minstrel/internal/scrobble/listenbrainz" "git.fabledsword.com/bvandeusen/minstrel/internal/server" "git.fabledsword.com/bvandeusen/minstrel/internal/subsonic" ) @@ -73,6 +75,12 @@ func run() error { }() } + // Start the ListenBrainz scrobble worker. Per spec §M4a, runs every 30s + // and drains up to 50 pending rows per tick. Per-user gating happens + // inside the worker (rows from disabled users are skipped). + scrobbleWorker := scrobble.NewWorker(pool, listenbrainz.NewClient(), logger.With("component", "scrobble")) + go scrobbleWorker.Run(ctx) + srv := server.New(logger, pool, scanner, subsonic.Config{ AllowPlaintextPassword: cfg.Subsonic.AllowPlaintextPassword, }, cfg.Events, cfg.Recommendation)