示例#1
0
        /// <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));
        }
示例#2
0
        //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 }));;
        }