Exemple #1
0
        public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            if (SupportsSearch)
            {
                var queryTitles = (TextSearchEngine == "raw" ? searchCriteria.SceneTitles : searchCriteria.CleanSceneTitles);
                foreach (var queryTitle in queryTitles)
                {
                    pageableRequests.Add(GetPagedRequests(MaxPages, Settings.AnimeCategories, "search",
                                                          string.Format("&q={0}+{1:00}",
                                                                        NewsnabifyTitle(queryTitle),
                                                                        searchCriteria.AbsoluteEpisodeNumber)));

                    if (Settings.AnimeStandardFormatSearch && searchCriteria.SeasonNumber > 0 && searchCriteria.EpisodeNumber > 0)
                    {
                        pageableRequests.Add(GetPagedRequests(MaxPages, Settings.AnimeCategories, "search",
                                                              string.Format("&q={0}&season={1}&ep={2}",
                                                                            NewsnabifyTitle(queryTitle),
                                                                            searchCriteria.SeasonNumber,
                                                                            searchCriteria.EpisodeNumber)));
                    }
                }
            }

            return(pageableRequests);
        }
Exemple #2
0
        public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            foreach (var queryTitle in searchCriteria.SceneTitles)
            {
                var searchTitle = PrepareQuery(queryTitle);

                if (searchCriteria.AbsoluteEpisodeNumber > 0)
                {
                    pageableRequests.Add(GetPagedRequests(MaxPages, $"{searchTitle}+{searchCriteria.AbsoluteEpisodeNumber:0}"));

                    if (searchCriteria.AbsoluteEpisodeNumber < 10)
                    {
                        pageableRequests.Add(GetPagedRequests(MaxPages, $"{searchTitle}+{searchCriteria.AbsoluteEpisodeNumber:00}"));
                    }
                }

                if (Settings.AnimeStandardFormatSearch && searchCriteria.SeasonNumber > 0 && searchCriteria.EpisodeNumber > 0)
                {
                    pageableRequests.Add(GetPagedRequests(MaxPages, $"{searchTitle}+s{searchCriteria.SeasonNumber:00}e{searchCriteria.EpisodeNumber:00}"));
                }
            }

            return(pageableRequests);
        }
Exemple #3
0
        public void SetUp()
        {
            Subject.Settings = new FanzubSettings()
            {
                BaseUrl = "http://127.0.0.1:1234/",
            };

            _seasonSearchCriteria = new SeasonSearchCriteria()
            {
                SceneTitles = new List <string>()
                {
                    "Naruto Shippuuden"
                },
                SeasonNumber = 1,
            };

            _animeSearchCriteria = new AnimeEpisodeSearchCriteria()
            {
                SceneTitles = new List <string>()
                {
                    "Naruto Shippuuden"
                },
                AbsoluteEpisodeNumber = 9,
                SeasonNumber          = 1,
                EpisodeNumber         = 9
            };
        }
Exemple #4
0
        public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            var parameters = new BroadcastheNetTorrentQuery();

            if (AddSeriesSearchParameters(parameters, searchCriteria))
            {
                foreach (var episode in searchCriteria.Episodes)
                {
                    parameters = parameters.Clone();

                    parameters.Category = "Episode";
                    parameters.Name     = string.Format("S{0:00}E{1:00}", episode.SeasonNumber, episode.EpisodeNumber);

                    pageableRequests.Add(GetPagedRequests(MaxPages, parameters));
                }

                foreach (var seasonNumber in searchCriteria.Episodes.Select(v => v.SeasonNumber).Distinct())
                {
                    parameters = parameters.Clone();

                    parameters.Category = "Season";
                    parameters.Name     = string.Format("Season {0}", seasonNumber);

                    pageableRequests.Add(GetPagedRequests(MaxPages, parameters));
                }
            }

            return(pageableRequests);
        }
        public override IList <ReleaseInfo> Fetch(AnimeEpisodeSearchCriteria searchCriteria)
        {
            if (!SupportsSearch)
            {
                return(new List <ReleaseInfo>());
            }

            return(FetchReleases(g => g.GetSearchRequests(searchCriteria)));
        }
