diff --git a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsApi.cs b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsApi.cs index 4d607beb0..c66c6213e 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsApi.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsApi.cs @@ -17,7 +17,7 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits public IEnumerable Category { get; set; } public IEnumerable Codec { get; set; } public IEnumerable Medium { get; set; } - public int? Origin { get; set; } + public IEnumerable Origin { get; set; } [JsonProperty(PropertyName = "imdb")] public ImdbInfo ImdbInfo { get; set; } diff --git a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsRequestGenerator.cs b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsRequestGenerator.cs index 36ddb8e7a..c94595221 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsRequestGenerator.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsRequestGenerator.cs @@ -123,8 +123,20 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits query.Username = Settings.Username; query.Passkey = Settings.ApiKey; - query.Codec = Settings.Codecs.ToArray(); - query.Medium = Settings.Mediums.ToArray(); + if (Settings.Codecs.Any()) + { + query.Codec = Settings.Codecs.ToArray(); + } + + if (Settings.Mediums.Any()) + { + query.Medium = Settings.Mediums.ToArray(); + } + + if (Settings.Origins.Any()) + { + query.Origin = Settings.Origins.ToArray(); + } if (searchCriteria.Categories?.Length > 0) { diff --git a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsSettings.cs b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsSettings.cs index d171a7299..d57702179 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsSettings.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsSettings.cs @@ -24,6 +24,7 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits { Codecs = Array.Empty(); Mediums = Array.Empty(); + Origins = Array.Empty(); FreeleechOnly = false; UseFilenames = true; } @@ -34,16 +35,19 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits [FieldDefinition(3, Label = "API Key", HelpText = "Site API Key", Privacy = PrivacyLevel.ApiKey)] public string ApiKey { get; set; } - [FieldDefinition(4, Label = "Codecs", Type = FieldType.Select, SelectOptions = typeof(HdBitsCodec), Advanced = true, HelpText = "If unspecified, all options are used.")] + [FieldDefinition(4, Label = "Codecs", Type = FieldType.Select, SelectOptions = typeof(HdBitsCodec), HelpText = "If unspecified, all options are used.", Advanced = true)] public IEnumerable Codecs { get; set; } - [FieldDefinition(5, Label = "Mediums", Type = FieldType.Select, SelectOptions = typeof(HdBitsMedium), Advanced = true, HelpText = "If unspecified, all options are used.")] + [FieldDefinition(5, Label = "Mediums", Type = FieldType.Select, SelectOptions = typeof(HdBitsMedium), HelpText = "If unspecified, all options are used.", Advanced = true)] public IEnumerable Mediums { get; set; } - [FieldDefinition(6, Label = "Freeleech Only", Type = FieldType.Checkbox, Advanced = true, HelpText = "Show freeleech releases only")] + [FieldDefinition(6, Label = "Origins", Type = FieldType.Select, SelectOptions = typeof(HdBitsOrigin), HelpText = "If unspecified, all options are used.", Advanced = true)] + public IEnumerable Origins { get; set; } + + [FieldDefinition(7, Label = "Freeleech Only", Type = FieldType.Checkbox, HelpText = "Show freeleech releases only", Advanced = true)] public bool FreeleechOnly { get; set; } - [FieldDefinition(7, Label = "Use Filenames", Type = FieldType.Checkbox, HelpText = "Check this option if you want to use torrent filenames as release titles")] + [FieldDefinition(8, Label = "Use Filenames", Type = FieldType.Checkbox, HelpText = "Check this option if you want to use torrent filenames as release titles")] public bool UseFilenames { get; set; } public override NzbDroneValidationResult Validate() @@ -79,4 +83,12 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits [FieldOption("WEB-DL")] WebDl = 6 } + + public enum HdBitsOrigin + { + [FieldOption("Undefined")] + Undefined = 0, + [FieldOption("Internal")] + Internal = 1 + } }