Fixed: (Indexers) Don't fetch releases when using unsupported capabilities

pull/1817/head
Bogdan 10 months ago
parent 6f09b0f4f5
commit 5f643b2ced

@ -128,19 +128,12 @@ namespace NzbDrone.Core.IndexerSearch
private TSpec Get<TSpec>(NewznabRequest query, List<int> indexerIds, bool interactiveSearch)
where TSpec : SearchCriteriaBase, new()
{
var spec = new TSpec()
var spec = new TSpec
{
InteractiveSearch = interactiveSearch
};
if (query.cat != null)
{
spec.Categories = query.cat.Split(',').Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => int.Parse(s)).ToArray();
}
else
{
spec.Categories = Array.Empty<int>();
}
spec.Categories = query.cat != null ? query.cat.Split(',').Where(s => !string.IsNullOrWhiteSpace(s)).Select(int.Parse).ToArray() : Array.Empty<int>();
spec.SearchTerm = query.q?.Trim();
spec.SearchType = query.t;

@ -66,6 +66,20 @@ namespace NzbDrone.Core.Indexers
return Task.FromResult(new IndexerPageableQueryResult());
}
var caps = GetCapabilities();
if ((searchCriteria.ImdbId.IsNotNullOrWhiteSpace() && !caps.MovieSearchImdbAvailable) ||
(searchCriteria.TmdbId.HasValue && !caps.MovieSearchTmdbAvailable) ||
(searchCriteria.TraktId.HasValue && !caps.MovieSearchTraktAvailable) ||
(searchCriteria.DoubanId.HasValue && !caps.MovieSearchDoubanAvailable) ||
(searchCriteria.Genre.IsNotNullOrWhiteSpace() && !caps.MovieSearchGenreAvailable) ||
(searchCriteria.Year.HasValue && !caps.MovieSearchYearAvailable))
{
_logger.Debug("Movie search skipped due to unsupported capabilities used: {0}", Definition.Name);
return Task.FromResult(new IndexerPageableQueryResult());
}
return FetchReleases(g => SetCookieFunctions(g).GetSearchRequests(searchCriteria), searchCriteria);
}
@ -81,6 +95,20 @@ namespace NzbDrone.Core.Indexers
return Task.FromResult(new IndexerPageableQueryResult());
}
var caps = GetCapabilities();
if ((searchCriteria.Album.IsNotNullOrWhiteSpace() && !caps.MusicSearchAlbumAvailable) ||
(searchCriteria.Artist.IsNotNullOrWhiteSpace() && !caps.MusicSearchArtistAvailable) ||
(searchCriteria.Label.IsNotNullOrWhiteSpace() && !caps.MusicSearchLabelAvailable) ||
(searchCriteria.Track.IsNotNullOrWhiteSpace() && !caps.MusicSearchTrackAvailable) ||
(searchCriteria.Genre.IsNotNullOrWhiteSpace() && !caps.MusicSearchGenreAvailable) ||
(searchCriteria.Year.HasValue && !caps.MusicSearchYearAvailable))
{
_logger.Debug("Music search skipped due to unsupported capabilities used: {0}", Definition.Name);
return Task.FromResult(new IndexerPageableQueryResult());
}
return FetchReleases(g => SetCookieFunctions(g).GetSearchRequests(searchCriteria), searchCriteria);
}
@ -96,6 +124,23 @@ namespace NzbDrone.Core.Indexers
return Task.FromResult(new IndexerPageableQueryResult());
}
var caps = GetCapabilities();
if ((searchCriteria.ImdbId.IsNotNullOrWhiteSpace() && !caps.TvSearchImdbAvailable) ||
(searchCriteria.TvdbId.HasValue && !caps.TvSearchTvdbAvailable) ||
(searchCriteria.RId.HasValue && !caps.TvSearchTvRageAvailable) ||
(searchCriteria.TvMazeId.HasValue && !caps.TvSearchTvMazeAvailable) ||
(searchCriteria.TraktId.HasValue && !caps.TvSearchTraktAvailable) ||
(searchCriteria.TmdbId.HasValue && !caps.TvSearchTmdbAvailable) ||
(searchCriteria.DoubanId.HasValue && !caps.TvSearchDoubanAvailable) ||
(searchCriteria.Genre.IsNotNullOrWhiteSpace() && !caps.TvSearchGenreAvailable) ||
(searchCriteria.Year.HasValue && !caps.TvSearchYearAvailable))
{
_logger.Debug("TV search skipped due to unsupported capabilities used: {0}", Definition.Name);
return Task.FromResult(new IndexerPageableQueryResult());
}
return FetchReleases(g => SetCookieFunctions(g).GetSearchRequests(searchCriteria), searchCriteria);
}
@ -111,6 +156,19 @@ namespace NzbDrone.Core.Indexers
return Task.FromResult(new IndexerPageableQueryResult());
}
var caps = GetCapabilities();
if ((searchCriteria.Title.IsNotNullOrWhiteSpace() && !caps.BookSearchTitleAvailable) ||
(searchCriteria.Author.IsNotNullOrWhiteSpace() && !caps.BookSearchAuthorAvailable) ||
(searchCriteria.Publisher.IsNotNullOrWhiteSpace() && !caps.BookSearchPublisherAvailable) ||
(searchCriteria.Genre.IsNotNullOrWhiteSpace() && !caps.BookSearchGenreAvailable) ||
(searchCriteria.Year.HasValue && !caps.BookSearchYearAvailable))
{
_logger.Debug("Book search skipped due to unsupported capabilities used: {0}", Definition.Name);
return Task.FromResult(new IndexerPageableQueryResult());
}
return FetchReleases(g => SetCookieFunctions(g).GetSearchRequests(searchCriteria), searchCriteria);
}

