static bool UserSearch() { var config = new ConfigurationService(); var console = new ConsoleService(config); var apirequest = new ApiRequestService(console, config); var spotify = new SpotifyService(console, config, apirequest); var analysis = new AnalysisService(); var username = console.PromptForUsername(); // get all public playlists for the provided username var playlists = spotify.GetPlaylists(username, out bool anyFound); // if the provided user has no public playlists, ask for another username if (!anyFound) { return(true); } // get metadata for each public playlist. This will give us a list of tracks. var playlistMetadatum = spotify.GetAllPlaylistMetadatum(playlists.items); // identify unique tracks from the playlist metadataum var tracks = analysis.IdentifyUniqueTracks(playlistMetadatum); // identify unique artists from the tracks. This just gets us artist names / IDs var artists = analysis.IdentifyUniqueArtists(tracks); // get the full artist info, which gets us genres. var fullArtists = spotify.GetAllArtists(artists); // identify unique genres var genres = analysis.IdentifyUniqueGenres(fullArtists); var audioFeatures = spotify.GetAudioFeaturesForAllTracks(tracks); var avgAudioFeatures = analysis.CalculateAverageAudioFeatures(audioFeatures); console.WriteMetrics( artists, genres, audioFeatures, avgAudioFeatures); return(true); }