Exemple #6
0
        public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            var searchTitles = searchCriteria.CleanSceneTitles.SelectMany(v => GetTitleSearchStrings(v, searchCriteria.AbsoluteEpisodeNumber)).ToList();

            pageableRequests.Add(GetPagedRequests(string.Join("|", searchTitles)));

            return(pageableRequests);
        }
        private Decision IsSatisfiedBy(RemoteEpisode remoteEpisode, AnimeEpisodeSearchCriteria animeEpisodeSpec)
        {
            if (remoteEpisode.ParsedEpisodeInfo.FullSeason && !animeEpisodeSpec.IsSeasonSearch)
            {
                _logger.Debug("Full season result during single episode search, skipping.");
                return(Decision.Reject("Full season pack"));
            }

            return(Decision.Accept());
        }
        public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new List <IEnumerable <IndexerRequest> >();

            var searchTitles = searchCriteria.QueryTitles.SelectMany(v => GetTitleSearchStrings(v, searchCriteria.AbsoluteEpisodeNumber)).ToList();

            pageableRequests.Add(GetPagedRequests(String.Join("|", searchTitles)));

            return(pageableRequests);
        }
Exemple #9
0
        public override IList <ReleaseInfo> Fetch(AnimeEpisodeSearchCriteria searchCriteria)
        {
            if (!SupportsSearch)
            {
                return(new List <ReleaseInfo>());
            }

            var generator = GetRequestGenerator();

            return(FetchReleases(generator.GetSearchRequests(searchCriteria)));
        }
Exemple #10
0
        public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new List <IEnumerable <IndexerRequest> >();

            foreach (var queryTitle in searchCriteria.QueryTitles)
            {
                var searchQuery = GetSearchQuery(queryTitle, searchCriteria.AbsoluteEpisodeNumber);

                pageableRequests.Add(GetPagedRequests(searchQuery));
            }

            return(pageableRequests);
        }
Exemple #11
0
        public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new List <IEnumerable <IndexerRequest> >();

            foreach (var queryTitle in searchCriteria.QueryTitles)
            {
                pageableRequests.AddIfNotNull(GetPagedRequests(MaxPages, Settings.AnimeCategories, "search",
                                                               String.Format("&q={0}+{1:00}",
                                                                             NewsnabifyTitle(queryTitle),
                                                                             searchCriteria.AbsoluteEpisodeNumber)));
            }

            return(pageableRequests);
        }
Exemple #12
0
        public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            var searchTitles = searchCriteria.CleanSceneTitles.SelectMany(v => GetTitleSearchStrings(v, searchCriteria.AbsoluteEpisodeNumber)).ToList();

            if (Settings.AnimeStandardFormatSearch && searchCriteria.SeasonNumber > 0 && searchCriteria.EpisodeNumber > 0)
            {
                searchTitles.AddRange(searchCriteria.CleanSceneTitles.SelectMany(v => GetTitleSearchStrings(v, searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber)).ToList());
            }

            pageableRequests.Add(GetPagedRequests(string.Join("|", searchTitles)));

            return(pageableRequests);
        }
        public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            if (SupportsSearch)
            {
                foreach (var queryTitle in searchCriteria.QueryTitles)
                {
                    pageableRequests.Add(GetPagedRequests(MaxPages, Settings.AnimeCategories, "search",
                                                          string.Format("&q={0}+{1:00}",
                                                                        NewsnabifyTitle(queryTitle),
                                                                        searchCriteria.AbsoluteEpisodeNumber)));
                }
            }

            return(pageableRequests);
        }
