diff --git a/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHD.cs b/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHD.cs index 9cb8fc114..4adb30e95 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHD.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHD.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using NLog; using NzbDrone.Common.Http; using NzbDrone.Core.Configuration; @@ -8,11 +9,12 @@ namespace NzbDrone.Core.Indexers.AwesomeHD { public override string Name => "AwesomeHD"; public override DownloadProtocol Protocol => DownloadProtocol.Torrent; - public override IndexerPrivacy Privacy => IndexerPrivacy.Private; public override bool SupportsRss => true; public override bool SupportsSearch => true; + public override IndexerCapabilities Capabilities => SetCapabilities(); + public override int PageSize => 50; public AwesomeHD(IHttpClient httpClient, IIndexerStatusService indexerStatusService, IConfigService configService, Logger logger) @@ -29,5 +31,30 @@ namespace NzbDrone.Core.Indexers.AwesomeHD { return new AwesomeHDRssParser(Settings); } + + private IndexerCapabilities SetCapabilities() + { + var caps = new IndexerCapabilities + { + TvSearchParams = new List + { + TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.ImdbId + }, + MovieSearchParams = new List + { + MovieSearchParam.Q, MovieSearchParam.ImdbId + }, + MusicSearchParams = new List + { + MusicSearchParam.Q + } + }; + + caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesHD); + caps.Categories.AddCategoryMapping(2, NewznabStandardCategory.TVHD); + caps.Categories.AddCategoryMapping(3, NewznabStandardCategory.Audio); + + return caps; + } } } diff --git a/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHDRequestGenerator.cs b/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHDRequestGenerator.cs index e07cdfbe6..a941c182a 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHDRequestGenerator.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHDRequestGenerator.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using NzbDrone.Common.Extensions; using NzbDrone.Common.Http; using NzbDrone.Core.IndexerSearch.Definitions; @@ -19,23 +20,23 @@ namespace NzbDrone.Core.Indexers.AwesomeHD public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetRequest(searchCriteria.ImdbId)); - return pageableRequests; - } - - public Func> GetCookies { get; set; } - public Action, DateTime?> CookiesUpdater { get; set; } + var parameters = string.Empty; - private IEnumerable GetRequest(string searchParameters) - { - if (searchParameters != null) + if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace()) { - yield return new IndexerRequest($"{Settings.BaseUrl.Trim().TrimEnd('/')}/searchapi.php?action=imdbsearch&passkey={Settings.Passkey.Trim()}&imdb={searchParameters}", HttpAccept.Rss); + parameters = string.Format("&action=imdbsearch&imdb={0}", searchCriteria.ImdbId); + } + else if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace()) + { + parameters = string.Format("&action=titlesearch&title={0}", searchCriteria.SearchTerm); } else { - yield return new IndexerRequest($"{Settings.BaseUrl.Trim().TrimEnd('/')}/searchapi.php?action=latestmovies&passkey={Settings.Passkey.Trim()}", HttpAccept.Rss); + parameters = "&action=latestmovies"; } + + pageableRequests.Add(GetRequest(parameters)); + return pageableRequests; } public IndexerPageableRequestChain GetSearchRequests(MusicSearchCriteria searchCriteria) @@ -57,5 +58,16 @@ namespace NzbDrone.Core.Indexers.AwesomeHD { return new IndexerPageableRequestChain(); } + + public Func> GetCookies { get; set; } + public Action, DateTime?> CookiesUpdater { get; set; } + + private IEnumerable GetRequest(string searchParameters) + { + if (searchParameters != null) + { + yield return new IndexerRequest($"{Settings.BaseUrl.Trim().TrimEnd('/')}/searchapi.php?passkey={Settings.Passkey.Trim()}{searchParameters}", HttpAccept.Rss); + } + } } } diff --git a/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHDSettings.cs b/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHDSettings.cs index 1ef266edf..badea92b9 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHDSettings.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/AwesomeHD/AwesomeHDSettings.cs @@ -1,7 +1,5 @@ -using System.Collections.Generic; using FluentValidation; using NzbDrone.Core.Annotations; -using NzbDrone.Core.Languages; using NzbDrone.Core.Validation; namespace NzbDrone.Core.Indexers.AwesomeHD @@ -24,7 +22,6 @@ namespace NzbDrone.Core.Indexers.AwesomeHD BaseUrl = "https://awesome-hd.club"; } - [FieldDefinition(0, Label = "API URL", Advanced = true, HelpText = "Do not change this unless you know what you're doing. Since you Passkey will be sent to that host.")] public string BaseUrl { get; set; } [FieldDefinition(1, Label = "Passkey", Privacy = PrivacyLevel.ApiKey)] diff --git a/src/NzbDrone.Core/Indexers/Definitions/DigitalCore.cs b/src/NzbDrone.Core/Indexers/Definitions/DigitalCore.cs index f73f77e33..ba189f92d 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/DigitalCore.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/DigitalCore.cs @@ -60,46 +60,46 @@ namespace NzbDrone.Core.Indexers.Definitions } }; - caps.Categories.AddCategoryMapping(1.ToString(), NewznabStandardCategory.MoviesDVD, "Movies/DVDR"); - caps.Categories.AddCategoryMapping(2.ToString(), NewznabStandardCategory.MoviesSD, "Movies/SD"); - caps.Categories.AddCategoryMapping(3.ToString(), NewznabStandardCategory.MoviesBluRay, "Movies/BluRay"); - caps.Categories.AddCategoryMapping(4.ToString(), NewznabStandardCategory.MoviesUHD, "Movies/4K"); - caps.Categories.AddCategoryMapping(5.ToString(), NewznabStandardCategory.MoviesHD, "Movies/720p"); - caps.Categories.AddCategoryMapping(6.ToString(), NewznabStandardCategory.MoviesHD, "Movies/1080p"); - caps.Categories.AddCategoryMapping(7.ToString(), NewznabStandardCategory.MoviesHD, "Movies/PACKS"); - - caps.Categories.AddCategoryMapping(8.ToString(), NewznabStandardCategory.TVHD, "TV/720p"); - caps.Categories.AddCategoryMapping(9.ToString(), NewznabStandardCategory.TVHD, "TV/1080p"); - caps.Categories.AddCategoryMapping(10.ToString(), NewznabStandardCategory.TVSD, "TV/SD"); - caps.Categories.AddCategoryMapping(11.ToString(), NewznabStandardCategory.TVSD, "TV/DVDR"); - caps.Categories.AddCategoryMapping(12.ToString(), NewznabStandardCategory.TVHD, "TV/PACKS"); - caps.Categories.AddCategoryMapping(13.ToString(), NewznabStandardCategory.TVUHD, "TV/4K"); - caps.Categories.AddCategoryMapping(14.ToString(), NewznabStandardCategory.TVHD, "TV/BluRay"); - - caps.Categories.AddCategoryMapping(17.ToString(), NewznabStandardCategory.Other, "Unknown"); - caps.Categories.AddCategoryMapping(18.ToString(), NewznabStandardCategory.PC0day, "Apps/0day"); - caps.Categories.AddCategoryMapping(20.ToString(), NewznabStandardCategory.PCISO, "Apps/PC"); - caps.Categories.AddCategoryMapping(21.ToString(), NewznabStandardCategory.PCMac, "Apps/Mac"); - caps.Categories.AddCategoryMapping(33.ToString(), NewznabStandardCategory.PC, "Apps/Tutorials"); - - caps.Categories.AddCategoryMapping(22.ToString(), NewznabStandardCategory.AudioMP3, "Music/MP3"); - caps.Categories.AddCategoryMapping(23.ToString(), NewznabStandardCategory.AudioLossless, "Music/FLAC"); - caps.Categories.AddCategoryMapping(24.ToString(), NewznabStandardCategory.Audio, "Music/MTV"); - caps.Categories.AddCategoryMapping(29.ToString(), NewznabStandardCategory.Audio, "Music/PACKS"); - - caps.Categories.AddCategoryMapping(25.ToString(), NewznabStandardCategory.PCGames, "Games/PC"); - caps.Categories.AddCategoryMapping(26.ToString(), NewznabStandardCategory.Console, "Games/NSW"); - caps.Categories.AddCategoryMapping(27.ToString(), NewznabStandardCategory.PCMac, "Games/Mac"); - - caps.Categories.AddCategoryMapping(28.ToString(), NewznabStandardCategory.Books, "Ebooks"); - - caps.Categories.AddCategoryMapping(30.ToString(), NewznabStandardCategory.XXXSD, "XXX/SD"); - caps.Categories.AddCategoryMapping(31.ToString(), NewznabStandardCategory.XXX, "XXX/HD"); - caps.Categories.AddCategoryMapping(32.ToString(), NewznabStandardCategory.XXXUHD, "XXX/4K"); - caps.Categories.AddCategoryMapping(35.ToString(), NewznabStandardCategory.XXXSD, "XXX/Movies/SD"); - caps.Categories.AddCategoryMapping(36.ToString(), NewznabStandardCategory.XXX, "XXX/Movies/HD"); - caps.Categories.AddCategoryMapping(37.ToString(), NewznabStandardCategory.XXXUHD, "XXX/Movies/4K"); - caps.Categories.AddCategoryMapping(34.ToString(), NewznabStandardCategory.XXXImageSet, "XXX/Imagesets"); + caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesDVD, "Movies/DVDR"); + caps.Categories.AddCategoryMapping(2, NewznabStandardCategory.MoviesSD, "Movies/SD"); + caps.Categories.AddCategoryMapping(3, NewznabStandardCategory.MoviesBluRay, "Movies/BluRay"); + caps.Categories.AddCategoryMapping(4, NewznabStandardCategory.MoviesUHD, "Movies/4K"); + caps.Categories.AddCategoryMapping(5, NewznabStandardCategory.MoviesHD, "Movies/720p"); + caps.Categories.AddCategoryMapping(6, NewznabStandardCategory.MoviesHD, "Movies/1080p"); + caps.Categories.AddCategoryMapping(7, NewznabStandardCategory.MoviesHD, "Movies/PACKS"); + + caps.Categories.AddCategoryMapping(8, NewznabStandardCategory.TVHD, "TV/720p"); + caps.Categories.AddCategoryMapping(9, NewznabStandardCategory.TVHD, "TV/1080p"); + caps.Categories.AddCategoryMapping(10, NewznabStandardCategory.TVSD, "TV/SD"); + caps.Categories.AddCategoryMapping(11, NewznabStandardCategory.TVSD, "TV/DVDR"); + caps.Categories.AddCategoryMapping(12, NewznabStandardCategory.TVHD, "TV/PACKS"); + caps.Categories.AddCategoryMapping(13, NewznabStandardCategory.TVUHD, "TV/4K"); + caps.Categories.AddCategoryMapping(14, NewznabStandardCategory.TVHD, "TV/BluRay"); + + caps.Categories.AddCategoryMapping(17, NewznabStandardCategory.Other, "Unknown"); + caps.Categories.AddCategoryMapping(18, NewznabStandardCategory.PC0day, "Apps/0day"); + caps.Categories.AddCategoryMapping(20, NewznabStandardCategory.PCISO, "Apps/PC"); + caps.Categories.AddCategoryMapping(21, NewznabStandardCategory.PCMac, "Apps/Mac"); + caps.Categories.AddCategoryMapping(33, NewznabStandardCategory.PC, "Apps/Tutorials"); + + caps.Categories.AddCategoryMapping(22, NewznabStandardCategory.AudioMP3, "Music/MP3"); + caps.Categories.AddCategoryMapping(23, NewznabStandardCategory.AudioLossless, "Music/FLAC"); + caps.Categories.AddCategoryMapping(24, NewznabStandardCategory.Audio, "Music/MTV"); + caps.Categories.AddCategoryMapping(29, NewznabStandardCategory.Audio, "Music/PACKS"); + + caps.Categories.AddCategoryMapping(25, NewznabStandardCategory.PCGames, "Games/PC"); + caps.Categories.AddCategoryMapping(26, NewznabStandardCategory.Console, "Games/NSW"); + caps.Categories.AddCategoryMapping(27, NewznabStandardCategory.PCMac, "Games/Mac"); + + caps.Categories.AddCategoryMapping(28, NewznabStandardCategory.Books, "Ebooks"); + + caps.Categories.AddCategoryMapping(30, NewznabStandardCategory.XXXSD, "XXX/SD"); + caps.Categories.AddCategoryMapping(31, NewznabStandardCategory.XXX, "XXX/HD"); + caps.Categories.AddCategoryMapping(32, NewznabStandardCategory.XXXUHD, "XXX/4K"); + caps.Categories.AddCategoryMapping(35, NewznabStandardCategory.XXXSD, "XXX/Movies/SD"); + caps.Categories.AddCategoryMapping(36, NewznabStandardCategory.XXX, "XXX/Movies/HD"); + caps.Categories.AddCategoryMapping(37, NewznabStandardCategory.XXXUHD, "XXX/Movies/4K"); + caps.Categories.AddCategoryMapping(34, NewznabStandardCategory.XXXImageSet, "XXX/Imagesets"); return caps; } diff --git a/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcorn.cs b/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcorn.cs index 963df8498..617ebc45b 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcorn.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcorn.cs @@ -51,19 +51,19 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn } }; - caps.Categories.AddCategoryMapping(1.ToString(), NewznabStandardCategory.Movies, "Feature Film"); - caps.Categories.AddCategoryMapping(1.ToString(), NewznabStandardCategory.MoviesForeign); - caps.Categories.AddCategoryMapping(1.ToString(), NewznabStandardCategory.MoviesOther); - caps.Categories.AddCategoryMapping(1.ToString(), NewznabStandardCategory.MoviesSD); - caps.Categories.AddCategoryMapping(1.ToString(), NewznabStandardCategory.MoviesHD); - caps.Categories.AddCategoryMapping(1.ToString(), NewznabStandardCategory.Movies3D); - caps.Categories.AddCategoryMapping(1.ToString(), NewznabStandardCategory.MoviesBluRay); - caps.Categories.AddCategoryMapping(1.ToString(), NewznabStandardCategory.MoviesDVD); - caps.Categories.AddCategoryMapping(1.ToString(), NewznabStandardCategory.MoviesWEBDL); - caps.Categories.AddCategoryMapping(2.ToString(), NewznabStandardCategory.Movies, "Short Film"); - caps.Categories.AddCategoryMapping(3.ToString(), NewznabStandardCategory.TV, "Miniseries"); - caps.Categories.AddCategoryMapping(4.ToString(), NewznabStandardCategory.TV, "Stand-up Comedy"); - caps.Categories.AddCategoryMapping(5.ToString(), NewznabStandardCategory.TV, "Live Performance"); + caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.Movies, "Feature Film"); + caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesForeign); + caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesOther); + caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesSD); + caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesHD); + caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.Movies3D); + caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesBluRay); + caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesDVD); + caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.MoviesWEBDL); + caps.Categories.AddCategoryMapping(2, NewznabStandardCategory.Movies, "Short Film"); + caps.Categories.AddCategoryMapping(3, NewznabStandardCategory.TV, "Miniseries"); + caps.Categories.AddCategoryMapping(4, NewznabStandardCategory.TV, "Stand-up Comedy"); + caps.Categories.AddCategoryMapping(5, NewznabStandardCategory.TV, "Live Performance"); return caps; } diff --git a/src/NzbDrone.Core/Indexers/IndexerCapabilitiesCategories.cs b/src/NzbDrone.Core/Indexers/IndexerCapabilitiesCategories.cs index 1c93e23e3..96e3fed3a 100644 --- a/src/NzbDrone.Core/Indexers/IndexerCapabilitiesCategories.cs +++ b/src/NzbDrone.Core/Indexers/IndexerCapabilitiesCategories.cs @@ -51,6 +51,9 @@ namespace NzbDrone.Core.Indexers return newFlatList; } + public void AddCategoryMapping(int trackerCategory, IndexerCategory newznabCategory, string trackerCategoryDesc = null) => + AddCategoryMapping(trackerCategory.ToString(), newznabCategory, trackerCategoryDesc); + public void AddCategoryMapping(string trackerCategory, IndexerCategory torznabCategory, string trackerCategoryDesc = null) { _categoryMapping.Add(new CategoryMapping(trackerCategory, trackerCategoryDesc, torznabCategory.Id));