feat(subsonic): add support for multi-valued album artist tags

closes #103

a

a

a

r

a

a

a

a

a

a

a

a

a

a
This commit is contained in:
sentriz
2023-07-31 23:07:41 +01:00
parent 908c7cf088
commit 3ac77823c3
27 changed files with 641 additions and 266 deletions

View File

@@ -29,6 +29,10 @@ func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stamp time.Time, su
if user.LastFMSession == "" {
return nil
}
if track.Album == nil || len(track.Album.Artists) == 0 {
return fmt.Errorf("track has no album artists")
}
apiKey, err := s.db.GetSetting("lastfm_api_key")
if err != nil {
return fmt.Errorf("get api key: %w", err)
@@ -46,13 +50,14 @@ func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stamp time.Time, su
} else {
params.Add("method", "track.updateNowPlaying")
}
params.Add("api_key", apiKey)
params.Add("sk", user.LastFMSession)
params.Add("artist", track.TagTrackArtist)
params.Add("track", track.TagTitle)
params.Add("trackNumber", strconv.Itoa(track.TagTrackNumber))
params.Add("album", track.Album.TagTitle)
params.Add("albumArtist", track.Artist.Name)
params.Add("albumArtist", track.Album.ArtistsString())
params.Add("duration", strconv.Itoa(track.Length))
// make sure we provide a valid uuid, since some users may have an incorrect mbid in their tags