protected EpisodeResource GetEpisode(int id)
        {
            var episode  = _episodeService.GetEpisode(id);
            var resource = MapToResource(episode, true, true, true);

            return(resource);
        }
        protected EpisodeResource GetEpisode(int id)
        {
            var episode = _episodeService.GetEpisode(id);

            episode.EpisodeFile.LazyLoad();
            episode.Series = _seriesService.GetSeries(episode.SeriesId);
            return(ToResource(episode));
        }
 public ActionResult SerialInfo(int[] selectedEpisode, Serial selectedSerial)
 {
     try
     {
         var user   = GetUser();
         var serial = serialService.GetSerial(selectedSerial.Id);
         userService.DelAllEpisode(user, serial);
         if (selectedEpisode != null)
         {
             foreach (var id in selectedEpisode)
             {
                 var episode = episodeService.GetEpisode(id);
                 userService.AddEpisode(user, episode);
             }
         }
         return(RedirectToAction("Index", "User"));
     }
     catch
     {
         return(RedirectToAction("BadRequest", "Error"));
     }
 }
Esempio n. 4
0
        public void SearchForRecentlyAdded(int seriesId)
        {
            var previouslyAired = _addedEpisodesCache.Find(seriesId.ToString());

            if (previouslyAired != null && previouslyAired.Any())
            {
                var missing = previouslyAired.Select(e => _episodeService.GetEpisode(e)).Where(e => !e.HasFile).ToList();

                if (missing.Any())
                {
                    _commandQueueManager.Push(new EpisodeSearchCommand(missing.Select(e => e.Id).ToList()));
                }
            }

            _addedEpisodesCache.Remove(seriesId.ToString());
        }
Esempio n. 5
0
        public List <DownloadDecision> EpisodeSearch(int episodeId)
        {
            var episode = _episodeService.GetEpisode(episodeId);
            var series  = _seriesService.GetSeries(episode.SeriesId);

            if (series.SeriesType == SeriesTypes.Daily)
            {
                if (string.IsNullOrWhiteSpace(episode.AirDate))
                {
                    throw new InvalidOperationException("Daily episode is missing AirDate. Try to refresh series info.");
                }

                return(SearchDaily(series, episode));
            }

            return(SearchSingle(series, episode));
        }
Esempio n. 6
0
        public IActionResult GetEpisode(long episodeId)
        {
            var episode = _episodeService.GetEpisode(episodeId);

            var model = new EpisodeModel
            {
                EpisodeId    = episode.Episode_Id,
                Title        = episode.Title,
                OpeningCrawl = episode.Opening_Crawl,
                Director     = episode.Director,
                Producer     = episode.Producer,
                ReleaseDate  = episode.Release_Date,
                Rating       = episode.Rating
            };

            var json = JsonHelper <EpisodeModel> .JsonConverter(model);

            return(Ok(json));
        }
Esempio n. 7
0
        public void HandleAsync(DownloadFailedEvent message)
        {
            if (!_configService.AutoRedownloadFailed)
            {
                _logger.Debug("Auto redownloading failed episodes is disabled");
                return;
            }

            if (message.EpisodeIds.Count == 1)
            {
                _logger.Debug("Failed download only contains one episode, searching again");

                _commandExecutor.PublishCommandAsync(new EpisodeSearchCommand(message.EpisodeIds));

                return;
            }

            var seasonNumber     = _episodeService.GetEpisode(message.EpisodeIds.First()).SeasonNumber;
            var episodesInSeason = _episodeService.GetEpisodesBySeason(message.SeriesId, seasonNumber);

            if (message.EpisodeIds.Count == episodesInSeason.Count)
            {
                _logger.Debug("Failed download was entire season, searching again");

                _commandExecutor.PublishCommandAsync(new SeasonSearchCommand
                {
                    SeriesId     = message.SeriesId,
                    SeasonNumber = seasonNumber
                });

                return;
            }

            _logger.Debug("Failed download contains multiple episodes, probably a double episode, searching again");

            _commandExecutor.PublishCommandAsync(new EpisodeSearchCommand(message.EpisodeIds));
        }
        public Decision IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
        {
            if (searchCriteria == null)
            {
                return(Decision.Accept());
            }

            var dailySearchSpec = searchCriteria as DailyEpisodeSearchCriteria;

            if (dailySearchSpec == null)
            {
                return(Decision.Accept());
            }

            var episode = _episodeService.GetEpisode(dailySearchSpec.Series.Id, dailySearchSpec.AirDate.ToString(Episode.AIR_DATE_FORMAT));

            if (!remoteEpisode.ParsedEpisodeInfo.IsDaily || remoteEpisode.ParsedEpisodeInfo.AirDate != episode.AirDate)
            {
                _logger.Debug("Episode AirDate does not match searched episode number, skipping.");
                return(Decision.Reject("Episode does not match"));
            }

            return(Decision.Accept());
        }
        public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
        {
            if (searchCriteria == null)
            {
                return(true);
            }

            var dailySearchSpec = searchCriteria as DailyEpisodeSearchCriteria;

            if (dailySearchSpec == null)
            {
                return(true);
            }

            var episode = _episodeService.GetEpisode(dailySearchSpec.Series.Id, dailySearchSpec.Airtime);

            if (!remoteEpisode.ParsedEpisodeInfo.AirDate.HasValue || remoteEpisode.ParsedEpisodeInfo.AirDate.Value.ToString(Episode.AIR_DATE_FORMAT) != episode.AirDate)
            {
                _logger.Trace("Episode AirDate does not match searched episode number, skipping.");
                return(false);
            }

            return(true);
        }
