Esempio n. 1
0
// 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
}