// ReadSpotifyPlaylist reads spotify playlist into list of tracks func ReadSpotifyPlaylist(spotifyClient *spotify.Client, uri string) (tracks []Track, playlistName string, err error) { // Fetch playlist playlist, err := spotifyClient.GetPlaylist(ParseSpotifyUri(uri)) if err != nil { return } playlistName = playlist.Name // Convert to tracks tracks = make([]Track, len(playlist.Tracks.Tracks)) for i, x := range playlist.Tracks.Tracks { // Artists artistStrings := make([]string, len(x.Track.Artists)) for k, x := range x.Track.Artists { artistStrings[k] = x.Name } if artistStrings == nil { err = errors.New("empty artist in track") return } // Store in slice tracks[i] = Track{ x.Track.Name, x.Track.Album.Name, artistStrings[0], // All tracks has at least one artist artistStrings, } } return }