public ActionResult Index(RecommendationViewModel model)
        {
            Populate(model);

            if (!model.GenreQuery.Any() && !model.MoodQuery.Any() && !model.StyleQuery.Any() && !model.StartYearQuery.HasValue && !model.EndYearQuery.HasValue)
            {
                ModelState.AddModelError("Query", "Please select something!");
            }

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var args = new RecommendationQueryArgs
            {
                Genre     = model.GenreQuery,
                Mood      = model.MoodQuery,
                Style     = model.StyleQuery,
                StartYear = model.StartYearQuery,
                EndYear   = model.EndYearQuery
            };

            model.Artists  = _service.GetArtists(args);
            model.Songs    = _service.GetSongs(args);
            model.IsSearch = true;

            return(View(model));
        }
Esempio n. 2
0
        public List <Song> GetSongs(RecommendationQueryArgs args)
        {
            var request = _apiClient.CreateRequest("song/search");

            AddSearchArgs(request, args);
            request.AddQueryParameter("sort", "artist_familiarity-desc");
            var response = _apiClient.Execute <SongSearchResponse>(request);

            return(response.Songs);
        }
Esempio n. 3
0
        public List <Artist> GetArtists(RecommendationQueryArgs args)
        {
            var request = _apiClient.CreateRequest("artist/search");

            AddSearchArgs(request, args);
            request.TryAddQueryParameter("genre", args.Genre);
            request.AddQueryParameter("sort", "familiarity-desc");
            var response = _apiClient.Execute <ArtistSearchResponse>(request);

            return(response.Artists);
        }
Esempio n. 4
0
        public void RecommendationTest()
        {
            RecommendationQueryArgs args = new RecommendationQueryArgs
            {
                Mood = new List <string>()
                {
                    "angry"
                }
            };

            var service = new RecommendationService(_dataProvider);
            var artists = service.GetArtists(args);
            var songs   = service.GetSongs(args);

            Assert.IsNotNull(artists);
            Assert.IsNotNull(songs);
        }
Esempio n. 5
0
        private static void AddSearchArgs(RestRequest request, RecommendationQueryArgs args)
        {
            request.AddQueryParameter("rank_type", "familiarity");
            request.TryAddQueryParameter("mood", args.Mood);
            request.TryAddQueryParameter("style", args.Style);

            if (args.StartYear.HasValue)
            {
                request.AddQueryParameter("artist_start_year_after", (args.StartYear - 1).ToString());
                request.AddQueryParameter("artist_end_year_after", args.StartYear.ToString());
            }

            if (args.EndYear.HasValue)
            {
                request.AddQueryParameter("artist_end_year_before", (args.EndYear + 1).ToString());
                request.AddQueryParameter("artist_start_year_before", args.EndYear.ToString());
            }
        }
Esempio n. 6
0
 public List <Song> GetSongs(RecommendationQueryArgs args)
 {
     return(DataProvider.GetSongs(args));
 }
Esempio n. 7
0
 public List <Artist> GetArtists(RecommendationQueryArgs args)
 {
     return(DataProvider.GetArtists(args));
 }