avistaz/privatehd: add support for searching by ImdbId/TmdbId/TvdbId (#14135)

This commit is contained in:
Bogdan
2023-03-07 03:48:56 +02:00
committed by GitHub
parent ec55d71c6c
commit 7a183ebb83
3 changed files with 30 additions and 11 deletions

View File

@@ -35,7 +35,9 @@ namespace Jackett.Common.Indexers.Abstract
private new ConfigurationDataAvistazTracker configData => (ConfigurationDataAvistazTracker)base.configData; private new ConfigurationDataAvistazTracker configData => (ConfigurationDataAvistazTracker)base.configData;
// hook to adjust the search term // hook to adjust the search term
protected virtual string GetSearchTerm(TorznabQuery query) => $"{query.SearchTerm} {query.GetEpisodeSearchString()}"; protected virtual string GetSearchTerm(TorznabQuery query) => $"{query.SearchTerm} {GetEpisodeSearchTerm(query)}".Trim();
protected virtual string GetEpisodeSearchTerm(TorznabQuery query) => query.GetEpisodeSearchString().Trim();
// hook to adjust the search category // hook to adjust the search category
protected virtual List<KeyValuePair<string, string>> GetSearchQueryParameters(TorznabQuery query) protected virtual List<KeyValuePair<string, string>> GetSearchQueryParameters(TorznabQuery query)
@@ -75,7 +77,20 @@ namespace Jackett.Common.Indexers.Abstract
// https://privatehd.to/api/v1/jackett/torrents?tmdb=1234 // https://privatehd.to/api/v1/jackett/torrents?tmdb=1234
// https://privatehd.to/api/v1/jackett/torrents?tvdb=3653 // https://privatehd.to/api/v1/jackett/torrents?tvdb=3653
if (query.IsImdbQuery) if (query.IsImdbQuery)
{
qc.Add("imdb", query.ImdbID); qc.Add("imdb", query.ImdbID);
qc.Add("search", GetEpisodeSearchTerm(query));
}
else if (query.IsTmdbQuery)
{
qc.Add("tmdb", query.TmdbID.ToString());
qc.Add("search", GetEpisodeSearchTerm(query));
}
else if (query.IsTvdbSearch)
{
qc.Add("tvdb", query.TvdbID.ToString());
qc.Add("search", GetEpisodeSearchTerm(query));
}
else else
qc.Add("search", GetSearchTerm(query).Trim()); qc.Add("search", GetSearchTerm(query).Trim());
@@ -176,6 +191,7 @@ namespace Jackett.Common.Indexers.Abstract
var qc = GetSearchQueryParameters(query); var qc = GetSearchQueryParameters(query);
var episodeSearchUrl = SearchUrl + "?" + qc.GetQueryString(); var episodeSearchUrl = SearchUrl + "?" + qc.GetQueryString();
var response = await RequestWithCookiesAndRetryAsync(episodeSearchUrl, headers: GetSearchHeaders()); var response = await RequestWithCookiesAndRetryAsync(episodeSearchUrl, headers: GetSearchHeaders());
if (response.Status == HttpStatusCode.Unauthorized || response.Status == HttpStatusCode.PreconditionFailed) if (response.Status == HttpStatusCode.Unauthorized || response.Status == HttpStatusCode.PreconditionFailed)
{ {

View File

@@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Jackett.Common.Extensions;
using Jackett.Common.Indexers.Abstract; using Jackett.Common.Indexers.Abstract;
using Jackett.Common.Models; using Jackett.Common.Models;
using Jackett.Common.Services.Interfaces; using Jackett.Common.Services.Interfaces;
@@ -23,13 +24,14 @@ namespace Jackett.Common.Indexers
LimitsMax = 50, LimitsMax = 50,
TvSearchParams = new List<TvSearchParam> TvSearchParams = new List<TvSearchParam>
{ {
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.ImdbId, TvSearchParam.Genre TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.ImdbId, TvSearchParam.TvdbId, TvSearchParam.Genre
}, },
MovieSearchParams = new List<MovieSearchParam> MovieSearchParams = new List<MovieSearchParam>
{ {
MovieSearchParam.Q, MovieSearchParam.ImdbId, MovieSearchParam.Genre MovieSearchParam.Q, MovieSearchParam.ImdbId, MovieSearchParam.TmdbId, MovieSearchParam.Genre
}, },
SupportsRawSearch = true SupportsRawSearch = true,
TvSearchImdbAvailable = true
}, },
configService: configService, configService: configService,
client: wc, client: wc,
@@ -50,9 +52,9 @@ namespace Jackett.Common.Indexers
} }
// Avistaz has episodes without season. eg Running Man E323 // Avistaz has episodes without season. eg Running Man E323
protected override string GetSearchTerm(TorznabQuery query) => protected override string GetEpisodeSearchTerm(TorznabQuery query) =>
!string.IsNullOrWhiteSpace(query.Episode) && query.Season == 0 ? query.Season == 0 && query.Episode.IsNotNullOrWhiteSpace()
$"{query.SearchTerm} E{query.Episode}" : ? $"E{query.Episode}"
$"{query.SearchTerm} {query.GetEpisodeSearchString()}"; : $"{query.GetEpisodeSearchString()}";
} }
} }

View File

@@ -23,12 +23,13 @@ namespace Jackett.Common.Indexers
LimitsMax = 50, LimitsMax = 50,
TvSearchParams = new List<TvSearchParam> TvSearchParams = new List<TvSearchParam>
{ {
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.ImdbId, TvSearchParam.Genre TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.ImdbId, TvSearchParam.TvdbId, TvSearchParam.Genre
}, },
MovieSearchParams = new List<MovieSearchParam> MovieSearchParams = new List<MovieSearchParam>
{ {
MovieSearchParam.Q, MovieSearchParam.ImdbId, MovieSearchParam.Genre MovieSearchParam.Q, MovieSearchParam.ImdbId, MovieSearchParam.TmdbId, MovieSearchParam.Genre
} },
TvSearchImdbAvailable = true
}, },
configService: configService, configService: configService,
client: wc, client: wc,