@@ -303,37 +303,38 @@ func (c *ListenBrainz) parsePlaylist(identifier string, singleArtist bool) ([]*m
303303 if err != nil {
304304 return nil , fmt .Errorf ("parsePlaylist: %s" , err .Error ())
305305 }
306-
307306 var exploration Exploration
308307 err = util .ParseResp (body , & exploration )
309308 if err != nil {
310309 return nil , fmt .Errorf ("parsePlaylist: %s" , err .Error ())
311310 }
312-
313- if len (exploration . Playlist . Tracks ) == 0 {
311+ srcTracks := exploration . Playlist . Tracks
312+ if len (srcTracks ) == 0 {
314313 return nil , fmt .Errorf ("no tracks found in playlist %s" , identifier )
315314 }
316315
317- tracks := make ([]* models.Track , 0 , len (exploration . Playlist . Tracks ))
318- for _ , track := range exploration . Playlist . Tracks {
316+ tracks := make ([]* models.Track , 0 , len (srcTracks ))
317+ for _ , track := range srcTracks {
319318 title := track .Title
320319 artist := track .Creator
321320 mainArtist := track .Creator
322321
323- if len (track .Extension .HTTPSJspfTrack .AdditionalMetadata .Artists ) > 1 {
324- mainArtist = track .Extension .HTTPSJspfTrack .AdditionalMetadata .Artists [0 ].ArtistCreditName
322+ trackMeta := track .Extension .HTTPSJspfTrack .AdditionalMetadata
323+ trackArtists := trackMeta .Artists
324+
325+ if len (trackMeta .Artists ) > 1 {
326+ mainArtist = trackMeta .Artists [0 ].ArtistCreditName
325327 if singleArtist {
326- var tempTitle strings.Builder
327- joinPhrase := " feat. "
328- for i , artist := range track .Extension .HTTPSJspfTrack .AdditionalMetadata .Artists [1 :] {
329- if i > 0 {
330- joinPhrase = ", "
331- }
332- tempTitle .WriteString (joinPhrase )
333- tempTitle .WriteString (artist .ArtistCreditName )
334- }
335- title = fmt .Sprintf ("%s%s" , track .Title , tempTitle .String ())
336- artist = track .Extension .HTTPSJspfTrack .AdditionalMetadata .Artists [0 ].ArtistCreditName
328+ var b strings.Builder
329+ b .WriteString (" feat. " )
330+ b .WriteString (trackArtists [1 ].ArtistCreditName )
331+
332+ for _ , a := range trackArtists [2 :] {
333+ b .WriteString (", " )
334+ b .WriteString (a .ArtistCreditName )
335+ }
336+ title = b .String ()
337+ artist = trackArtists [0 ].ArtistCreditName
337338 }
338339 }
339340
0 commit comments