Esempio n. 1
0
        public void Start(Configuration c)
        {
            CpSubscription?.Dispose();
            SonarrSubscription?.Dispose();
            SickRageSubscription?.Dispose();

            Task.Factory.StartNew(() => CpCacher.Queued(-1));
            Task.Factory.StartNew(() => SonarrCacher.Queued(-1));
            Task.Factory.StartNew(() => SickRageCacher.Queued(-1));
            CpSubscription       = Observable.Interval(c.Intervals.Notification).Subscribe(CpCacher.Queued);
            SonarrSubscription   = Observable.Interval(c.Intervals.Notification).Subscribe(SonarrCacher.Queued);
            SickRageSubscription = Observable.Interval(c.Intervals.Notification).Subscribe(SickRageCacher.Queued);
        }
        private Response ProcessMovies(MovieSearchType searchType, string searchTerm)
        {
            var taskList = new List <Task>();

            var apiMovies = new List <MovieResult>();

            taskList.Add(Task.Factory.StartNew(() =>
            {
                switch (searchType)
                {
                case MovieSearchType.Search:
                    return(MovieApi.SearchMovie(searchTerm).Result.Select(x => new MovieResult()
                    {
                        Adult = x.Adult,
                        BackdropPath = x.BackdropPath,
                        GenreIds = x.GenreIds,
                        Id = x.Id,
                        OriginalLanguage = x.OriginalLanguage,
                        OriginalTitle = x.OriginalTitle,
                        Overview = x.Overview,
                        Popularity = x.Popularity,
                        PosterPath = x.PosterPath,
                        ReleaseDate = x.ReleaseDate,
                        Title = x.Title,
                        Video = x.Video,
                        VoteAverage = x.VoteAverage,
                        VoteCount = x.VoteCount
                    }).ToList());

                case MovieSearchType.CurrentlyPlaying:
                    return(MovieApi.GetCurrentPlayingMovies().Result.ToList());

                case MovieSearchType.Upcoming:
                    return(MovieApi.GetUpcomingMovies().Result.ToList());

                default:
                    return(new List <MovieResult>());
                }
            }).ContinueWith((t) =>
            {
                apiMovies = t.Result;
            }));

            Dictionary <int, RequestedModel> dbMovies = new Dictionary <int, RequestedModel>();

            taskList.Add(Task.Factory.StartNew(() =>
            {
                return(RequestService.GetAll().Where(x => x.Type == RequestType.Movie));
            }).ContinueWith((t) =>
            {
                var distinctResults = t.Result.DistinctBy(x => x.ProviderId);
                dbMovies            = distinctResults.ToDictionary(x => x.ProviderId);
            }));

            Task.WaitAll(taskList.ToArray());

            var cpCached   = CpCacher.QueuedIds();
            var plexMovies = Checker.GetPlexMovies();
            var settings   = PrService.GetSettings();
            var viewMovies = new List <SearchMovieViewModel>();

            foreach (MovieResult movie in apiMovies)
            {
                var viewMovie = new SearchMovieViewModel
                {
                    Adult            = movie.Adult,
                    BackdropPath     = movie.BackdropPath,
                    GenreIds         = movie.GenreIds,
                    Id               = movie.Id,
                    OriginalLanguage = movie.OriginalLanguage,
                    OriginalTitle    = movie.OriginalTitle,
                    Overview         = movie.Overview,
                    Popularity       = movie.Popularity,
                    PosterPath       = movie.PosterPath,
                    ReleaseDate      = movie.ReleaseDate,
                    Title            = movie.Title,
                    Video            = movie.Video,
                    VoteAverage      = movie.VoteAverage,
                    VoteCount        = movie.VoteCount
                };
                var canSee = CanUserSeeThisRequest(viewMovie.Id, settings.UsersCanViewOnlyOwnRequests, dbMovies);
                if (Checker.IsMovieAvailable(plexMovies.ToArray(), movie.Title, movie.ReleaseDate?.Year.ToString()))
                {
                    viewMovie.Available = true;
                }
                else if (dbMovies.ContainsKey(movie.Id) && canSee) // compare to the requests db
                {
                    var dbm = dbMovies[movie.Id];

                    viewMovie.Requested = true;
                    viewMovie.Approved  = dbm.Approved;
                    viewMovie.Available = dbm.Available;
                }
                else if (cpCached.Contains(movie.Id) && canSee) // compare to the couchpotato db
                {
                    viewMovie.Requested = true;
                }

                viewMovies.Add(viewMovie);
            }

            return(Response.AsJson(viewMovies));
        }
Esempio n. 3
0
        private async Task <Response> ScheduleRun(string key)
        {
            if (key.Equals(JobNames.PlexCacher, StringComparison.CurrentCultureIgnoreCase))
            {
                PlexContentCacher.CacheContent();
            }

            if (key.Equals(JobNames.WatcherCacher, StringComparison.CurrentCultureIgnoreCase))
            {
                WatcherCacher.Queued();
            }

            if (key.Equals(JobNames.SonarrCacher, StringComparison.CurrentCultureIgnoreCase))
            {
                SonarrCacher.Queued();
            }
            if (key.Equals(JobNames.RadarrCacher, StringComparison.CurrentCultureIgnoreCase))
            {
                RadarrCacher.Queued();
            }
            if (key.Equals(JobNames.CpCacher, StringComparison.CurrentCultureIgnoreCase))
            {
                CpCacher.Queued();
            }
            if (key.Equals(JobNames.StoreBackup, StringComparison.CurrentCultureIgnoreCase))
            {
                StoreBackup.Start();
            }
            if (key.Equals(JobNames.SrCacher, StringComparison.CurrentCultureIgnoreCase))
            {
                SrCacher.Queued();
            }
            if (key.Equals(JobNames.PlexChecker, StringComparison.CurrentCultureIgnoreCase))
            {
                AvailabilityChecker.Start();
            }
            if (key.Equals(JobNames.StoreCleanup, StringComparison.CurrentCultureIgnoreCase))
            {
                StoreCleanup.Start();
            }
            if (key.Equals(JobNames.RequestLimitReset, StringComparison.CurrentCultureIgnoreCase))
            {
                RequestLimit.Start();
            }
            if (key.Equals(JobNames.EpisodeCacher, StringComparison.CurrentCultureIgnoreCase))
            {
                EpisodeCacher.Start();
            }
            if (key.Equals(JobNames.RecentlyAddedEmail, StringComparison.CurrentCultureIgnoreCase))
            {
                RecentlyAdded.Start();
            }
            if (key.Equals(JobNames.FaultQueueHandler, StringComparison.CurrentCultureIgnoreCase))
            {
                FaultQueueHandler.Start();
            }
            if (key.Equals(JobNames.PlexUserChecker, StringComparison.CurrentCultureIgnoreCase))
            {
                RequestLimit.Start();
            }


            return(Response.AsJson(new JsonResponseModel {
                Result = true
            }));
        }