@ -89,9 +89,9 @@ namespace NzbDrone.Core.Indexers
public bool MovieSearchImdbAvailable => MovieSearchParams.Contains(MovieSearchParam.ImdbId);
public bool MovieSearchTmdbAvailable => MovieSearchParams.Contains(MovieSearchParam.TmdbId);
public bool MovieSearchTraktAvailable => MovieSearchParams.Contains(MovieSearchParam.TraktId);
public bool MovieSearchDoubanAvailable => MovieSearchParams.Contains(MovieSearchParam.DoubanId);
public bool MovieSearchGenreAvailable => MovieSearchParams.Contains(MovieSearchParam.Genre);
public bool MovieSearchYearAvailable => MovieSearchParams.Contains(MovieSearchParam.Year);
public bool MovieSearchDoubanAvailable => MovieSearchParams.Contains(MovieSearchParam.DoubanId);
public List<MusicSearchParam> MusicSearchParams;
public bool MusicSearchAvailable => MusicSearchParams.Count > 0;
@ -99,16 +99,16 @@ namespace NzbDrone.Core.Indexers
public bool MusicSearchArtistAvailable => MusicSearchParams.Contains(MusicSearchParam.Artist);
public bool MusicSearchLabelAvailable => MusicSearchParams.Contains(MusicSearchParam.Label);
public bool MusicSearchTrackAvailable => MusicSearchParams.Contains(MusicSearchParam.Track);
public bool MusicSearchYearAvailable => MusicSearchParams.Contains(MusicSearchParam.Year);
public bool MusicSearchGenreAvailable => MusicSearchParams.Contains(MusicSearchParam.Genre);
public bool MusicSearchYearAvailable => MusicSearchParams.Contains(MusicSearchParam.Year);
public List<BookSearchParam> BookSearchParams;
public bool BookSearchAvailable => BookSearchParams.Count > 0;
public bool BookSearchTitleAvailable => BookSearchParams.Contains(BookSearchParam.Title);
public bool BookSearchAuthorAvailable => BookSearchParams.Contains(BookSearchParam.Author);
public bool BookSearchPublisherAvailable => BookSearchParams.Contains(BookSearchParam.Publisher);
public bool BookSearchYearAvailable => BookSearchParams.Contains(BookSearchParam.Year);
public bool BookSearchGenreAvailable => BookSearchParams.Contains(BookSearchParam.Genre);
public bool BookSearchYearAvailable => BookSearchParams.Contains(BookSearchParam.Year);
public readonly IndexerCapabilitiesCategories Categories;
public List<IndexerFlag> Flags;

Loading…
Cancel
Save