def get_playlist_tracks(playlistUrl: str) -> List[SongObj]: ''' `str` `playlistUrl` : Spotify Url of the album whose tracks are to be retrieved returns a `list<songObj>` containing Url's of each track in the given playlist ''' spotifyClient = SpotifyClient() playlistTracks = [] playlistResponse = spotifyClient.playlist_tracks(playlistUrl) # while loop to mimic do-while while True: for songEntry in playlistResponse['items']: if songEntry['track'] is None or songEntry['track']['id'] is None: continue song = SongObj.from_url('https://open.spotify.com/track/' + songEntry['track']['id']) if song.get_youtube_link() is not None: playlistTracks.append(song) # check if more tracks are to be passed if playlistResponse['next']: playlistResponse = spotifyClient.playlist_tracks( playlistUrl, offset=playlistResponse['offset'] + playlistResponse['limit']) else: break return playlistTracks
def get_playlist_tracks(playlistUrl: str, output_format: str = None) -> List[SongObj]: """ `str` `playlistUrl` : Spotify Url of the album whose tracks are to be retrieved returns a `list<songObj>` containing Url's of each track in the given playlist """ spotifyClient = SpotifyClient() playlistTracks = [] playlistResponse = spotifyClient.playlist_tracks(playlistUrl) # while loop to mimic do-while while True: for songEntry in playlistResponse["items"]: if songEntry["track"] is None or songEntry["track"]["id"] is None: continue song = songobj_from_spotify_url( "https://open.spotify.com/track/" + songEntry["track"]["id"], output_format, ) if song is not None and song.get_youtube_link() is not None: playlistTracks.append(song) # check if more tracks are to be passed if playlistResponse["next"]: playlistResponse = spotifyClient.playlist_tracks( playlistUrl, offset=playlistResponse["offset"] + playlistResponse["limit"], ) else: break return playlistTracks