Esempio n. 10
0
        private object DownloadRelease(ReleaseResource release)
        {
            var remoteEpisode = _remoteEpisodeCache.Find(GetCacheKey(release));

            if (remoteEpisode == null)
            {
                _logger.Debug("Couldn't find requested release in cache, cache timeout probably expired.");

                throw new NzbDroneClientException(HttpStatusCode.NotFound, "Couldn't find requested release in cache, try searching again");
            }

            try
            {
                if (remoteEpisode.Series == null)
                {
                    if (release.EpisodeId.HasValue)
                    {
                        var episode = _episodeService.GetEpisode(release.EpisodeId.Value);

                        remoteEpisode.Series   = _seriesService.GetSeries(episode.SeriesId);
                        remoteEpisode.Episodes = new List <Episode> {
                            episode
                        };
                    }
                    else if (release.SeriesId.HasValue)
                    {
                        var series   = _seriesService.GetSeries(release.SeriesId.Value);
                        var episodes = _parsingService.GetEpisodes(remoteEpisode.ParsedEpisodeInfo, series, true);

                        if (episodes.Empty())
                        {
                            throw new NzbDroneClientException(HttpStatusCode.NotFound, "Unable to parse episodes in the release");
                        }

                        remoteEpisode.Series   = series;
                        remoteEpisode.Episodes = episodes;
                    }
                    else
                    {
                        throw new NzbDroneClientException(HttpStatusCode.NotFound, "Unable to find matching series and episodes");
                    }
                }
                else if (remoteEpisode.Episodes.Empty())
                {
                    var episodes = _parsingService.GetEpisodes(remoteEpisode.ParsedEpisodeInfo, remoteEpisode.Series, true);

                    if (episodes.Empty() && release.EpisodeId.HasValue)
                    {
                        var episode = _episodeService.GetEpisode(release.EpisodeId.Value);

                        episodes = new List <Episode> {
                            episode
                        };
                    }

                    remoteEpisode.Episodes = episodes;
                }

                if (remoteEpisode.Episodes.Empty())
                {
                    throw new NzbDroneClientException(HttpStatusCode.NotFound, "Unable to parse episodes in the release");
                }

                _downloadService.DownloadReport(remoteEpisode);
            }
            catch (ReleaseDownloadException ex)
            {
                _logger.Error(ex, ex.Message);
                throw new NzbDroneClientException(HttpStatusCode.Conflict, "Getting release from indexer failed");
            }

            return(release);
        }
Esempio n. 11
0
        public List <DownloadDecision> EpisodeSearch(int episodeId)
        {
            var episode = _episodeService.GetEpisode(episodeId);

            return(EpisodeSearch(episode));
        }
Esempio n. 12
0
        public List <DownloadDecision> EpisodeSearch(int episodeId, bool userInvokedSearch, bool interactiveSearch)
        {
            var episode = _episodeService.GetEpisode(episodeId);

            return(EpisodeSearch(episode, userInvokedSearch, interactiveSearch));
        }
Esempio n. 13
0
 private EpisodeResource GetEpisode(int id)
 {
     return(_episodeService.GetEpisode(id).InjectTo <EpisodeResource>());
 }
Esempio n. 14
0
 //// GET: Episode/Details/5
 public ActionResult Details(int id)
 {
     return(View(_episodeService.GetEpisode(id)));
 }
 public object GetAnEpisode([FromServices] IEpisodeService episode)
 {
     return(episode.GetEpisode());
 }