public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { if (!SupportsTvdbSearch && !SupportsTvSearch && !SupportsTvTitleSearch) { _logger.Debug("Indexer capabilities lacking season & ep query parameters, no Standard series search possible."); } var pageableRequests = new IndexerPageableRequestChain(); if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchID) || searchCriteria.SearchMode == SearchMode.Default) { AddTvIdPageableRequests(pageableRequests, Settings.Categories, searchCriteria, string.Format("&season={0}", NewznabifySeasonNumber(searchCriteria.SeasonNumber))); } if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchTitle)) { AddTitlePageableRequests(pageableRequests, Settings.Categories, searchCriteria, string.Format("&season={0}", NewznabifySeasonNumber(searchCriteria.SeasonNumber))); } pageableRequests.AddTier(); if (searchCriteria.SearchMode == SearchMode.Default) { AddTitlePageableRequests(pageableRequests, Settings.Categories, searchCriteria, string.Format("&season={0}", NewznabifySeasonNumber(searchCriteria.SeasonNumber))); } return(pageableRequests); }
private IList <ReleaseInfo> Fetch(IIndexer indexer, SeasonSearchCriteria searchCriteria, int offset) { var searchUrls = indexer.GetSeasonSearchUrls(searchCriteria.QueryTitles, searchCriteria.Series.TvRageId, searchCriteria.SeasonNumber, offset).ToList(); if (searchUrls.Any()) { _logger.Debug("Searching for {0} offset: {1}", searchCriteria, offset); var result = Fetch(indexer, searchUrls); _logger.Info("{0} offset {1}. Found {2}", indexer, offset, result.Count); if (indexer.SupportsPaging && result.Count >= indexer.SupportedPageSize && offset < 900) { result.AddRange(Fetch(indexer, searchCriteria, offset + indexer.SupportedPageSize)); } //Only log finish for the first call to this recursive method if (offset == 0) { _logger.Info("Finished searching {0} for {1}. Found {2}", indexer, searchCriteria, result.Count); } return(result); } return(new List <ReleaseInfo>()); }
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); var parameters = new BroadcastheNetTorrentQuery(); if (AddSeriesSearchParameters(parameters, searchCriteria)) { foreach (var seasonNumber in searchCriteria.Episodes.Select(v => v.SeasonNumber).Distinct()) { parameters.Category = "Season"; parameters.Name = string.Format("Season {0}", seasonNumber); pageableRequests.Add(GetPagedRequests(MaxPages, parameters)); parameters = parameters.Clone(); parameters.Category = "Episode"; parameters.Name = string.Format("S{0:00}E%", seasonNumber); pageableRequests.Add(GetPagedRequests(MaxPages, parameters)); } } return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchID) || searchCriteria.SearchMode == SearchMode.Default) { AddTvIdPageableRequests(pageableRequests, Settings.Categories, searchCriteria, string.Format("&season={0}", searchCriteria.SeasonNumber)); } if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchTitle)) { AddTitlePageableRequests(pageableRequests, Settings.Categories, searchCriteria, string.Format("&season={0}", searchCriteria.SeasonNumber)); } pageableRequests.AddTier(); if (searchCriteria.SearchMode == SearchMode.Default) { AddTitlePageableRequests(pageableRequests, Settings.Categories, searchCriteria, string.Format("&season={0}", searchCriteria.SeasonNumber)); } return(pageableRequests); }
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 }; }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new List <IEnumerable <IndexerRequest> >(); pageableRequests.AddIfNotNull(GetPagedRequests("search", searchCriteria.Series.TvdbId, "S{0:00}", searchCriteria.SeasonNumber)); return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetPagedRequests("search", searchCriteria.Series.TvdbId, "S{0:00}", searchCriteria.SeasonNumber)); return(pageableRequests); }
public override IList <ReleaseInfo> Fetch(SeasonSearchCriteria searchCriteria) { if (!SupportsSearch) { return(new List <ReleaseInfo>()); } return(FetchReleases(g => g.GetSearchRequests(searchCriteria))); }
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); AddTvIdPageableRequests(pageableRequests, MaxPages, Settings.Categories, searchCriteria, string.Format("&season={0}", searchCriteria.SeasonNumber)); return(pageableRequests); }
public IList <ReleaseInfo> Fetch(IIndexer indexer, SeasonSearchCriteria searchCriteria) { _logger.Debug("Searching for {0}", searchCriteria); var result = Fetch(indexer, searchCriteria, 0).DistinctBy(c => c.DownloadUrl).ToList(); _logger.Info("Finished searching {0} for {1}. Found {2}", indexer, searchCriteria, result.Count); return(result); }
public override IList <ReleaseInfo> Fetch(SeasonSearchCriteria searchCriteria) { if (!SupportsSearch) { return(new List <ReleaseInfo>()); } var generator = GetRequestGenerator(); return(FetchReleases(generator.GetSearchRequests(searchCriteria))); }
public IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); AddImdbRequests(pageableRequests, searchCriteria, "search-torrents", Settings.Categories, $"&season={searchCriteria.SeasonNumber}"); pageableRequests.AddTier(); AddNameRequests(pageableRequests, searchCriteria, "search-torrents", Settings.Categories, $"&season={searchCriteria.SeasonNumber}"); return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); if (Settings.AnimeStandardFormatSearch && searchCriteria.SeasonNumber > 0) { var searchTitles = searchCriteria.CleanSceneTitles.SelectMany(v => GetSeasonSearchStrings(v, searchCriteria.SeasonNumber)).ToList(); pageableRequests.Add(GetPagedRequests(string.Join("|", searchTitles))); } return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); foreach (var queryTitle in searchCriteria.QueryTitles) { pageableRequests.Add(GetPagedRequests(string.Format("{0}+S{1:00}", queryTitle, searchCriteria.SeasonNumber))); } return(pageableRequests); }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new List <IEnumerable <IndexerRequest> >(); foreach (var queryTitle in searchCriteria.QueryTitles) { pageableRequests.AddIfNotNull(GetPagedRequests(String.Format("{0}+S{1:00}", queryTitle, searchCriteria.SeasonNumber))); } return(pageableRequests); }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new List <IEnumerable <IndexerRequest> >(); foreach (var queryTitle in searchCriteria.QueryTitles) { pageableRequests.AddIfNotNull(GetPagedRequests(String.Format("/search/index.php?show_name={0}&season={1}&mode=rss", queryTitle, searchCriteria.SeasonNumber))); } return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetPagedRequests(MaxPages, series_id: searchCriteria.Series.TvdbId, season: string.Format("Season {0:00}", searchCriteria.SeasonNumber))); pageableRequests.AddTier(); // TODO: Search for all episodes?!? return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); if (Settings.AnimeStandardFormatSearch && searchCriteria.SeasonNumber > 0) { foreach (var queryTitle in searchCriteria.SceneTitles) { var searchTitle = PrepareQuery(queryTitle); pageableRequests.Add(GetPagedRequests(MaxPages, $"{searchTitle}+s{searchCriteria.SeasonNumber:00}")); } } return(pageableRequests); }
private IList <ReleaseInfo> Fetch(IIndexer indexer, SeasonSearchCriteria searchCriteria, int offset) { _logger.Debug("Searching for {0} offset: {1}", searchCriteria, offset); var searchUrls = indexer.GetSeasonSearchUrls(searchCriteria.QueryTitle, searchCriteria.Series.TvRageId, searchCriteria.SeasonNumber, offset); var result = Fetch(indexer, searchUrls); _logger.Info("{0} offset {1}. Found {2}", indexer.Name, searchCriteria, result.Count); if (result.Count > 90) { result.AddRange(Fetch(indexer, searchCriteria, offset + 90)); } return(result); }
public void should_only_include_reports_for_requested_episodes() { var series = Builder <Series> .CreateNew().Build(); var episodes = Builder <Episode> .CreateListOfSize(2) .All() .With(v => v.SeriesId, series.Id) .With(v => v.Series, series) .With(v => v.SeasonNumber, 1) .With(v => v.SceneSeasonNumber, 2) .BuildList(); var criteria = new SeasonSearchCriteria { Episodes = episodes.Take(1).ToList(), SeasonNumber = 1 }; var reports = episodes.Select(v => new ReleaseInfo() { Title = string.Format("{0}.S{1:00}E{2:00}.720p.WEB-DL-DRONE", series.Title, v.SceneSeasonNumber, v.SceneEpisodeNumber) }).ToList(); Mocker.GetMock <IParsingService>() .Setup(v => v.Map(It.IsAny <ParsedEpisodeInfo>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <SearchCriteriaBase>())) .Returns <ParsedEpisodeInfo, int, int, SearchCriteriaBase>((p, tvdbid, tvrageid, c) => new RemoteEpisode { DownloadAllowed = true, ParsedEpisodeInfo = p, Series = series, Episodes = episodes.Where(v => v.SceneEpisodeNumber == p.EpisodeNumbers.First()).ToList() }); Mocker.SetConstant <IEnumerable <IDecisionEngineSpecification> >(new List <IDecisionEngineSpecification> { Mocker.Resolve <NzbDrone.Core.DecisionEngine.Specifications.Search.EpisodeRequestedSpecification>() }); var decisions = Subject.GetSearchDecision(reports, criteria); var approvedDecisions = decisions.Where(v => v.Approved).ToList(); approvedDecisions.Count.Should().Be(1); }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new List <IEnumerable <IndexerRequest> >(); foreach (var queryTitle in searchCriteria.QueryTitles) { pageableRequests.AddIfNotNull(GetPagedRequests(MaxPages, "usearch", PrepareQuery(queryTitle), "category:tv", String.Format("season:{0}", searchCriteria.SeasonNumber))); pageableRequests.AddIfNotNull(GetPagedRequests(MaxPages, "usearch", PrepareQuery(queryTitle), "category:tv", String.Format("S{0:00}", searchCriteria.SeasonNumber))); } return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); foreach (var queryTitle in searchCriteria.QueryTitles) { pageableRequests.Add(GetPagedRequests(MaxPages, "usearch", PrepareQuery(queryTitle), "category:tv", string.Format("season:{0}", searchCriteria.SeasonNumber))); pageableRequests.Add(GetPagedRequests(MaxPages, "usearch", PrepareQuery(queryTitle), "category:tv", string.Format("S{0:00}", searchCriteria.SeasonNumber))); } return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); var queryBase = new TorrentQuery(); if (TryAddSearchParameters(queryBase, searchCriteria)) { foreach (var seasonNumber in searchCriteria.Episodes.Select(e => e.SeasonNumber).Distinct()) { var query = queryBase.Clone(); query.TvdbInfo.Season = seasonNumber; pageableRequests.Add(GetRequest(query)); } } return(pageableRequests); }
public IList <IEnumerable <IndexerRequest> > GetSearchRequests(SeasonSearchCriteria searchCriteria) { var requests = new List <IEnumerable <IndexerRequest> >(); var queryBase = new TorrentQuery(); if (TryAddSearchParameters(queryBase, searchCriteria)) { foreach (var seasonNumber in searchCriteria.Episodes.Select(e => e.SeasonNumber).Distinct()) { var query = queryBase.Clone(); query.TvdbInfo.Season = seasonNumber; requests.Add(GetRequest(query)); } } return(requests); }
public IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); foreach (var queryTitle in searchCriteria.QueryTitles) { var indexerRequests = new List <IndexerRequest>(); var url = string.Format(BaseSearchUrl, string.Format("{0}+S{1:00}", queryTitle, searchCriteria.SeasonNumber)); var requestBuilder = new HttpRequestBuilder(true, url, 443) { NetworkCredential = new NetworkCredential(Settings.Username, Settings.Password) }; var httpRequest = requestBuilder.Build(); indexerRequests.Add(new IndexerRequest(httpRequest)); pageableRequests.AddTier(indexerRequests); } return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchID) || searchCriteria.SearchMode == SearchMode.Default) { AddImdbRequests(pageableRequests, searchCriteria, "search-torrents", Settings.Categories, $"&season={searchCriteria.SeasonNumber}"); } if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchTitle)) { AddNameRequests(pageableRequests, searchCriteria, "search-torrents", Settings.Categories, $"&season={searchCriteria.SeasonNumber}"); } pageableRequests.AddTier(); if (searchCriteria.SearchMode == SearchMode.Default) { AddNameRequests(pageableRequests, searchCriteria, "search-torrents", Settings.Categories, $"&season={searchCriteria.SeasonNumber}"); } return(pageableRequests); }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequest = new List <IEnumerable <IndexerRequest> >(); var parameters = new BroadcastheNetTorrentQuery(); if (AddSeriesSearchParameters(parameters, searchCriteria)) { parameters.Category = "Episode"; parameters.Name = String.Format("S{0:00}E%", searchCriteria.SeasonNumber); pageableRequest.AddIfNotNull(GetPagedRequests(MaxPages, parameters)); parameters = parameters.Clone(); parameters.Category = "Season"; parameters.Name = String.Format("Season {0}", searchCriteria.SeasonNumber); pageableRequest.AddIfNotNull(GetPagedRequests(MaxPages, parameters)); } return(pageableRequest); }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SeasonSearchCriteria searchCriteria) { var pageableRequests = new List <IEnumerable <IndexerRequest> >(); if (searchCriteria.Series.TvRageId > 0) { pageableRequests.AddIfNotNull(GetPagedRequests(MaxPages, Settings.Categories, "tvsearch", String.Format("&rid={0}&season={1}", searchCriteria.Series.TvRageId, searchCriteria.SeasonNumber))); } else { foreach (var queryTitle in searchCriteria.QueryTitles) { pageableRequests.AddIfNotNull(GetPagedRequests(MaxPages, Settings.Categories, "tvsearch", String.Format("&q={0}&season={1}", NewsnabifyTitle(queryTitle), searchCriteria.SeasonNumber))); } } return(pageableRequests); }
public IList <ReleaseInfo> Fetch(IIndexer indexer, SeasonSearchCriteria searchCriteria) { return(Fetch(indexer, searchCriteria, 0).DistinctBy(c => c.DownloadUrl).ToList()); }
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria) { return(new IndexerPageableRequestChain()); }