public void Setup()
        {
            _series = Builder <Series>
                      .CreateNew()
                      .Build();

            _episode = Builder <Episode>
                       .CreateNew()
                       .With(e => e.SeriesId = _series.SeriesId)
                       .With(e => e.Series   = _series)
                       .Build();

            _episodeParseResult = Builder <EpisodeParseResult>
                                  .CreateNew()
                                  .With(p => p.SeasonNumber   = 1)
                                  .With(p => p.EpisodeNumbers = new List <int> {
                _episode.EpisodeNumber
            })
                                  .With(p => p.Episodes = new List <Episode> {
                _episode
            })
                                  .With(p => p.Series = _series)
                                  .Build();

            _searchHistoryItem = new SearchHistoryItem();
        }
Пример #2
0
        async private void HistoryList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            SearchHistoryItem item = (SearchHistoryItem)HistoryList.SelectedItem;

            try
            {
                // Active ProgressSpinner and Show Progress Text
                SearchProgress.IsActive = true;
                txtSearchProgress.Text  = "Searching...";
                SearchResult.Vehicles   = await VehicleAPI.GetVehiclesAsync(item.Query);

                // Disable ProgressSpinner and Show Progress Text
                SearchProgress.IsActive = false;
                txtSearchProgress.Text  = "";
                if (SearchResult.Vehicles.Count > 0)
                {
                    Frame.Navigate(typeof(SearchResult), null, new SuppressNavigationTransitionInfo());
                }
            }
            catch (Exception ex)
            {
                MessageDialog dialog = new MessageDialog(ex.Message);
                dialog.Title = "Info";
                await dialog.ShowAsync();
            }
        }
Пример #3
0
 /// <summary>
 /// Add new item to SearchHistoryList (not file)
 /// </summary>
 /// <param name="item"></param>
 public static void AddItem(SearchHistoryItem item)
 {
     if (List.Count >= 10)
     {
         List.RemoveAt(0);
     }
     List.Add(item);
 }
Пример #4
0
        public override SearchHistoryItem CheckReport(Series series, dynamic options, EpisodeParseResult episodeParseResult,
                                                      SearchHistoryItem item)
        {
            if (options.SeasonNumber != episodeParseResult.SeasonNumber)
            {
                logger.Trace("Season number does not match searched season number, skipping.");
                item.SearchError = ReportRejectionType.WrongSeason;

                return(item);
            }

            return(item);
        }
        public override SearchHistoryItem CheckReport(Series series, dynamic options, EpisodeParseResult episodeParseResult,
                                                      SearchHistoryItem item)
        {
            Episode episode = options.Episode;

            if (!episodeParseResult.AirDate.HasValue || episodeParseResult.AirDate.Value != episode.AirDate.Value)
            {
                logger.Trace("Episode AirDate does not match searched episode number, skipping.");
                item.SearchError = ReportRejectionType.WrongEpisode;

                return(item);
            }

            return(item);
        }
Пример #6
0
        public override SearchHistoryItem CheckReport(Series series, dynamic options, EpisodeParseResult episodeParseResult,
                                                      SearchHistoryItem item)
        {
            if (series.UseSceneNumbering && options.Episode.SeasonNumber > 0 && options.Episode.EpisodeNumber > 0)
            {
                if (options.Episode.SceneSeasonNumber != episodeParseResult.SeasonNumber)
                {
                    logger.Trace("Season number does not match searched season number, skipping.");
                    item.SearchError = ReportRejectionType.WrongSeason;

                    return(item);
                }

                if (!episodeParseResult.EpisodeNumbers.Contains(options.Episode.SceneEpisodeNumber))
                {
                    logger.Trace("Episode number does not match searched episode number, skipping.");
                    item.SearchError = ReportRejectionType.WrongEpisode;

                    return(item);
                }

                return(item);
            }

            if (options.Episode.SeasonNumber != episodeParseResult.SeasonNumber)
            {
                logger.Trace("Season number does not match searched season number, skipping.");
                item.SearchError = ReportRejectionType.WrongSeason;

                return(item);
            }

            if (!episodeParseResult.EpisodeNumbers.Contains(options.Episode.EpisodeNumber))
            {
                logger.Trace("Episode number does not match searched episode number, skipping.");
                item.SearchError = ReportRejectionType.WrongEpisode;

                return(item);
            }

            return(item);
        }
        public void Setup()
        {
            _series = Builder <Series>
                      .CreateNew()
                      .Build();

            _episodes = Builder <Episode>
                        .CreateListOfSize(10)
                        .All()
                        .With(e => e.SeriesId = _series.SeriesId)
                        .With(e => e.Series   = _series)
                        .Build()
                        .ToList();

            _episodeParseResult = Builder <EpisodeParseResult>
                                  .CreateNew()
                                  .With(p => p.SeasonNumber = 1)
                                  .Build();

            _searchHistoryItem = new SearchHistoryItem();
        }