Exemple #14
0
        public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            foreach (var queryTitle in searchCriteria.QueryTitles)
            {
                var searchTitle = PrepareQuery(queryTitle);

                pageableRequests.Add(GetPagedRequests(MaxPages, $"{searchTitle}+{searchCriteria.AbsoluteEpisodeNumber:0}"));

                if (searchCriteria.AbsoluteEpisodeNumber < 10)
                {
                    pageableRequests.Add(GetPagedRequests(MaxPages, $"{searchTitle}+{searchCriteria.AbsoluteEpisodeNumber:00}"));
                }
            }

            return(pageableRequests);
        }
        public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            var queryBase = new TorrentQuery();

            if (TryAddSearchParameters(queryBase, searchCriteria))
            {
                foreach (var episode in searchCriteria.Episodes)
                {
                    var query = queryBase.Clone();

                    query.TvdbInfo.Season  = episode.SeasonNumber;
                    query.TvdbInfo.Episode = episode.EpisodeNumber;
                }
            }

            return(pageableRequests);
        }
Exemple #16
0
        public void SetUp()
        {
            Subject.Settings = new NewznabSettings()
            {
                Url             = "http://127.0.0.1:1234/",
                Categories      = new [] { 1, 2 },
                AnimeCategories = new [] { 3, 4 },
                ApiKey          = "abcd",
            };

            _animeSearchCriteria = new AnimeEpisodeSearchCriteria()
            {
                SceneTitles = new List <String>()
                {
                    "Monkey+Island"
                },
                AbsoluteEpisodeNumber = 100
            };
        }
Exemple #17
0
        public IList <IEnumerable <IndexerRequest> > GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var requests = new List <IEnumerable <IndexerRequest> >();

            var queryBase = new TorrentQuery();

            if (TryAddSearchParameters(queryBase, searchCriteria))
            {
                foreach (var episode in searchCriteria.Episodes)
                {
                    var query = queryBase.Clone();

                    query.TvdbInfo.Season  = episode.SeasonNumber;
                    query.TvdbInfo.Episode = episode.EpisodeNumber;
                }
            }

            return(requests);
        }
        public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequest = new List <IEnumerable <IndexerRequest> >();

            var parameters = new BroadcastheNetTorrentQuery();

            if (AddSeriesSearchParameters(parameters, searchCriteria))
            {
                foreach (var episode in searchCriteria.Episodes)
                {
                    parameters = parameters.Clone();

                    parameters.Category = "Episode";
                    parameters.Name     = String.Format("S{0:00}E{1:00}", episode.SeasonNumber, episode.EpisodeNumber);

                    pageableRequest.AddIfNotNull(GetPagedRequests(MaxPages, parameters));
                }
            }

            return(pageableRequest);
        }
