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)); }
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 })); }