public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); var query = new TorrentQuery(); var tvdbId = searchCriteria.TvdbId.GetValueOrDefault(0); var imdbId = ParseUtil.GetImdbID(searchCriteria.ImdbId).GetValueOrDefault(0); if (searchCriteria.Categories?.Length > 0) { query.Category = Capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories).Select(int.Parse).ToArray(); } if (tvdbId == 0 && imdbId == 0 && searchCriteria.SearchTerm.IsNotNullOrWhiteSpace()) { query.Search = searchCriteria.SanitizedTvSearchString; } if (tvdbId != 0) { query.TvdbInfo = query.TvdbInfo ?? new TvdbInfo(); query.TvdbInfo.Id = tvdbId; query.TvdbInfo.Season = searchCriteria.Season; query.TvdbInfo.Episode = searchCriteria.Episode; } if (imdbId != 0) { query.ImdbInfo = query.ImdbInfo ?? new ImdbInfo(); query.ImdbInfo.Id = imdbId; } pageableRequests.Add(GetRequest(query)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var capabilities = _capabilitiesProvider.GetCapabilities(Settings, Definition); var pageableRequests = new IndexerPageableRequestChain(); var parameters = new NameValueCollection(); if (searchCriteria.TvdbId.HasValue && capabilities.TvSearchTvdbAvailable) { parameters.Add("tvdbid", searchCriteria.TvdbId.Value.ToString()); } if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace() && capabilities.TvSearchImdbAvailable) { parameters.Add("imdbid", searchCriteria.ImdbId); } if (searchCriteria.TvMazeId.HasValue && capabilities.TvSearchTvMazeAvailable) { parameters.Add("tvmazeid", searchCriteria.TvMazeId.ToString()); } if (searchCriteria.RId.HasValue && capabilities.TvSearchTvRageAvailable) { parameters.Add("rid", searchCriteria.RId.ToString()); } if (searchCriteria.Season.HasValue && capabilities.TvSearchSeasonAvailable) { parameters.Add("season", NewznabifySeasonNumber(searchCriteria.Season.Value)); } if (searchCriteria.Episode.IsNotNullOrWhiteSpace() && capabilities.TvSearchEpAvailable) { parameters.Add("ep", searchCriteria.Episode); } //Workaround issue with Sphinx search returning garbage results on some indexers. If we don't use id parameters, fallback to t=search if (parameters.Count == 0) { searchCriteria.SearchType = "search"; if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace() && capabilities.SearchAvailable) { parameters.Add("q", NewsnabifyTitle(searchCriteria.SearchTerm)); } } else { if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace() && capabilities.TvSearchAvailable) { parameters.Add("q", NewsnabifyTitle(searchCriteria.SearchTerm)); } } pageableRequests.Add(GetPagedRequests(searchCriteria, parameters)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SanitizedTvSearchString), searchCriteria)); return(pageableRequests); }
public void SetUp() { Subject.Settings = new NewznabSettings() { BaseUrl = "http://127.0.0.1:1234/", ApiKey = "abcd", }; _movieSearchCriteria = new MovieSearchCriteria { SearchTerm = "Star Wars", Categories = new int[] { 2000 } }; _tvSearchCriteria = new TvSearchCriteria { SearchTerm = "Star Wars", Categories = new int[] { 5000 }, Season = 0 }; _capabilities = new IndexerCapabilities(); Mocker.GetMock <INewznabCapabilitiesProvider>() .Setup(v => v.GetCapabilities(It.IsAny <NewznabSettings>(), It.IsAny <IndexerDefinition>())) .Returns(_capabilities); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SanitizedSearchTerm), searchCriteria.Categories, searchCriteria.FullImdbId)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SanitizedTvSearchString), searchCriteria.Categories, searchCriteria.FullImdbId, 0, searchCriteria.TvdbId.GetValueOrDefault(0))); return(pageableRequests); }
public override Task <IndexerPageableQueryResult> Fetch(TvSearchCriteria searchCriteria) { if (!SupportsSearch) { return(Task.FromResult(new IndexerPageableQueryResult())); } return(FetchReleases(g => SetCookieFunctions(g).GetSearchRequests(searchCriteria))); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(searchCriteria.RssSearch ? GetRssRequest() : GetSearchRequests(searchCriteria.SanitizedTvSearchString)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); var parameters = new BroadcastheNetTorrentQuery(); var searchString = searchCriteria.SearchTerm != null ? searchCriteria.SearchTerm : ""; var btnResults = searchCriteria.Limit.GetValueOrDefault(); if (btnResults == 0) { btnResults = (int)Capabilities.LimitsDefault; } var btnOffset = searchCriteria.Offset.GetValueOrDefault(); if (searchCriteria.TvdbId > 0) { parameters.Tvdb = string.Format("{0}", searchCriteria.TvdbId); } if (searchCriteria.RId > 0) { parameters.Tvrage = string.Format("{0}", searchCriteria.RId); } // If only the season/episode is searched for then change format to match expected format if (searchCriteria.Season > 0 && searchCriteria.Episode.IsNullOrWhiteSpace()) { // Season Only parameters.Name = string.Format("Season {0}%", searchCriteria.Season.Value); parameters.Category = "Season"; } else if (searchCriteria.Season > 0 && Regex.IsMatch(searchCriteria.EpisodeSearchString, "(\\d{4}\\.\\d{2}\\.\\d{2})")) { // Daily Episode parameters.Name = searchCriteria.EpisodeSearchString; parameters.Category = "Episode"; } else if (searchCriteria.Season > 0 && int.Parse(searchCriteria.Episode) > 0) { // Standard (S/E) Episode parameters.Name = string.Format("S{0:00}E{1:00}", searchCriteria.Season.Value, int.Parse(searchCriteria.Episode)); parameters.Category = "Episode"; } // Neither a season only search nor daily nor standard, fall back to query parameters.Search = searchString.Replace(" ", "%"); pageableRequests.Add(GetPagedRequests(parameters, btnResults, btnOffset)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace()) { pageableRequests.Add(GetRequest("search-torrents", searchCriteria.Categories, string.Format("&type=imdb&query={0}&season={1}&episode={2}", searchCriteria.FullImdbId, searchCriteria.Season, searchCriteria.Episode))); } else if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace()) { var titleYearSearchQuery = string.Format("{0}", searchCriteria.SanitizedSearchTerm); pageableRequests.Add(GetRequest("search-torrents", searchCriteria.Categories, string.Format("&type=name&query={0}&season={1}&episode={2}", titleYearSearchQuery.Trim(), searchCriteria.Season, searchCriteria.Episode))); } else { pageableRequests.Add(GetRequest("latest-torrents", searchCriteria.Categories, "")); } return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var parameters = GetBasicSearchParameters(searchCriteria.SanitizedTvSearchString, searchCriteria.Categories); if (searchCriteria.ImdbId != null) { if (ImdbInTags) { parameters += string.Format("&taglist={0}", searchCriteria.FullImdbId); } else { parameters += string.Format("&cataloguenumber={0}", searchCriteria.FullImdbId); } } var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetRequest(parameters)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var parameters = GetBasicSearchParameters(searchCriteria.SanitizedTvSearchString, searchCriteria.Categories); if (searchCriteria.ImdbId != null) { parameters.Add("imdb", searchCriteria.ImdbId); parameters.Add("imdbId", searchCriteria.ImdbId); } if (searchCriteria.TvdbId > 0) { parameters.Add("tvdb", searchCriteria.TvdbId.ToString()); parameters.Add("tvdbId", searchCriteria.TvdbId.ToString()); } var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetRequest(parameters)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { _logger.Trace("Getting TV search"); var pageableRequests = new IndexerPageableRequestChain(); var variables = GetQueryVariableDefaults(searchCriteria); variables[".Query.Series"] = null; variables[".Query.Ep"] = searchCriteria.Episode; variables[".Query.Season"] = searchCriteria.Season?.ToString() ?? null; variables[".Query.IMDBID"] = searchCriteria.FullImdbId; variables[".Query.IMDBIDShort"] = searchCriteria.ImdbId; variables[".Query.TVDBID"] = searchCriteria.TvdbId?.ToString() ?? null; variables[".Query.TVRageID"] = searchCriteria.RId?.ToString() ?? null; variables[".Query.TVMazeID"] = searchCriteria.TvMazeId?.ToString() ?? null; variables[".Query.TraktID"] = searchCriteria.TraktId?.ToString() ?? null; variables[".Query.Episode"] = searchCriteria.EpisodeSearchString; pageableRequests.Add(GetRequest(variables)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var parameters = GetBasicSearchParameters(searchCriteria.Categories); if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace()) { parameters.Add("imdb", searchCriteria.FullImdbId); parameters.Add("search", GetSearchTerm(searchCriteria.EpisodeSearchString).Trim()); } else if (searchCriteria.TvdbId.HasValue) { parameters.Add("tvdb", searchCriteria.TvdbId.Value.ToString()); parameters.Add("search", GetSearchTerm(searchCriteria.EpisodeSearchString).Trim()); } else { parameters.Add("search", GetSearchTerm(searchCriteria.SanitizedTvSearchString).Trim()); } var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetRequest(parameters)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { return(new IndexerPageableRequestChain()); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { return(GetSearchRequestsCommon(searchCriteria, string.Format("{0}", searchCriteria.SanitizedTvSearchString))); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { var request = GetRequest(searchCriteria.SanitizedTvSearchString, searchCriteria.Categories, searchCriteria.FullImdbId, tvdbId: searchCriteria.TvdbId); return(GetRequestChain(request, 2)); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) => GetRequestWithSearchType(searchCriteria, "anime");
public abstract Task<IndexerPageableQueryResult> Fetch(TvSearchCriteria searchCriteria);
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) { return(GetSearch(searchCriteria, searchCriteria.FullImdbId, searchCriteria.Season, searchCriteria.Episode)); }
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria) => PerformRequest(searchCriteria);