about summary refs log tree commit diff
path: root/tools/mpd-stats/internal
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2022-01-21 10:11:10 -0800
committerFranck Cuny <franck@fcuny.net>2022-06-11 14:32:09 -0700
commita63dc3d875f00080c43074b6e0328064a6fce22c (patch)
tree28a9b829fc9274e7fc4d5481f3ae1297d7bb0bd4 /tools/mpd-stats/internal
parentdoc: update README with instruction for installing (diff)
downloadworld-a63dc3d875f00080c43074b6e0328064a6fce22c.tar.gz
mpd: we only want events from the player subsystem
Store the name of the subsystem in a constant, add some comments on
where to find the list.
Diffstat (limited to 'tools/mpd-stats/internal')
-rw-r--r--tools/mpd-stats/internal/mpd/mpd.go8
-rw-r--r--tools/mpd-stats/internal/scrobbler/scrobbler.go2
2 files changed, 8 insertions, 2 deletions
diff --git a/tools/mpd-stats/internal/mpd/mpd.go b/tools/mpd-stats/internal/mpd/mpd.go
index 5b57ee4..859348e 100644
--- a/tools/mpd-stats/internal/mpd/mpd.go
+++ b/tools/mpd-stats/internal/mpd/mpd.go
@@ -7,6 +7,11 @@ import (
 	"github.com/fhs/gompd/v2/mpd"
 )
 
+const (
+	// List of subsystems: https://mpd.readthedocs.io/en/latest/protocol.html#querying-mpd-s-status
+	SubSystemPlayer = "player"
+)
+
 type Player struct {
 	Watcher *mpd.Watcher
 	Client  *mpd.Client
@@ -18,7 +23,8 @@ func NewPlayer(net string, addr string) (*Player, error) {
 		err error
 	)
 
-	p.Watcher, err = mpd.NewWatcher(net, addr, "", "player")
+	// We are only subscribing to the player subsystem
+	p.Watcher, err = mpd.NewWatcher(net, addr, "", SubSystemPlayer)
 	if err != nil {
 		log.Fatalf("failed to create a watcher: %v", err)
 	}
diff --git a/tools/mpd-stats/internal/scrobbler/scrobbler.go b/tools/mpd-stats/internal/scrobbler/scrobbler.go
index f0f9d0e..eb4eb9c 100644
--- a/tools/mpd-stats/internal/scrobbler/scrobbler.go
+++ b/tools/mpd-stats/internal/scrobbler/scrobbler.go
@@ -44,7 +44,7 @@ func (s *Scrobbler) Run() error {
 
 	for {
 		e := <-s.player.Watcher.Event
-		if e != "" {
+		if e == mpd.SubSystemPlayer {
 			status, err := s.player.Client.Status()
 			if err != nil {
 				log.Printf("could not read the status: %v", err)