From 1516a3a9d6eb5d5c834c73c9d72fdfecdc03c379 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Tue, 29 Apr 2025 12:57:28 +0200 Subject: [PATCH] scrobblerlog: renamed setting include-skipped to ignore-skipped This makes the setting consistent with the similar setting for spotify --- config.example.toml | 10 ++++---- .../backends/scrobblerlog/scrobblerlog.go | 23 ++++++++++--------- pkg/scrobblerlog/parser.go | 11 ++++----- pkg/scrobblerlog/parser_test.go | 6 ++--- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/config.example.toml b/config.example.toml index bdccb16..6b81bac 100644 --- a/config.example.toml +++ b/config.example.toml @@ -56,8 +56,8 @@ backend = "scrobbler-log" # The file path to the .scrobbler.log file. Relative paths are resolved against # the current working directory when running scotty. file-path = "./.scrobbler.log" -# If true, reading listens from the file also returns listens marked as "skipped" -include-skipped = true +# If true (default), ignore listens marked as skipped. +ignore-skipped = true # If true (default), new listens will be appended to the existing file. Set to # false to overwrite the file and create a new scrobbler log on every run. append = true @@ -105,9 +105,9 @@ dir-path = "./my_spotify_data_extended/Spotify Extended Streaming Histor ignore-incognito = true # If true, ignore listens marked as skipped. Default is false. ignore-skipped = false -# Only consider skipped listens with a playback duration longer than this number -# of seconds. Default is 30 seconds. If ignore-skipped is set to false this -# setting has no effect. +# Only consider skipped listens with a playback duration longer than or equal to +# this number of seconds. Default is 30 seconds. If ignore-skipped is enabled +# this setting has no effect. ignore-min-duration-seconds = 30 [service.deezer] diff --git a/internal/backends/scrobblerlog/scrobblerlog.go b/internal/backends/scrobblerlog/scrobblerlog.go index 55c3517..26d417a 100644 --- a/internal/backends/scrobblerlog/scrobblerlog.go +++ b/internal/backends/scrobblerlog/scrobblerlog.go @@ -31,12 +31,12 @@ import ( ) type ScrobblerLogBackend struct { - filePath string - includeSkipped bool - append bool - file *os.File - timezone *time.Location - log scrobblerlog.ScrobblerLog + filePath string + ignoreSkipped bool + append bool + file *os.File + timezone *time.Location + log scrobblerlog.ScrobblerLog } func (b *ScrobblerLogBackend) Name() string { return "scrobbler-log" } @@ -47,9 +47,10 @@ func (b *ScrobblerLogBackend) Options() []models.BackendOption { Label: i18n.Tr("File path"), Type: models.String, }, { - Name: "include-skipped", - Label: i18n.Tr("Include skipped listens"), - Type: models.Bool, + Name: "ignore-skipped", + Label: i18n.Tr("Ignore skipped listens"), + Type: models.Bool, + Default: "true", }, { Name: "append", Label: i18n.Tr("Append to file"), @@ -64,7 +65,7 @@ func (b *ScrobblerLogBackend) Options() []models.BackendOption { func (b *ScrobblerLogBackend) InitConfig(config *config.ServiceConfig) error { b.filePath = config.GetString("file-path") - b.includeSkipped = config.GetBool("include-skipped", false) + b.ignoreSkipped = config.GetBool("ignore-skipped", true) b.append = config.GetBool("append", true) timezone := config.GetString("time-zone") if timezone != "" { @@ -140,7 +141,7 @@ func (b *ScrobblerLogBackend) ExportListens(oldestTimestamp time.Time, results c defer file.Close() - err = b.log.Parse(file, b.includeSkipped) + err = b.log.Parse(file, b.ignoreSkipped) if err != nil { progress <- models.Progress{}.Complete() results <- models.ListensResult{Error: err} diff --git a/pkg/scrobblerlog/parser.go b/pkg/scrobblerlog/parser.go index 9e33754..892f6e8 100644 --- a/pkg/scrobblerlog/parser.go +++ b/pkg/scrobblerlog/parser.go @@ -79,7 +79,7 @@ type ScrobblerLog struct { FallbackTimezone *time.Location } -func (l *ScrobblerLog) Parse(data io.Reader, includeSkipped bool) error { +func (l *ScrobblerLog) Parse(data io.Reader, ignoreSkipped bool) error { l.Records = make([]Record, 0) reader := bufio.NewReader(data) @@ -111,16 +111,15 @@ func (l *ScrobblerLog) Parse(data io.Reader, includeSkipped bool) error { return fmt.Errorf("invalid record in scrobblerlog line %v", line) } - rating := row[5] - if !includeSkipped && rating == "S" { - continue - } - record, err := l.rowToRecord(row) if err != nil { return err } + if ignoreSkipped && record.Rating == RATING_SKIPPED { + continue + } + l.Records = append(l.Records, record) } diff --git a/pkg/scrobblerlog/parser_test.go b/pkg/scrobblerlog/parser_test.go index fe2f3ec..7fd57c3 100644 --- a/pkg/scrobblerlog/parser_test.go +++ b/pkg/scrobblerlog/parser_test.go @@ -48,7 +48,7 @@ func TestParser(t *testing.T) { assert := assert.New(t) data := bytes.NewBufferString(testScrobblerLog) result := scrobblerlog.ScrobblerLog{} - err := result.Parse(data, true) + err := result.Parse(data, false) require.NoError(t, err) assert.Equal(scrobblerlog.TZ_UNKNOWN, result.TZ) assert.Equal("Rockbox sansaclipplus $Revision$", result.Client) @@ -68,11 +68,11 @@ func TestParser(t *testing.T) { record4.MusicBrainzRecordingID) } -func TestParserExcludeSkipped(t *testing.T) { +func TestParserIgnoreSkipped(t *testing.T) { assert := assert.New(t) data := bytes.NewBufferString(testScrobblerLog) result := scrobblerlog.ScrobblerLog{} - err := result.Parse(data, false) + err := result.Parse(data, true) require.NoError(t, err) assert.Len(result.Records, 4) record4 := result.Records[3]