Exemple #19
0
        public void SetUp()
        {
            UseRealHttp();

            _singleSearchCriteria = new SingleEpisodeSearchCriteria()
            {
                SceneTitles = new List <string> {
                    "Person of Interest"
                },
                SeasonNumber  = 1,
                EpisodeNumber = 1
            };

            _animeSearchCriteria = new AnimeEpisodeSearchCriteria()
            {
                SceneTitles = new List <string> {
                    "Steins;Gate"
                },
                AbsoluteEpisodeNumber = 1
            };
        }
        public void SetUp()
        {
            Subject.Settings = new NewznabSettings()
            {
                BaseUrl         = "http://127.0.0.1:1234/",
                Categories      = new [] { 1, 2 },
                AnimeCategories = new [] { 3, 4 },
                ApiKey          = "abcd",
            };

            _singleEpisodeSearchCriteria = new SingleEpisodeSearchCriteria
            {
                Series = new Tv.Series {
                    TvRageId = 10, TvdbId = 20, TvMazeId = 30, ImdbId = "t40"
                },
                SceneTitles = new List <string> {
                    "Monkey Island"
                },
                SeasonNumber  = 1,
                EpisodeNumber = 2
            };

            _animeSearchCriteria = new AnimeEpisodeSearchCriteria()
            {
                SceneTitles = new List <string>()
                {
                    "Monkey+Island"
                },
                AbsoluteEpisodeNumber = 100,
                SeasonNumber          = 5,
                EpisodeNumber         = 4
            };

            _capabilities = new NewznabCapabilities();

            Mocker.GetMock <INewznabCapabilitiesProvider>()
            .Setup(v => v.GetCapabilities(It.IsAny <NewznabSettings>()))
            .Returns(_capabilities);
        }
        public void SetUp()
        {
            Subject.Settings = new TorznabSettings()
            {
                Url                = "http://127.0.0.1:1234/",
                Categories         = new [] { 1, 2 },
                AnimeCategories    = new [] { 3, 4 },
                ApiKey             = "abcd",
                EnableRageIDLookup = true
            };

            _singleEpisodeSearchCriteria = new SingleEpisodeSearchCriteria
            {
                Series = new Tv.Series {
                    TvRageId = 10
                },
                SceneTitles = new List <string> {
                    "Monkey Island"
                },
                SeasonNumber  = 1,
                EpisodeNumber = 2
            };

            _animeSearchCriteria = new AnimeEpisodeSearchCriteria()
            {
                SceneTitles = new List <String>()
                {
                    "Monkey+Island"
                },
                AbsoluteEpisodeNumber = 100
            };

            _capabilities = new TorznabCapabilities();

            Mocker.GetMock <ITorznabCapabilitiesProvider>()
            .Setup(v => v.GetCapabilities(It.IsAny <TorznabSettings>()))
            .Returns(_capabilities);
        }
        public IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new IndexerPageableRequestChain();

            // FileList has absolute releases in E01 format but also release sin S01E01 format, likely by imdb numbering but we only have tvdb numbering... so we try those as fallback to abs.
            AddImdbRequests(pageableRequests, searchCriteria, "search-torrents", Settings.AnimeCategories, $"&season=0&episode={searchCriteria.AbsoluteEpisodeNumber}");
            pageableRequests.AddTier();
            foreach (var eps in searchCriteria.Episodes)
            {
                AddImdbRequests(pageableRequests, searchCriteria, "search-torrents", Settings.AnimeCategories, $"&season={eps.SeasonNumber}&episode={eps.EpisodeNumber}");
            }

            pageableRequests.AddTier();

            AddNameRequests(pageableRequests, searchCriteria, "search-torrents", Settings.AnimeCategories, $"&season=0&episode={searchCriteria.AbsoluteEpisodeNumber}");
            pageableRequests.AddTier();
            foreach (var eps in searchCriteria.Episodes)
            {
                AddNameRequests(pageableRequests, searchCriteria, "search-torrents", Settings.AnimeCategories, $"&season={eps.SeasonNumber}&episode={eps.EpisodeNumber}");
            }

            return(pageableRequests);
        }
Exemple #23
0
        public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
        {
            var pageableRequests = new List <IEnumerable <IndexerRequest> >();

            foreach (var queryTitle in searchCriteria.QueryTitles)
            {
                var searchTitle = PrepareQuery(queryTitle);

                pageableRequests.AddIfNotNull(GetPagedRequests(MaxPages,
                                                               String.Format("&term={0}+{1:0}",
                                                                             searchTitle,
                                                                             searchCriteria.AbsoluteEpisodeNumber)));

                if (searchCriteria.AbsoluteEpisodeNumber < 10)
                {
                    pageableRequests.AddIfNotNull(GetPagedRequests(MaxPages,
                                                                   String.Format("&term={0}+{1:00}",
                                                                                 searchTitle,
                                                                                 searchCriteria.AbsoluteEpisodeNumber)));
                }
            }

            return(pageableRequests);
        }
 public IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
 {
     throw new NotImplementedException();
 }
Exemple #25
0
        public IList <ReleaseInfo> Fetch(IIndexer indexer, AnimeEpisodeSearchCriteria searchCriteria)
        {
            var searchUrls = indexer.GetAnimeEpisodeSearchUrls(searchCriteria.SceneTitles, searchCriteria.Series.TvRageId, searchCriteria.AbsoluteEpisodeNumber).ToList();

            return(Fetch(indexer, searchUrls, searchCriteria));
        }
Exemple #26
0
 public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
 {
     return(new IndexerPageableRequestChain());
 }
Exemple #27
0
 public abstract IList <ReleaseInfo> Fetch(AnimeEpisodeSearchCriteria searchCriteria);
Exemple #28
0
 public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
 {
     return(new List <IEnumerable <IndexerRequest> >());
 }