/// <summary> /// POSTS a new playlist /// </summary> /// <param name="playCreate">Info from view to create the playlist</param> /// <returns>Playlist object</returns> public async Task <SpotList> CreateNewPlaylist(PlayCreate playCreate) { var paramDict = new Dictionary <string, string>() { { "name", playCreate.Name } }; string postString = string.Format("https://api.spotify.com/v1/users/{0}/playlists", playCreate.UserId); var playlist = await SpotApi(HttpMethod.Post, postString, paramDict, true); //creates new playlist return(JsonConvert.DeserializeObject <SpotList>(playlist)); }
//TODO public async Task <ActionResult> GetRecsFromPlaylist(string href) { var trackRec = new AdvTrack(); var tempList = new List <Track>(); var user = await GetCurrentUser(); var listTracks = await GetPlaylistTracks("https://api.spotify.com/v1/playlists/2Ql3TagKirJQJDG93GqMiE"); var trackIds = new List <string>(); //analyze each track in a playlist foreach (var t in listTracks) { trackIds.Add(t.Track.Id); } var audioFeat = await GetAudioFeatures(trackIds.ToArray()); //GetAudioFeatures //send to recommendationengine trackRec = RecommendationEngine(audioFeat); //would be running Populateplaylist multiple times foreach (var t in listTracks) { trackRec.Artist = t.Track.Artists.FirstOrDefault().Name; //need to think of a better way to do this, want to prevent duplicates somehow tempList.AddRange(await PopulatePlaylist(trackRec, 1)); } var pc = new PlayCreate() { Name = "Test 4", UserId = user.Id }; var newList = await CreateNewPlaylist(pc); var x = await AddTracksToPlaylist(tempList, newList.Id); return(RedirectToAction("ViewPlaylist", "Home", new { href = newList.Id }));; }