From 1898caed6aa8205e56517448405d06fd084ed239 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Sat, 9 Oct 2021 18:16:15 -0700 Subject: scrobbler: initial log record type Define the type for a log record and add an helper function to create a new record. --- tools/mpd-stats/go.mod | 5 +++- tools/mpd-stats/go.sum | 2 ++ tools/mpd-stats/internal/scrobbler/record.go | 34 ++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 tools/mpd-stats/internal/scrobbler/record.go (limited to 'tools/mpd-stats') diff --git a/tools/mpd-stats/go.mod b/tools/mpd-stats/go.mod index cafa7bc..6ffe974 100644 --- a/tools/mpd-stats/go.mod +++ b/tools/mpd-stats/go.mod @@ -2,4 +2,7 @@ module golang.fcuny.net/mpd-stats go 1.17 -require github.com/fhs/gompd/v2 v2.2.0 +require ( + github.com/fhs/gompd/v2 v2.2.0 + github.com/google/uuid v1.3.0 +) diff --git a/tools/mpd-stats/go.sum b/tools/mpd-stats/go.sum index 1c3cda7..127090d 100644 --- a/tools/mpd-stats/go.sum +++ b/tools/mpd-stats/go.sum @@ -1,2 +1,4 @@ github.com/fhs/gompd/v2 v2.2.0 h1:zdSYAAOzQ5cCCgYa5CoXkL0Vr0Cqb/b5JmTobirLc90= github.com/fhs/gompd/v2 v2.2.0/go.mod h1:nNdZtcpD5VpmzZbRl5rV6RhxeMmAWTxEsSIMBkmMIy4= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= diff --git a/tools/mpd-stats/internal/scrobbler/record.go b/tools/mpd-stats/internal/scrobbler/record.go new file mode 100644 index 0000000..927ed27 --- /dev/null +++ b/tools/mpd-stats/internal/scrobbler/record.go @@ -0,0 +1,34 @@ +package scrobbler + +import ( + "strconv" + "time" + + "github.com/fhs/gompd/v2/mpd" + "github.com/google/uuid" +) + +type Record struct { + Id uuid.UUID + Title string + Album string + Artist string + Duration time.Duration +} + +func NewRecord(attrs mpd.Attrs) (*Record, error) { + record := Record{ + Id: uuid.New(), + Title: attrs["Title"], + Album: attrs["Album"], + Artist: attrs["Artist"], + } + + dur, err := strconv.ParseFloat(attrs["duration"], 32) + if err != nil { + return nil, err + } + + record.Duration = time.Second * time.Duration(dur) + return &record, nil +} -- cgit 1.4.1