Пример #8
0
        public virtual SearchHistory ProcessReports(Series series, dynamic options, List <EpisodeParseResult> episodeParseResults,
                                                    SearchHistory searchResult, ProgressNotification notification)
        {
            var items = new List <SearchHistoryItem>();

            searchResult.Successes = new List <Int32>();

            foreach (var episodeParseResult in episodeParseResults
                     .OrderByDescending(c => c.Quality)
                     .ThenBy(c => c.EpisodeNumbers.MinOrDefault())
                     .ThenBy(c => c.Age))
            {
                try
                {
                    var item = new SearchHistoryItem
                    {
                        ReportTitle = episodeParseResult.OriginalString,
                        NzbUrl      = episodeParseResult.NzbUrl,
                        Indexer     = episodeParseResult.Indexer,
                        Quality     = episodeParseResult.Quality.Quality,
                        Proper      = episodeParseResult.Quality.Proper,
                        Size        = episodeParseResult.Size,
                        Age         = episodeParseResult.Age,
                        Language    = episodeParseResult.Language
                    };

                    items.Add(item);

                    logger.Trace("Analysing report " + episodeParseResult);
                    episodeParseResult.Series = _seriesProvider.FindSeries(episodeParseResult.CleanTitle);

                    if (episodeParseResult.Series == null || episodeParseResult.Series.SeriesId != series.SeriesId)
                    {
                        item.SearchError = ReportRejectionType.WrongSeries;
                        continue;
                    }

                    episodeParseResult.Episodes = _episodeProvider.GetEpisodesByParseResult(episodeParseResult);

                    if (searchResult.Successes.Intersect(episodeParseResult.Episodes.Select(e => e.EpisodeId)).Any())
                    {
                        item.SearchError = ReportRejectionType.Skipped;
                        continue;
                    }

                    CheckReport(series, options, episodeParseResult, item);
                    if (item.SearchError != ReportRejectionType.None)
                    {
                        continue;
                    }

                    item.SearchError = _allowedDownloadSpecification.IsSatisfiedBy(episodeParseResult);

                    if (item.SearchError == ReportRejectionType.None)
                    {
                        if (DownloadReport(notification, episodeParseResult, item))
                        {
                            searchResult.Successes.AddRange(episodeParseResult.Episodes.Select(e => e.EpisodeId));
                        }
                    }
                }
                catch (Exception e)
                {
                    logger.ErrorException("An error has occurred while processing parse result items from " + episodeParseResult, e);
                }
            }

            searchResult.SearchHistoryItems = items;
            return(searchResult);
        }
Пример #9
0
 public abstract SearchHistoryItem CheckReport(Series series, dynamic options, EpisodeParseResult episodeParseResult,
                                               SearchHistoryItem item);
Пример #10
0
        public virtual Boolean DownloadReport(ProgressNotification notification, EpisodeParseResult episodeParseResult, SearchHistoryItem item)
        {
            logger.Debug("Found '{0}'. Adding to download queue.", episodeParseResult);
            try
            {
                if (_downloadProvider.DownloadReport(episodeParseResult))
                {
                    notification.CurrentMessage = String.Format("{0} Added to download queue", episodeParseResult);
                    item.Success = true;
                    return(true);
                }

                item.SearchError = ReportRejectionType.DownloadClientFailure;
            }
            catch (Exception e)
            {
                logger.ErrorException("Unable to add report to download queue." + episodeParseResult, e);
                notification.CurrentMessage = String.Format("Unable to add report to download queue. {0}", episodeParseResult);
                item.SearchError            = ReportRejectionType.DownloadClientFailure;
            }

            return(false);
        }