def list_library(spotify, username): """ Get all songs from tthe user's library and select from there """ # Get all the playlists for this user tracks = [] total = 1 first_fetch = True # The API paginates the results, so we need to iterate while len(tracks) < total: tracks_response = spotify.current_user_saved_tracks(offset=len(tracks)) tracks.extend(tracks_response.get('items', [])) total = tracks_response.get('total') # Some users have a LOT of tracks. Warn them that this might take a second if first_fetch and total > 150: print( '\nYou have a lot of tracks saved - {} to be exact!\nGive us a second while we fetch them...' .format(total)) first_fetch = False # Pull out the actual track objects since they're nested weird tracks = [track.get('track') for track in tracks] # Let em choose the tracks selected_tracks = choose_tracks(tracks) # # Print the audio features :) # get_audio_features(spotify, selected_tracks) return selected_tracks
def list_playlists(spotify, username): """ Get all of a user's playlists and have them select tracks from a playlist """ # Get all the playlists for this user playlists = [] total = 1 # The API paginates the results, so we need to iterate while len(playlists) < total: playlists_response = spotify.user_playlists(username, offset=len(playlists)) playlists.extend(playlists_response.get('items', [])) total = playlists_response.get('total') # Remove any playlists that we don't own playlists = [ playlist for playlist in playlists if playlist.get('owner', {}).get('id') == username ] # List out all of the playlists print_header('Your Playlists') for i, playlist in enumerate(playlists): print(' {}) {} - {}'.format(i + 1, playlist.get('name'), playlist.get('uri'))) # Choose a playlist playlist_choice = int(input('\nChoose a playlist: ')) playlist = playlists[playlist_choice - 1] playlist_owner = playlist.get('owner', {}).get('id') # Get the playlist tracks tracks = [] total = 1 # The API paginates the results, so we need to keep fetching until we have all of the items while len(tracks) < total: tracks_response = spotify.user_playlist_tracks(playlist_owner, playlist.get('id'), offset=len(tracks)) tracks.extend(tracks_response.get('items', [])) total = tracks_response.get('total') # Pull out the actual track objects since they're nested weird tracks = [track.get('track') for track in tracks] # Print out our tracks along with the list of artists for each print_header('Tracks in "{}"'.format(playlist.get('name'))) # Let em choose the tracks selected_tracks = choose_tracks(tracks) return selected_tracks