Exemple #1
0
        public async Task <Recomendations> GetRecommendations(TVDoc mDoc, BackgroundWorker sender, List <MovieConfiguration> movies)
        {
            const string lang    = "en"; //todo make work with multi language
            int          total   = movies.Count;
            int          current = 0;
            Task <SearchContainer <SearchMovie> > topRated = Client.GetMovieTopRatedListAsync(lang);
            Task <SearchContainer <SearchMovie> > trending = Client.GetTrendingMoviesAsync(TimeWindow.Week);
            await topRated;
            await trending;

            Recomendations returnValue = new Recomendations();

            foreach (var top in topRated.Result.Results)
            {
                File(top);
                returnValue.AddTopRated(top.Id);
            }
            foreach (var top in trending.Result.Results)
            {
                File(top);
                returnValue.AddTrending(top.Id);
            }


            foreach (var arg in movies)
            {
                try
                {
                    var related = Client.GetMovieRecommendationsAsync(arg.TmdbCode);
                    var similar = Client.GetMovieSimilarAsync(arg.TmdbCode);

                    Task.WaitAll(related, similar);
                    foreach (var movie in related.Result.Results)
                    {
                        File(movie);
                        returnValue.AddRelated(movie.Id, arg);
                    }


                    foreach (var movie in similar.Result.Results)
                    {
                        File(movie);
                        returnValue.AddSimilar(movie.Id, arg);
                    }

                    sender.ReportProgress(100 * current++ / total, arg.CachedMovie?.Name);
                }
                catch
                {
                    //todo - record error, retry etc
                }
            }

            //var related = movies.Select(arg => (arg.TmdbCode,Client.GetMovieRecommendationsAsync(arg.TmdbCode))).ToList();
            //var similar = movies.Select(arg => (arg.TmdbCode,Client.GetMovieSimilarAsync(arg.TmdbCode))).ToList();

            //Task.WaitAll(related.Select(tuple => tuple.Item2).ToArray());
            //Task.WaitAll(similar.Select(tuple => tuple.Item2).ToArray());
            return(returnValue);
        }
Exemple #2
0
        public async Task <Recomendations> GetRecommendations(TVDoc mDoc, BackgroundWorker sender, List <ShowConfiguration> shows)
        {
            string lang    = "en";
            int    total   = shows.Count;
            int    current = 0;
            Task <SearchContainer <SearchTv> > topRated = Client.GetTvShowTopRatedAsync();
            Task <SearchContainer <SearchTv> > trending = Client.GetTrendingTvAsync(TimeWindow.Week);
            await topRated;
            await trending;

            Recomendations returnValue = new Recomendations();

            foreach (var top in topRated.Result.Results)
            {
                File(top);
                returnValue.AddTopRated(top.Id);
            }
            foreach (var top in trending.Result.Results)
            {
                File(top);
                returnValue.AddTrending(top.Id);
            }


            foreach (var arg in shows)
            {
                try
                {
                    AddRecommendationsFrom(arg, returnValue);

                    sender.ReportProgress(100 * current++ / total, arg.CachedShow?.Name);
                }
                catch
                {
                    //todo record and resolve /retry errors
                }
            }

            return(returnValue);
        }