diff --git a/db/model.go b/db/model.go index 90b7048..0062a68 100644 --- a/db/model.go +++ b/db/model.go @@ -236,16 +236,16 @@ func (a *Album) GenreStrings() []string { return strs } -func (a *Album) ArtistsString() string { +func (a *Album) ArtistsStrings() []string { var artists = append([]*Artist(nil), a.Artists...) sort.Slice(artists, func(i, j int) bool { return artists[i].ID < artists[j].ID }) - var names []string + strs := make([]string, 0, len(artists)) for _, artist := range artists { - names = append(names, artist.Name) + strs = append(strs, artist.Name) } - return strings.Join(names, " & ") + return strs } type PlayQueue struct { diff --git a/scrobble/lastfm/scrobbler.go b/scrobble/lastfm/scrobbler.go index 96abd82..ce0a183 100644 --- a/scrobble/lastfm/scrobbler.go +++ b/scrobble/lastfm/scrobbler.go @@ -4,6 +4,7 @@ import ( "fmt" "net/url" "strconv" + "strings" "time" "github.com/google/uuid" @@ -57,7 +58,7 @@ func (s *Scrobbler) Scrobble(user *db.User, track *db.Track, stamp time.Time, su params.Add("track", track.TagTitle) params.Add("trackNumber", strconv.Itoa(track.TagTrackNumber)) params.Add("album", track.Album.TagTitle) - params.Add("albumArtist", track.Album.ArtistsString()) + params.Add("albumArtist", strings.Join(track.Album.ArtistsStrings(), ", ")) 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 diff --git a/server/ctrlsubsonic/spec/construct_by_tags.go b/server/ctrlsubsonic/spec/construct_by_tags.go index 1fe0f04..565b2a2 100644 --- a/server/ctrlsubsonic/spec/construct_by_tags.go +++ b/server/ctrlsubsonic/spec/construct_by_tags.go @@ -83,16 +83,6 @@ func NewTrackByTags(t *db.Track, album *db.Album) *TrackChild { }) ret.ArtistID = album.Artists[0].SID() } - // replace tags that we're present - if ret.Title == "" { - ret.Title = "