From d162702d5d7188cac11775b4b6c1744ca61a47ed Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Mon, 14 Jul 2025 15:13:38 +0200 Subject: [PATCH] Added Listen.Skipped attribute This will help implementing similar functionality for other formats that make this distinction. --- internal/backends/scrobblerlog/scrobblerlog.go | 11 +++++------ internal/backends/spotifyhistory/models.go | 1 + internal/models/models.go | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/internal/backends/scrobblerlog/scrobblerlog.go b/internal/backends/scrobblerlog/scrobblerlog.go index 3a91e92..a36bef8 100644 --- a/internal/backends/scrobblerlog/scrobblerlog.go +++ b/internal/backends/scrobblerlog/scrobblerlog.go @@ -188,6 +188,7 @@ func (b *ScrobblerLogBackend) ImportListens(ctx context.Context, export models.L func recordToListen(record scrobblerlog.Record, client string) models.Listen { return models.Listen{ ListenedAt: record.Timestamp, + Skipped: record.Rating == scrobblerlog.RatingSkipped, Track: models.Track{ ArtistNames: []string{record.ArtistName}, ReleaseName: record.AlbumName, @@ -196,8 +197,7 @@ func recordToListen(record scrobblerlog.Record, client string) models.Listen { Duration: record.Duration, RecordingMBID: record.MusicBrainzRecordingID, AdditionalInfo: models.AdditionalInfo{ - "rockbox_rating": record.Rating, - "media_player": client, + "media_player": client, }, }, } @@ -205,11 +205,10 @@ func recordToListen(record scrobblerlog.Record, client string) models.Listen { func listenToRecord(listen models.Listen) scrobblerlog.Record { var rating scrobblerlog.Rating - rockboxRating, ok := listen.AdditionalInfo["rockbox_rating"].(string) - if !ok || rockboxRating == "" { - rating = scrobblerlog.RatingListened + if listen.Skipped { + rating = scrobblerlog.RatingSkipped } else { - rating = scrobblerlog.Rating(rating) + rating = scrobblerlog.RatingListened } return scrobblerlog.Record{ diff --git a/internal/backends/spotifyhistory/models.go b/internal/backends/spotifyhistory/models.go index 3efaa38..0306446 100644 --- a/internal/backends/spotifyhistory/models.go +++ b/internal/backends/spotifyhistory/models.go @@ -91,6 +91,7 @@ func (i HistoryItem) AsListen() models.Listen { ListenedAt: i.Timestamp, PlaybackDuration: time.Duration(i.MillisecondsPlayed) * time.Millisecond, UserName: i.UserName, + Skipped: i.Skipped, } if trackURL, err := formatSpotifyUri(i.SpotifyTrackUri); err != nil { listen.AdditionalInfo["spotify_id"] = trackURL diff --git a/internal/models/models.go b/internal/models/models.go index 69280b3..77ec02c 100644 --- a/internal/models/models.go +++ b/internal/models/models.go @@ -106,6 +106,7 @@ type Listen struct { ListenedAt time.Time PlaybackDuration time.Duration UserName string + Skipped bool } type Love struct {