aboutsummaryrefslogtreecommitdiff
path: root/tools/mpd-stats/internal/scrobbler
diff options
context:
space:
mode:
Diffstat (limited to 'tools/mpd-stats/internal/scrobbler')
-rw-r--r--tools/mpd-stats/internal/scrobbler/scrobbler.go25
1 files changed, 21 insertions, 4 deletions
diff --git a/tools/mpd-stats/internal/scrobbler/scrobbler.go b/tools/mpd-stats/internal/scrobbler/scrobbler.go
index df8e46a..f0f9d0e 100644
--- a/tools/mpd-stats/internal/scrobbler/scrobbler.go
+++ b/tools/mpd-stats/internal/scrobbler/scrobbler.go
@@ -45,25 +45,42 @@ func (s *Scrobbler) Run() error {
for {
e := <-s.player.Watcher.Event
if e != "" {
+ status, err := s.player.Client.Status()
+ if err != nil {
+ log.Printf("could not read the status: %v", err)
+ }
+
+ if status["state"] == "stop" {
+ if currentRecord != nil {
+ if err := s.update(currentRecord); err != nil {
+ log.Printf("failed to update record %s: %s", currentRecord.Id, err)
+ }
+ currentRecord = nil
+ }
+ continue
+ }
+
attrs, err := s.player.Client.CurrentSong()
if err != nil {
- log.Fatalf("could not get current song: %v", err)
+ log.Printf("could not get current song: %v", err)
}
if currentRecord == nil {
currentRecord, err = NewRecord(attrs)
if err != nil {
- log.Fatalf("could not create a log: %v", err)
+ log.Printf("could not create a log: %v", err)
}
previousRecord = currentRecord
- s.save(currentRecord)
+ if err := s.save(currentRecord); err != nil {
+ log.Printf("failed to insert record %s: %s", currentRecord.Id, err)
+ }
continue
}
if !currentRecord.EqualAttrs(attrs) {
currentRecord, err = NewRecord(attrs)
if err != nil {
- log.Fatalf("could not create a log: %v", err)
+ log.Printf("could not create a log: %v", err)
}
}