From 61b8aec732e5db095c1a2312798a881d4d7ab74b 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 | 54 +++++++++++++++++++ .../Rss/Imdb/ImdbRssImportParser.cs | 20 +++++++ .../Rss/Imdb/ImdbRssImportSettings.cs | 27 ++++++++++ 3 files changed, 101 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 000000000..f44103996 --- /dev/null +++ b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImport.cs @@ -0,0 +1,54 @@ +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 000000000..7687f2fc2 --- /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 000000000..5eed959ce --- /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)); + } + } +}