diff --git a/src/NzbDrone.Core/NetImport/CouchPotato/CouchPotatoSettings.cs b/src/NzbDrone.Core/NetImport/CouchPotato/CouchPotatoSettings.cs index 98ab00bff..5fb9c332f 100644 --- a/src/NzbDrone.Core/NetImport/CouchPotato/CouchPotatoSettings.cs +++ b/src/NzbDrone.Core/NetImport/CouchPotato/CouchPotatoSettings.cs @@ -7,6 +7,16 @@ using NzbDrone.Core.Validation; namespace NzbDrone.Core.NetImport.CouchPotato { + public class CouchPotatoSettingsValidator : AbstractValidator + { + public CouchPotatoSettingsValidator() + { + RuleFor(c => c.Link).ValidRootUrl(); + RuleFor(c => c.Port).InclusiveBetween(1, 65535); + RuleFor(c => c.ApiKey).NotEmpty(); + } + } + public class CouchPotatoSettings : NetImportBaseSettings { public CouchPotatoSettings() diff --git a/src/NzbDrone.Core/NetImport/Trakt/TraktImport.cs b/src/NzbDrone.Core/NetImport/Trakt/TraktImport.cs index 1e0e083ae..2add8de16 100644 --- a/src/NzbDrone.Core/NetImport/Trakt/TraktImport.cs +++ b/src/NzbDrone.Core/NetImport/Trakt/TraktImport.cs @@ -15,7 +15,7 @@ namespace NzbDrone.Core.NetImport.Trakt { public class TraktImport : HttpNetImportBase { - public override string Name => "Trakt User List"; + public override string Name => "Trakt List"; public override bool Enabled => true; public override bool EnableAuto => false; diff --git a/src/NzbDrone.Core/NetImport/Trakt/TraktListType.cs b/src/NzbDrone.Core/NetImport/Trakt/TraktListType.cs new file mode 100644 index 000000000..bf818d06a --- /dev/null +++ b/src/NzbDrone.Core/NetImport/Trakt/TraktListType.cs @@ -0,0 +1,9 @@ +namespace NzbDrone.Core.NetImport.Trakt +{ + public enum TraktListType + { + WatchList = 0, + Watched = 1, + CustomList = 2 + } +} diff --git a/src/NzbDrone.Core/NetImport/Trakt/TraktRequestGenerator.cs b/src/NzbDrone.Core/NetImport/Trakt/TraktRequestGenerator.cs index 152da8986..61166f8b3 100644 --- a/src/NzbDrone.Core/NetImport/Trakt/TraktRequestGenerator.cs +++ b/src/NzbDrone.Core/NetImport/Trakt/TraktRequestGenerator.cs @@ -21,11 +21,22 @@ namespace NzbDrone.Core.NetImport.Trakt private IEnumerable GetMovies(string searchParameters) { - // https://api.trakt.tv/users/timdturner/lists/custom1/items/movies - // trakt-api-version = 2 - // trakt-api-key = 657bb899dcb81ec8ee838ff09f6e013ff7c740bf0ccfa54dd41e791b9a70b2f0 + var link = $"{Settings.Link.Trim()}{Settings.Username.Trim()}"; - var request = new NetImportRequest($"{Settings.Link.Trim()}{Settings.Username.Trim()}/lists/{Settings.Listname.Trim()}/items/movies", HttpAccept.Json); + switch (Settings.ListType) + { + case (int)TraktListType.CustomList: + link = link + $"/lists/{Settings.Listname.Trim()}/items/movies"; + break; + case (int)TraktListType.WatchList: + link = link + "/watchlist/movies"; + break; + case (int)TraktListType.Watched: + link = link + "/watched/movies"; + break; + } + + var request = new NetImportRequest($"{link}", HttpAccept.Json); request.HttpRequest.Headers.Add("trakt-api-version", "2"); request.HttpRequest.Headers.Add("trakt-api-key", "657bb899dcb81ec8ee838ff09f6e013ff7c740bf0ccfa54dd41e791b9a70b2f0"); diff --git a/src/NzbDrone.Core/NetImport/Trakt/TraktSettings.cs b/src/NzbDrone.Core/NetImport/Trakt/TraktSettings.cs index 2279cf373..8af9bd25f 100644 --- a/src/NzbDrone.Core/NetImport/Trakt/TraktSettings.cs +++ b/src/NzbDrone.Core/NetImport/Trakt/TraktSettings.cs @@ -7,6 +7,15 @@ using NzbDrone.Core.Validation; namespace NzbDrone.Core.NetImport.Trakt { + public class TraktSettingsValidator : AbstractValidator + { + public TraktSettingsValidator() + { + RuleFor(c => c.Link).ValidRootUrl(); + RuleFor(c => c.Username).NotEmpty(); + } + } + public class TraktSettings : NetImportBaseSettings { public TraktSettings() @@ -19,10 +28,13 @@ namespace NzbDrone.Core.NetImport.Trakt [FieldDefinition(0, Label = "Trakt API URL", HelpText = "Link to to Trakt API URL, do not change unless you know what you are doing.")] public new string Link { get; set; } - [FieldDefinition(1, Label = "Trakt Username", HelpText = "Trakt Username the list belongs to.")] + [FieldDefinition(1, Label = "Trakt List Type", Type = FieldType.Select, SelectOptions = typeof(TraktListType), HelpText = "Trakt list type, custom or watchlist")] + public int ListType { get; set; } + + [FieldDefinition(2, Label = "Trakt Username", HelpText = "Trakt Username the list belongs to.")] public string Username { get; set; } - [FieldDefinition(2, Label = "Trakt List Name", HelpText = "Trakt List Name")] + [FieldDefinition(3, Label = "Trakt List Name", HelpText = "Required for Custom List")] public string Listname { get; set; } } diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj index 90fc824d6..ff9a8c81d 100644 --- a/src/NzbDrone.Core/NzbDrone.Core.csproj +++ b/src/NzbDrone.Core/NzbDrone.Core.csproj @@ -125,6 +125,7 @@ +