Beispiel #1
0
        public async Task <MostPopularItems> GetMostPopularItems(string userId)
        {
            MostPopularItems results = null;

            try
            {
                //USER_PERSONALIZATION -- userid required
                var request = new GetRecommendationsRequest
                {
                    CampaignArn = AwsParameterStoreClient.GetSimsMostPopularArn(), //sims-most-popular
                    UserId      = userId,
                    NumResults  = 10
                };

                var response = await AmazonPersonalizeRuntimeClient.GetRecommendationsAsync(request);

                var recommendedItems = response.ItemList;

                var json = JsonConvert.SerializeObject(recommendedItems);

                Logger.LogInformation("GetMostPopularItems for userid:" + userId + ": " + json);

                results = new MostPopularItems();

                List <string> itemIds = recommendedItems.Select(s => s.ItemId).ToList();

                results.Movies = await _storageService.GetMovieData(itemIds.ToArray());

                return(results);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Beispiel #2
0
        public PersonalizedRecommendationsService(ILogger logger)
        {
            AmazonPersonalizeClient = new AmazonPersonalizeClient(RegionEndpoint.USEast1);

            AmazonPersonalizeRuntimeClient = new AmazonPersonalizeRuntimeClient(RegionEndpoint.USEast1);

            Logger = logger;
        }
        protected IAmazonPersonalizeRuntime CreateClient(AWSCredentials credentials, RegionEndpoint region)
        {
            var config = new AmazonPersonalizeRuntimeConfig {
                RegionEndpoint = region
            };

            Amazon.PowerShell.Utils.Common.PopulateConfig(this, config);
            this.CustomizeClientConfig(config);
            var client = new AmazonPersonalizeRuntimeClient(credentials, config);

            client.BeforeRequestEvent += RequestEventHandler;
            client.AfterResponseEvent += ResponseEventHandler;
            return(client);
        }
Beispiel #4
0
        public async Task <PersonalizeViewModel> GetRecommendations(string userId)
        {
            PersonalizeViewModel results = null;

            try
            {
                //USER_PERSONALIZATION -- userid required
                var request = new GetRecommendationsRequest
                {
                    CampaignArn = AwsParameterStoreClient.GetPersonalRecommendationsArn(), //personal-recommendations-metadata
                    UserId      = userId,
                    NumResults  = 10
                };

                var response = await AmazonPersonalizeRuntimeClient.GetRecommendationsAsync(request);

                var recommendedItems = response.ItemList;

                var json = JsonConvert.SerializeObject(recommendedItems);

                Logger.LogInformation("GetRecommendations:" + userId + ": " + json);

                results = new PersonalizeViewModel {
                    User = new User()
                    {
                        User_Id = userId
                    }
                };

                //get movie thumbnail from imdb
                IList <RecommendedItems> recItems = new List <RecommendedItems>();

                List <string> itemIds = recommendedItems.Select(s => s.ItemId).ToList();

                results.RecommendedItems.Movies = await _storageService.GetMovieData(itemIds.ToArray());

                return(results);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Beispiel #5
0
        public async Task <SimilarItemViewModel> GetSimilarItems(string movieItemId)
        {
            SimilarItemViewModel results = null;

            try
            {
                //RELATED_ITEMS -- itemId required
                var relateditemsrequest = new GetRecommendationsRequest
                {
                    CampaignArn = AwsParameterStoreClient.GetSimsArn(), //sims-arn
                    ItemId      = movieItemId,
                    NumResults  = 10
                };

                var relateditemsrequestresponse = await AmazonPersonalizeRuntimeClient.GetRecommendationsAsync(relateditemsrequest);

                var relateditemsrequestrecommendedItems = relateditemsrequestresponse.ItemList;

                var json = JsonConvert.SerializeObject(relateditemsrequestrecommendedItems);

                Logger.LogInformation("GetSimilarItems for movie:" + movieItemId + ": " + json);

                results = new SimilarItemViewModel
                {
                    //selected movie
                    Movie = await _storageService.GetMovieData(movieItemId)
                };


                List <string> itemIds = relateditemsrequestrecommendedItems.Select(s => s.ItemId).ToList();

                results.SimilarItems.Movies = await _storageService.GetMovieData(itemIds.ToArray());

                return(results);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Beispiel #6
0
        public async Task <PersonalizedRankingResults> GetPersonalizedResults(string userId, List <Movie> movies)
        {
            PersonalizedRankingResults results = null;

            try
            {
                //USER_PERSONALIZATION -- userid required
                var request = new GetPersonalizedRankingRequest //personal-ranking
                {
                    CampaignArn =
                        AwsParameterStoreClient.GetPersonalRankingArn(),
                    UserId    = userId,
                    InputList = movies.Select(s => s.Id).ToList()
                };

                var response = await AmazonPersonalizeRuntimeClient.GetPersonalizedRankingAsync(request);

                var recommendedItems = response.PersonalizedRanking;

                var json = JsonConvert.SerializeObject(recommendedItems);

                Logger.LogInformation("GetPersonalizedResults:" + userId + ": " + json);

                results = new PersonalizedRankingResults();

                List <string> itemIds = recommendedItems.Select(s => s.ItemId).ToList();

                results.Movies = await _storageService.GetMovieData(itemIds.ToArray());

                return(results);
            }
            catch (Exception ex)
            {
                throw;
            }
        }