From fe7dfdd250b701177f051ad6cdc3dc68695cbfc4 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Mon, 24 Oct 2022 17:32:17 -0700 Subject: ref(tools/mpd-stats): delete the project It's been moved to its own repository at https://github.com/fcuny/mpd-stats Update the list of repositories managed by terraform. --- tools/mpd-stats/internal/scrobbler/scrobbler.go | 118 ------------------------ 1 file changed, 118 deletions(-) delete mode 100644 tools/mpd-stats/internal/scrobbler/scrobbler.go (limited to 'tools/mpd-stats/internal/scrobbler/scrobbler.go') diff --git a/tools/mpd-stats/internal/scrobbler/scrobbler.go b/tools/mpd-stats/internal/scrobbler/scrobbler.go deleted file mode 100644 index eb4eb9c..0000000 --- a/tools/mpd-stats/internal/scrobbler/scrobbler.go +++ /dev/null @@ -1,118 +0,0 @@ -package scrobbler - -import ( - "database/sql" - "log" - "time" - - "golang.fcuny.net/mpd-stats/internal/mpd" -) - -type Scrobbler struct { - player *mpd.Player - db *sql.DB -} - -func NewScrobbler(net string, addr string, dbpath string) (*Scrobbler, error) { - p, err := mpd.NewPlayer(net, addr) - if err != nil { - return nil, err - } - - db, err := opendatabase(dbpath) - if err != nil { - return nil, err - } - - s := Scrobbler{ - player: p, - db: db, - } - - return &s, nil -} - -func (s *Scrobbler) Close() error { - return s.player.Close() -} - -func (s *Scrobbler) Run() error { - var ( - currentRecord *Record - previousRecord *Record - ) - - for { - e := <-s.player.Watcher.Event - if e == mpd.SubSystemPlayer { - 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.Printf("could not get current song: %v", err) - } - - if currentRecord == nil { - currentRecord, err = NewRecord(attrs) - if err != nil { - log.Printf("could not create a log: %v", err) - } - previousRecord = 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.Printf("could not create a log: %v", err) - } - } - - if currentRecord.Id != previousRecord.Id { - if err := s.update(previousRecord); err != nil { - log.Printf("failed to update record %s: %s", previousRecord.Id, err) - } - previousRecord = currentRecord - s.save(currentRecord) - } - } - } -} - -func (s *Scrobbler) save(record *Record) error { - _, err := s.db.Exec("insert into records(id, title, artist, album, duration, playtime, time) values(?, ?, ?, ?, ?, 0, ?)", - record.Id, - record.Title, - record.Artist, - record.Album, - int(record.Duration.Seconds()), - record.Timestamp, - ) - return err -} - -func (s *Scrobbler) update(record *Record) error { - tnow := time.Now() - playtime := tnow.Sub(record.Timestamp).Seconds() - _, err := s.db.Exec("update records set playtime = ? where id = ?", - int(playtime), - record.Id, - ) - return err -} -- cgit 1.4.1