Skip to content

Commit f058806

Browse files
committed
clean parsePlaylist
1 parent 0d38b37 commit f058806

1 file changed

Lines changed: 19 additions & 18 deletions

File tree

src/discovery/listenbrainz.go

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)