From e34e70040b2a3656a4186df2752f1a0a4fcabc32 Mon Sep 17 00:00:00 2001 From: ilike2burnthing <59480337+ilike2burnthing@users.noreply.github.com> Date: Thu, 21 Jul 2022 10:59:02 +0100 Subject: [PATCH] core: enable trakt and douban queries (#13387) related #13385 --- .../Indexers/CardigannIndexer.cs | 3 ++- .../Models/DTO/TorznabRequest.cs | 24 ++++++++++++------- .../Models/TorznabCapabilities.cs | 16 +++++++++++-- src/Jackett.Common/Models/TorznabQuery.cs | 8 +++++++ .../Common/Models/TorznabCapabilitiesTests.cs | 2 +- 5 files changed, 40 insertions(+), 13 deletions(-) diff --git a/src/Jackett.Common/Indexers/CardigannIndexer.cs b/src/Jackett.Common/Indexers/CardigannIndexer.cs index c1b44d6f6..ac17c1d6e 100644 --- a/src/Jackett.Common/Indexers/CardigannIndexer.cs +++ b/src/Jackett.Common/Indexers/CardigannIndexer.cs @@ -1301,7 +1301,8 @@ namespace Jackett.Common.Indexers variables[".Query.IMDBIDShort"] = query.ImdbIDShort; variables[".Query.TMDBID"] = query.TmdbID?.ToString() ?? null; variables[".Query.TVMazeID"] = null; - variables[".Query.TraktID"] = null; + variables[".Query.TraktID"] = query.TraktID?.ToString() ?? null; + variables[".Query.DoubanID"] = query.DoubanID?.ToString() ?? null; variables[".Query.Album"] = query.Album; variables[".Query.Artist"] = query.Artist; variables[".Query.Label"] = query.Label; diff --git a/src/Jackett.Common/Models/DTO/TorznabRequest.cs b/src/Jackett.Common/Models/DTO/TorznabRequest.cs index 18b2ad9e3..3817bd202 100644 --- a/src/Jackett.Common/Models/DTO/TorznabRequest.cs +++ b/src/Jackett.Common/Models/DTO/TorznabRequest.cs @@ -5,28 +5,30 @@ namespace Jackett.Common.Models.DTO { public class TorznabRequest { - public string t { get; set; } public string q { get; set; } - public string cat { get; set; } public string imdbid { get; set; } - public string tmdbid { get; set; } + public string ep { get; set; } + public string t { get; set; } public string extended { get; set; } public string limit { get; set; } public string offset { get; set; } + public string cache { get; set; } + public string cat { get; set; } + public string season { get; set; } public string rid { get; set; } public string tvdbid { get; set; } - public string season { get; set; } - public string ep { get; set; } + public string tmdbid { get; set; } + public string traktid { get; set; } + public string doubanid { get; set; } public string album { get; set; } public string artist { get; set; } public string label { get; set; } public string track { get; set; } public string year { get; set; } public string genre { get; set; } - public string author { get; set; } public string title { get; set; } + public string author { get; set; } public string configured { get; set; } - public string cache { get; set; } public static TorznabQuery ToTorznabQuery(TorznabRequest request) { @@ -64,15 +66,19 @@ namespace Jackett.Common.Models.DTO query.Categories = new int[0]; } + if (!string.IsNullOrWhiteSpace(request.season)) + query.Season = int.Parse(request.season); if (!string.IsNullOrWhiteSpace(request.rid)) query.RageID = int.Parse(request.rid); if (!string.IsNullOrWhiteSpace(request.tvdbid)) query.TvdbID = int.Parse(request.tvdbid); - if (!string.IsNullOrWhiteSpace(request.season)) - query.Season = int.Parse(request.season); if (!string.IsNullOrWhiteSpace(request.tmdbid)) query.TmdbID = int.Parse(request.tmdbid); + if (!string.IsNullOrWhiteSpace(request.traktid)) + query.TraktID = int.Parse(request.traktid); + if (!string.IsNullOrWhiteSpace(request.doubanid)) + query.DoubanID = int.Parse(request.doubanid); if (!string.IsNullOrWhiteSpace(request.album)) query.Album = request.album; diff --git a/src/Jackett.Common/Models/TorznabCapabilities.cs b/src/Jackett.Common/Models/TorznabCapabilities.cs index fab954913..991090b36 100644 --- a/src/Jackett.Common/Models/TorznabCapabilities.cs +++ b/src/Jackett.Common/Models/TorznabCapabilities.cs @@ -13,14 +13,17 @@ namespace Jackett.Common.Models ImdbId, TvdbId, RId, - TmdbId + TmdbId, + TraktId } public enum MovieSearchParam { Q, ImdbId, - TmdbId + TmdbId, + TraktId, + DoubanId } public enum MusicSearchParam @@ -56,11 +59,14 @@ namespace Jackett.Common.Models public bool TvSearchTvdbAvailable => (TvSearchParams.Contains(TvSearchParam.TvdbId)); public bool TvSearchTvRageAvailable => (TvSearchParams.Contains(TvSearchParam.RId)); public bool TvSearchTmdbAvailable => (TvSearchParams.Contains(TvSearchParam.TmdbId)); + public bool TvSearchTraktAvailable => (TvSearchParams.Contains(TvSearchParam.TraktId)); public List MovieSearchParams; public bool MovieSearchAvailable => (MovieSearchParams.Count > 0); 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 List MusicSearchParams; public bool MusicSearchAvailable => (MusicSearchParams.Count > 0); @@ -187,6 +193,8 @@ namespace Jackett.Common.Models parameters.Add("rid"); if (TvSearchTmdbAvailable) parameters.Add("tmdbid"); + if (TvSearchTmdbAvailable) + parameters.Add("traktid"); return string.Join(",", parameters); } @@ -197,6 +205,10 @@ namespace Jackett.Common.Models parameters.Add("imdbid"); if (MovieSearchTmdbAvailable) parameters.Add("tmdbid"); + if (MovieSearchImdbAvailable) + parameters.Add("traktid"); + if (MovieSearchTmdbAvailable) + parameters.Add("doubanid"); return string.Join(",", parameters); } diff --git a/src/Jackett.Common/Models/TorznabQuery.cs b/src/Jackett.Common/Models/TorznabQuery.cs index f00c3ecb0..7d10eafb0 100644 --- a/src/Jackett.Common/Models/TorznabQuery.cs +++ b/src/Jackett.Common/Models/TorznabQuery.cs @@ -19,6 +19,8 @@ namespace Jackett.Common.Models public int? TvdbID { get; set; } public string ImdbID { get; set; } public int? TmdbID { get; set; } + public int? TraktID { get; set; } + public int? DoubanID { get; set; } public bool Cache { get; set; } = true; public int Season { get; set; } @@ -59,6 +61,10 @@ namespace Jackett.Common.Models public bool IsTmdbQuery => TmdbID != null; + public bool IsTraktQuery => TraktID != null; + + public bool IsDoubanQuery => DoubanID != null; + public bool HasSpecifiedCategories => (Categories != null && Categories.Length > 0); public string SanitizedSearchTerm @@ -139,6 +145,8 @@ namespace Jackett.Common.Models TvdbID = TvdbID, ImdbID = ImdbID, TmdbID = TmdbID, + TraktID = TraktID, + DoubanID = DoubanID, Cache = Cache }; if (Categories?.Length > 0) diff --git a/src/Jackett.Test/Common/Models/TorznabCapabilitiesTests.cs b/src/Jackett.Test/Common/Models/TorznabCapabilitiesTests.cs index 34e8cbb4a..dfdcae3a9 100644 --- a/src/Jackett.Test/Common/Models/TorznabCapabilitiesTests.cs +++ b/src/Jackett.Test/Common/Models/TorznabCapabilitiesTests.cs @@ -406,7 +406,7 @@ namespace Jackett.Test.Common.Models Assert.AreEqual("yes", xDocumentSearching?.Element("tv-search")?.Attribute("available")?.Value); Assert.AreEqual("q,season,ep,tvdbid,rid", xDocumentSearching?.Element("tv-search")?.Attribute("supportedParams")?.Value); Assert.AreEqual("yes", xDocumentSearching?.Element("movie-search")?.Attribute("available")?.Value); - Assert.AreEqual("q,imdbid,tmdbid", xDocumentSearching?.Element("movie-search")?.Attribute("supportedParams")?.Value); + Assert.AreEqual("q,imdbid,tmdbid,traktid,doubanid", xDocumentSearching?.Element("movie-search")?.Attribute("supportedParams")?.Value); Assert.AreEqual("yes", xDocumentSearching?.Element("music-search")?.Attribute("available")?.Value); Assert.AreEqual("q,album,artist,label,year", xDocumentSearching?.Element("music-search")?.Attribute("supportedParams")?.Value); Assert.AreEqual("yes", xDocumentSearching?.Element("audio-search")?.Attribute("available")?.Value);