Пример #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);
        }
Пример #2
0
 public CarDetailViewModel()
 {
     Recomendations.Add(new KVPBase
     {
         id   = 0,
         Name = "Рекомендаций для автомобиля нет"
     });
 }
Пример #3
0
        public void SpeedIncrease(ConsoleKeyInfo key) // увеличение скорости
        {
            int plusSpeed;

            if ((key.Modifiers & ConsoleModifiers.Shift) != 0) // проверка : была ли нажата клавиша Shift
            {
                plusSpeed = 150;                               // в переменную записывается 150, если была нажата клавиша Shift
            }
            else
            {
                plusSpeed = 50;                                  // в переменную записывается 50, если не была нажата клавиша Shift
            }
            CurrentSpeed += plusSpeed;                           // к текущей скорости прибавляется скорость, которая хранится в переменной plusSpeed
            Recomendations?.Invoke(CurrentSpeed, CurrentHeight); // вызов события, уведомление всех диспетчеров о изменении параметров полета
        }
Пример #4
0
        public void HeightIncrease(ConsoleKeyInfo key) // увеличение высоты
        {
            if (CurrentSpeed == 0)
            {
                return;                    // если скорость равна нулю, то увеличение высоты невозможно
            }
            int plusHeight;

            if ((key.Modifiers & ConsoleModifiers.Shift) != 0) // проверка : была ли нажата клавиша Shift
            {
                plusHeight = 500;                              // в переменную записывается 500, если была нажата клавиша Shift
            }
            else
            {
                plusHeight = 250;                                // в переменную записывается 250, если не была нажата клавиша Shift
            }
            CurrentHeight += plusHeight;                         // к текущей высоте прибавляется высота, которая хранится в переменной plusHeight
            Recomendations?.Invoke(CurrentSpeed, CurrentHeight); // вызов события, уведомление всех диспетчеров о изменении параметров полета
        }
Пример #5
0
        private void AddRecommendationsFrom(ShowConfiguration arg, Recomendations returnValue)
        {
            if (arg.TmdbCode == 0)
            {
                string?imdb = arg.CachedShow?.Imdb;
                if (!imdb.HasValue())
                {
                    return;
                }

                int?tmdbcode = LookupTvbdIdByImdb(imdb !, false);
                if (!tmdbcode.HasValue)
                {
                    return;
                }

                arg.TmdbCode = tmdbcode.Value;
            }

            Task <SearchContainer <SearchTv> >?related = Client.GetTvShowRecommendationsAsync(arg.TmdbCode);
            Task <SearchContainer <SearchTv> >?similar = Client.GetTvShowSimilarAsync(arg.TmdbCode);

            Task.WaitAll(related, similar);
            if (related.Result != null)
            {
                foreach (var s in related.Result.Results)
                {
                    File(s);
                    returnValue.AddRelated(s.Id, arg);
                }
            }

            if (similar.Result != null)
            {
                foreach (var s in similar.Result.Results)
                {
                    File(s);
                    returnValue.AddSimilar(s.Id, arg);
                }
            }
        }
Пример #6
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);
        }
Пример #7
0
        public void HeightReduction(ConsoleKeyInfo key) // уменьшение высоты
        {
            if (CurrentSpeed == 0 || CurrentHeight == 0)
            {
                return;                                          // если скорость или высота равно нулю, нет смысла отнимать высоту, т.к. она и так нулевая
            }
            int minusHeight;

            if ((key.Modifiers & ConsoleModifiers.Shift) != 0) // проверка : была ли нажата клавиша Shift
            {
                minusHeight = 500;                             // в переменную записывается 500, если была нажата клавиша Shift
            }
            else
            {
                minusHeight = 250;        // в переменную записывается 250, если не была нажата клавиша Shift
            }
            CurrentHeight -= minusHeight; // от текущей скорости отнимается скорость, которая хранится в переменной minusHeight
            if (CurrentSpeed < 0)
            {
                CurrentSpeed = 0;                                // если высота стала отрицательной, то ей присваевается 0 значение
            }
            Recomendations?.Invoke(CurrentSpeed, CurrentHeight); // вызов события, уведомление всех диспетчеров о изменении параметров полета
        }
Пример #8
0
        public void SpeedReduction(ConsoleKeyInfo key) // уменьшение скорости
        {
            if (CurrentSpeed == 0)
            {
                return;                    // если скорость равно нулю, нет смысла отнимать, назад самолет не станет двигаться, а лишняя нагрузка на компьютер не нужна
            }
            int minusSpeed;

            if ((key.Modifiers & ConsoleModifiers.Shift) != 0) // проверка : была ли нажата клавиша Shift
            {
                minusSpeed = 150;                              // в переменную записывается 150, если была нажата клавиша Shift
            }
            else
            {
                minusSpeed = 50;        // в переменную записывается 50, если не была нажата клавиша Shift
            }
            CurrentSpeed -= minusSpeed; // от текущей скорости отнимается скорость, которая хранится в переменной minusSpeed
            if (CurrentSpeed < 0)
            {
                CurrentSpeed = 0;                                // если скорость стала отрицательной, то ей присваевается 0 значение
            }
            Recomendations?.Invoke(CurrentSpeed, CurrentHeight); // вызов события, уведомление всех диспетчеров о изменении параметров полета
        }
Пример #9
0
 void Instance_GetCarRecomendationsComplete(List <KVPBase> data)
 {
     Recomendations.Clear();
     data.ForEach(x => Recomendations.Add(x));
 }