public void Setup() { _series = Builder <Series> .CreateNew() .With(s => s.Title = "30 Rock") .With(s => s.CleanTitle = "rock") .Build(); _episodes = Builder <Episode> .CreateListOfSize(1) .All() .With(e => e.AirDate = DateTime.Today.ToString(Episode.AIR_DATE_FORMAT)) .Build() .ToList(); _parsedEpisodeInfo = new ParsedEpisodeInfo { SeriesTitle = _series.Title, SeriesTitleInfo = new SeriesTitleInfo(), SeasonNumber = 1, EpisodeNumbers = new[] { 1 } }; _singleEpisodeSearchCriteria = new SingleEpisodeSearchCriteria { Series = _series, EpisodeNumber = _episodes.First().EpisodeNumber, SeasonNumber = _episodes.First().SeasonNumber, Episodes = _episodes }; Mocker.GetMock <ISceneMappingService>() .Setup(v => v.GetTvdbSeasonNumber(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>())) .Returns <string, string, int>((s, r, i) => i); }
public void Setup() { _series = Builder <Series> .CreateNew() .With(s => s.Title = "30 Stone") .With(s => s.CleanTitle = "stone") .Build(); _episodes = Builder <Episode> .CreateListOfSize(1) .All() .With(e => e.AirDate = DateTime.Today.ToString(Episode.AIR_DATE_FORMAT)) .Build() .ToList(); _parsedEpisodeInfo = new ParsedEpisodeInfo { SeriesTitle = _series.Title, SeasonNumber = 1, EpisodeNumbers = new[] { 1 }, AbsoluteEpisodeNumbers = new int[0] }; _singleEpisodeSearchCriteria = new SingleEpisodeSearchCriteria { Series = _series, EpisodeNumber = _episodes.First().EpisodeNumber, SeasonNumber = _episodes.First().SeasonNumber, Episodes = _episodes }; Mocker.GetMock <ISeriesService>() .Setup(s => s.FindByTitle(It.IsAny <string>())) .Returns(_series); }
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchID) || searchCriteria.SearchMode == SearchMode.Default) { AddTvIdPageableRequests(pageableRequests, Settings.Categories, searchCriteria, string.Format("&season={0}&ep={1}", searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber)); } if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchTitle)) { AddTitlePageableRequests(pageableRequests, Settings.Categories, searchCriteria, string.Format("&season={0}&ep={1}", searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber)); } pageableRequests.AddTier(); if (searchCriteria.SearchMode == SearchMode.Default) { AddTitlePageableRequests(pageableRequests, Settings.Categories, searchCriteria, string.Format("&season={0}&ep={1}", searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber)); } return(pageableRequests); }
private Decision IsSatisfiedBy(RemoteEpisode remoteEpisode, SingleEpisodeSearchCriteria singleEpisodeSpec) { var seasonNumber = _sceneMappingService.GetTvdbSeasonNumber(remoteEpisode.ParsedEpisodeInfo.SeriesTitle, remoteEpisode.ParsedEpisodeInfo.ReleaseTitle, remoteEpisode.ParsedEpisodeInfo.SeasonNumber); if (singleEpisodeSpec.SeasonNumber != seasonNumber) { _logger.Debug("Season number does not match searched season number, skipping."); return(Decision.Reject("Wrong season")); } if (!remoteEpisode.ParsedEpisodeInfo.EpisodeNumbers.Any()) { _logger.Debug("Full season result during single episode search, skipping."); return(Decision.Reject("Full season pack")); } if (!remoteEpisode.ParsedEpisodeInfo.EpisodeNumbers.Contains(singleEpisodeSpec.EpisodeNumber)) { _logger.Debug("Episode number does not match searched episode number, skipping."); return(Decision.Reject("Wrong episode")); } return(Decision.Accept()); }
public void Setup() { _series = Builder <Series> .CreateNew() .With(s => s.Title = "30 Rock") .With(s => s.CleanTitle = "rock") .Build(); _episodes = Builder <Episode> .CreateListOfSize(1) .All() .With(e => e.AirDate = DateTime.Today.ToString(Episode.AIR_DATE_FORMAT)) .Build() .ToList(); _parsedEpisodeInfo = new ParsedEpisodeInfo { SeriesTitle = _series.Title, SeriesTitleInfo = new SeriesTitleInfo(), SeasonNumber = 1, EpisodeNumbers = new[] { 1 } }; _singleEpisodeSearchCriteria = new SingleEpisodeSearchCriteria { Series = _series, EpisodeNumber = _episodes.First().EpisodeNumber, SeasonNumber = _episodes.First().SeasonNumber, Episodes = _episodes }; }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SingleEpisodeSearchCriteria 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}&ep={2}", searchCriteria.Series.TvRageId, searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber))); } else { foreach (var queryTitle in searchCriteria.QueryTitles) { pageableRequests.AddIfNotNull(GetPagedRequests(MaxPages, Settings.Categories, "tvsearch", String.Format("&q={0}&season={1}&ep={2}", NewsnabifyTitle(queryTitle), searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber))); } } return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria 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 virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetPagedRequests("search", searchCriteria.Series.TvdbId, "S{0:00}E{1:00}", searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber)); return(pageableRequests); }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria) { var pageableRequests = new List <IEnumerable <IndexerRequest> >(); pageableRequests.AddIfNotNull(GetPagedRequests("search", searchCriteria.Series.TvdbId, "S{0:00}E{1:00}", searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber)); return(pageableRequests); }
public override IList <ReleaseInfo> Fetch(SingleEpisodeSearchCriteria searchCriteria) { if (!SupportsSearch) { return(new List <ReleaseInfo>()); } return(FetchReleases(g => g.GetSearchRequests(searchCriteria))); }
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); AddTvIdPageableRequests(pageableRequests, MaxPages, Settings.Categories, searchCriteria, string.Format("&season={0}&ep={1}", searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber)); return(pageableRequests); }
public IList <ReleaseInfo> Fetch(IIndexer indexer, SingleEpisodeSearchCriteria searchCriteria) { _logger.Debug("Searching for {0}", searchCriteria); var searchUrls = indexer.GetEpisodeSearchUrls(searchCriteria.QueryTitle, searchCriteria.Series.TvRageId, searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber); var result = Fetch(indexer, searchUrls); _logger.Info("Finished searching {0} for {1}. Found {2}", indexer, searchCriteria, result.Count); return(result); }
public override IList <ReleaseInfo> Fetch(SingleEpisodeSearchCriteria searchCriteria) { if (!SupportsSearch) { return(new List <ReleaseInfo>()); } var generator = GetRequestGenerator(); return(FetchReleases(generator.GetSearchRequests(searchCriteria))); }
public IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); AddImdbRequests(pageableRequests, searchCriteria, "search-torrents", Settings.Categories, $"&season={searchCriteria.SeasonNumber}&episode={searchCriteria.EpisodeNumber}"); pageableRequests.AddTier(); AddNameRequests(pageableRequests, searchCriteria, "search-torrents", Settings.Categories, $"&season={searchCriteria.SeasonNumber}&episode={searchCriteria.EpisodeNumber}"); return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetPagedRequests(MaxPages, series_id: searchCriteria.Series.TvdbId, episode: string.Format("S{0:00}E{1:00}", searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber))); pageableRequests.Add(GetPagedRequests(MaxPages, series_id: searchCriteria.Series.TvdbId, season: string.Format("Season {0:00}", searchCriteria.SeasonNumber))); return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); foreach (var queryTitle in searchCriteria.QueryTitles) { pageableRequests.Add(GetPagedRequests(string.Format("{0}+S{1:00}E{2:00}", queryTitle, searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber))); } return(pageableRequests); }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SingleEpisodeSearchCriteria 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}&episode={2}&mode=rss", queryTitle, searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber))); } return(pageableRequests); }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria) { var pageableRequests = new List <IEnumerable <IndexerRequest> >(); foreach (var queryTitle in searchCriteria.QueryTitles) { pageableRequests.AddIfNotNull(GetPagedRequests(String.Format("{0}+S{1:00}E{2:00}", queryTitle, searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber))); } return(pageableRequests); }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SingleEpisodeSearchCriteria 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{1:00}", searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber); pageableRequest.AddIfNotNull(GetPagedRequests(MaxPages, parameters)); } return(pageableRequest); }
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria 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), string.Format("episode:{0}", searchCriteria.EpisodeNumber))); pageableRequests.Add(GetPagedRequests(MaxPages, "usearch", PrepareQuery(queryTitle), string.Format("S{0:00}E{1:00}", searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber), "category:tv")); } return(pageableRequests); }
public virtual IList <IEnumerable <IndexerRequest> > GetSearchRequests(SingleEpisodeSearchCriteria 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), String.Format("episode:{0}", searchCriteria.EpisodeNumber))); pageableRequests.AddIfNotNull(GetPagedRequests(MaxPages, "usearch", PrepareQuery(queryTitle), String.Format("S{0:00}E{1:00}", searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber), "category:tv")); } return(pageableRequests); }
public IList <IEnumerable <IndexerRequest> > GetSearchRequests(SingleEpisodeSearchCriteria 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; requests.Add(GetRequest(query)); } } return(requests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria 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; pageableRequests.Add(GetRequest(query)); } } return(pageableRequests); }
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(SingleEpisodeSearchCriteria 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}&episode={searchCriteria.EpisodeNumber}"); } if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchTitle)) { AddNameRequests(pageableRequests, searchCriteria, "search-torrents", Settings.Categories, $"&season={searchCriteria.SeasonNumber}&episode={searchCriteria.EpisodeNumber}"); } pageableRequests.AddTier(); if (searchCriteria.SearchMode == SearchMode.Default) { AddNameRequests(pageableRequests, searchCriteria, "search-torrents", Settings.Categories, $"&season={searchCriteria.SeasonNumber}&episode={searchCriteria.EpisodeNumber}"); } return(pageableRequests); }
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria 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}&ep={1}", NewznabifySeasonNumber(searchCriteria.SeasonNumber), searchCriteria.EpisodeNumber)); } if (searchCriteria.SearchMode.HasFlag(SearchMode.SearchTitle)) { AddTitlePageableRequests(pageableRequests, Settings.Categories, searchCriteria, string.Format("&season={0}&ep={1}", NewznabifySeasonNumber(searchCriteria.SeasonNumber), searchCriteria.EpisodeNumber)); } pageableRequests.AddTier(); if (searchCriteria.SearchMode == SearchMode.Default) { AddTitlePageableRequests(pageableRequests, Settings.Categories, searchCriteria, string.Format("&season={0}&ep={1}", NewznabifySeasonNumber(searchCriteria.SeasonNumber), searchCriteria.EpisodeNumber)); } return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria 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}E{2:00}", queryTitle, searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber)); 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 IList <ReleaseInfo> Fetch(IIndexer indexer, SingleEpisodeSearchCriteria searchCriteria) { var searchUrls = indexer.GetEpisodeSearchUrls(searchCriteria.QueryTitles, searchCriteria.Series.TvRageId, searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber).ToList(); return(Fetch(indexer, searchUrls, searchCriteria)); }