Register PlayCount/Date in the DB, if DevUseFolderScanner is true

This commit is contained in:
Deluan
2020-01-18 20:59:20 -05:00
parent 3c66da0b17
commit 938a92eded
8 changed files with 39 additions and 6 deletions
+14 -2
View File
@@ -6,6 +6,7 @@ import (
"fmt"
"time"
"github.com/cloudsonic/sonic-server/conf"
"github.com/cloudsonic/sonic-server/itunesbridge"
"github.com/cloudsonic/sonic-server/log"
"github.com/cloudsonic/sonic-server/model"
@@ -21,13 +22,14 @@ type Scrobbler interface {
NowPlaying(ctx context.Context, playerId int, playerName, trackId, username string) (*model.MediaFile, error)
}
func NewScrobbler(itunes itunesbridge.ItunesControl, mr model.MediaFileRepository, npr NowPlayingRepository) Scrobbler {
return &scrobbler{itunes, mr, npr}
func NewScrobbler(itunes itunesbridge.ItunesControl, mr model.MediaFileRepository, alr model.AlbumRepository, npr NowPlayingRepository) Scrobbler {
return &scrobbler{itunes: itunes, mfRepo: mr, alRepo: alr, npRepo: npr}
}
type scrobbler struct {
itunes itunesbridge.ItunesControl
mfRepo model.MediaFileRepository
alRepo model.AlbumRepository
npRepo NowPlayingRepository
}
@@ -71,6 +73,16 @@ func (s *scrobbler) detectSkipped(ctx context.Context, playerId int, trackId str
func (s *scrobbler) Register(ctx context.Context, playerId int, trackId string, playTime time.Time) (*model.MediaFile, error) {
s.detectSkipped(ctx, playerId, trackId)
if conf.Sonic.DevUseFileScanner {
mf, err := s.mfRepo.Get(trackId)
if err != nil {
err = s.mfRepo.MarkAsPlayed(trackId, playTime)
return nil, err
}
err = s.alRepo.MarkAsPlayed(mf.AlbumID, playTime)
return mf, err
}
mf, err := s.mfRepo.Get(trackId)
if err != nil {
return nil, err