From b2686e52e5db08ff209c01096bcd3fe7fab0b31a Mon Sep 17 00:00:00 2001 From: Bogdan Date: Mon, 15 May 2023 06:54:12 +0300 Subject: [PATCH] Add IMDb RSS Import List --- .../ImportLists/Rss/Imdb/ImdbRssImport.cs | 50 +++++++++++++++++++ .../Rss/Imdb/ImdbRssImportParser.cs | 20 ++++++++ .../Rss/Imdb/ImdbRssImportSettings.cs | 27 ++++++++++ 3 files changed, 97 insertions(+) create mode 100644 src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImport.cs create mode 100644 src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportParser.cs create mode 100644 src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportSettings.cs diff --git a/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImport.cs b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImport.cs new file mode 100644 index 00000000000..0fed8976d92 --- /dev/null +++ b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImport.cs @@ -0,0 +1,50 @@ +using System.Collections.Generic; +using NLog; +using NzbDrone.Common.Http; +using NzbDrone.Core.Configuration; +using NzbDrone.Core.Parser; +using NzbDrone.Core.ThingiProvider; + +namespace NzbDrone.Core.ImportLists.Rss.Imdb +{ + public class ImdbRssImport : RssImportBase + { + public override string Name => "IMDb RSS"; + public override ImportListType ListType => ImportListType.Advanced; + + public ImdbRssImport(IHttpClient httpClient, IImportListStatusService importListStatusService, IConfigService configService, IParsingService parsingService, Logger logger) + : base(httpClient, importListStatusService, configService, parsingService, logger) + { + } + + public override IEnumerable DefaultDefinitions + { + get + { + yield return new ImportListDefinition + { + Name = "IMDb RSS List", + Enabled = Enabled, + EnableAuto = true, + ProfileId = 1, + Implementation = GetType().Name, + Settings = new ImdbRssImportSettings { Url = "https://rss.imdb.com/list/YOURLISTID" }, + }; + yield return new ImportListDefinition + { + Name = "IMDb RSS Watchlist", + Enabled = Enabled, + EnableAuto = true, + ProfileId = 1, + Implementation = GetType().Name, + Settings = new ImdbRssImportSettings { Url = "https://rss.imdb.com/user/IMDBUSERID/watchlist" }, + }; + } + } + + public override IParseImportListResponse GetParser() + { + return new ImdbRssImportParser(_logger); + } + } +} diff --git a/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportParser.cs b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportParser.cs new file mode 100644 index 00000000000..7687f2fc23c --- /dev/null +++ b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportParser.cs @@ -0,0 +1,20 @@ +using System; +using System.Xml.Linq; +using NLog; +using NzbDrone.Core.ImportLists.ImportListMovies; + +namespace NzbDrone.Core.ImportLists.Rss.Imdb +{ + public class ImdbRssImportParser : RssImportBaseParser + { + public ImdbRssImportParser(Logger logger) + : base(logger) + { + } + + protected override ImportListMovie ProcessItem(XElement item) + { + throw new NotImplementedException(); + } + } +} diff --git a/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportSettings.cs b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportSettings.cs new file mode 100644 index 00000000000..5eed959ce14 --- /dev/null +++ b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportSettings.cs @@ -0,0 +1,27 @@ +using FluentValidation; +using NzbDrone.Core.Annotations; +using NzbDrone.Core.Validation; + +namespace NzbDrone.Core.ImportLists.Rss.Imdb +{ + public class ImdbRssImportSettingsValidator : AbstractValidator + { + public ImdbRssImportSettingsValidator() + { + RuleFor(c => c.Url).NotEmpty(); + } + } + + public class ImdbRssImportSettings : RssImportBaseSettings + { + private ImdbRssImportSettingsValidator Validator => new (); + + [FieldDefinition(0, Label = "Url", Type = FieldType.Textbox)] + public override string Url { get; set; } + + public override NzbDroneValidationResult Validate() + { + return new NzbDroneValidationResult(Validator.Validate(this)); + } + } +}