Minor cleanup in RssImport

This commit is contained in:
Bogdan 2023-05-08 23:39:03 +03:00 committed by Mark McDowall
parent c6b543e072
commit 477bfb7835
6 changed files with 29 additions and 31 deletions

View File

@ -8,6 +8,10 @@ namespace NzbDrone.Core.ImportLists.Rss.Plex
{ {
public class PlexRssImport : RssImportBase<PlexRssImportSettings> public class PlexRssImport : RssImportBase<PlexRssImportSettings>
{ {
public override string Name => "Plex Watchlist RSS";
public override ImportListType ListType => ImportListType.Plex;
public override TimeSpan MinRefreshInterval => TimeSpan.FromHours(6);
public PlexRssImport(IHttpClient httpClient, public PlexRssImport(IHttpClient httpClient,
IImportListStatusService importListStatusService, IImportListStatusService importListStatusService,
IConfigService configService, IConfigService configService,
@ -17,10 +21,6 @@ namespace NzbDrone.Core.ImportLists.Rss.Plex
{ {
} }
public override ImportListType ListType => ImportListType.Plex;
public override TimeSpan MinRefreshInterval => TimeSpan.FromHours(6);
public override string Name => "Plex Watchlist RSS";
public override IParseImportListResponse GetParser() public override IParseImportListResponse GetParser()
{ {
return new PlexRssImportParser(_logger); return new PlexRssImportParser(_logger);

View File

@ -8,18 +8,13 @@ namespace NzbDrone.Core.ImportLists.Rss.Plex
{ {
public class PlexRssImportParser : RssImportBaseParser public class PlexRssImportParser : RssImportBaseParser
{ {
private readonly Logger _logger;
public PlexRssImportParser(Logger logger) public PlexRssImportParser(Logger logger)
: base(logger) : base(logger)
{ {
_logger = logger;
} }
protected override ImportListItemInfo ProcessItem(XElement item) protected override ImportListItemInfo ProcessItem(XElement item)
{ {
var info = new ImportListItemInfo();
var guid = item.TryGetValue("guid", string.Empty);
var category = item.TryGetValue("category"); var category = item.TryGetValue("category");
if (category != "show") if (category != "show")
@ -27,7 +22,12 @@ namespace NzbDrone.Core.ImportLists.Rss.Plex
return null; return null;
} }
info.Title = item.TryGetValue("title", "Unknown"); var info = new ImportListItemInfo
{
Title = item.TryGetValue("title", "Unknown")
};
var guid = item.TryGetValue("guid", string.Empty);
if (int.TryParse(guid.Replace("tvdb://", ""), out var tvdbId)) if (int.TryParse(guid.Replace("tvdb://", ""), out var tvdbId))
{ {

View File

@ -12,9 +12,9 @@ namespace NzbDrone.Core.ImportLists.Rss.Plex
} }
} }
public class PlexRssImportSettings : RssImportBaseSettings, IImportListSettings public class PlexRssImportSettings : RssImportBaseSettings
{ {
private PlexRssImportSettingsValidator Validator => new PlexRssImportSettingsValidator(); private PlexRssImportSettingsValidator Validator => new ();
[FieldDefinition(0, Label = "Url", Type = FieldType.Textbox, HelpLink = "https://app.plex.tv/desktop/#!/settings/watchlist")] [FieldDefinition(0, Label = "Url", Type = FieldType.Textbox, HelpLink = "https://app.plex.tv/desktop/#!/settings/watchlist")]
public override string Url { get; set; } public override string Url { get; set; }

View File

@ -11,6 +11,10 @@ namespace NzbDrone.Core.ImportLists.Rss
public class RssImportBase<TSettings> : HttpImportListBase<TSettings> public class RssImportBase<TSettings> : HttpImportListBase<TSettings>
where TSettings : RssImportBaseSettings, new() where TSettings : RssImportBaseSettings, new()
{ {
public override string Name => "RSS List Base";
public override ImportListType ListType => ImportListType.Advanced;
public override TimeSpan MinRefreshInterval => TimeSpan.FromHours(6);
public RssImportBase(IHttpClient httpClient, public RssImportBase(IHttpClient httpClient,
IImportListStatusService importListStatusService, IImportListStatusService importListStatusService,
IConfigService configService, IConfigService configService,
@ -20,10 +24,6 @@ namespace NzbDrone.Core.ImportLists.Rss
{ {
} }
public override ImportListType ListType => ImportListType.Advanced;
public override TimeSpan MinRefreshInterval => TimeSpan.FromHours(6);
public override string Name => "RSS List Base";
public override IList<ImportListItemInfo> Fetch() public override IList<ImportListItemInfo> Fetch()
{ {
return FetchItems(g => g.GetListItems()); return FetchItems(g => g.GetListItems());
@ -36,7 +36,7 @@ namespace NzbDrone.Core.ImportLists.Rss
public override IImportListRequestGenerator GetRequestGenerator() public override IImportListRequestGenerator GetRequestGenerator()
{ {
return new RssImportRequestGenerator() return new RssImportRequestGenerator
{ {
Settings = Settings Settings = Settings
}; };

View File

@ -83,10 +83,9 @@ namespace NzbDrone.Core.ImportLists.Rss
var content = XmlCleaner.ReplaceEntities(importListResponse.Content); var content = XmlCleaner.ReplaceEntities(importListResponse.Content);
content = XmlCleaner.ReplaceUnicode(content); content = XmlCleaner.ReplaceUnicode(content);
using (var xmlTextReader = XmlReader.Create(new StringReader(content), new XmlReaderSettings { DtdProcessing = DtdProcessing.Ignore, IgnoreComments = true })) using var xmlTextReader = XmlReader.Create(new StringReader(content), new XmlReaderSettings { DtdProcessing = DtdProcessing.Ignore, IgnoreComments = true });
{
return XDocument.Load(xmlTextReader); return XDocument.Load(xmlTextReader);
}
} }
catch (XmlException ex) catch (XmlException ex)
{ {
@ -120,19 +119,18 @@ namespace NzbDrone.Core.ImportLists.Rss
protected virtual ImportListItemInfo ProcessItem(XElement item) protected virtual ImportListItemInfo ProcessItem(XElement item)
{ {
var info = new ImportListItemInfo(); var info = new ImportListItemInfo
{
Title = item.TryGetValue("title", "Unknown")
};
var guid = item.TryGetValue("guid"); var guid = item.TryGetValue("guid");
if (guid != null) if (guid != null && int.TryParse(guid, out var tvdbId))
{ {
if (int.TryParse(guid, out var tvdbId)) info.TvdbId = tvdbId;
{
info.TvdbId = tvdbId;
}
} }
info.Title = item.TryGetValue("title", "Unknown");
if (info.TvdbId == 0) if (info.TvdbId == 0)
{ {
throw new UnsupportedFeedException("Each item in the RSS feed must have a guid element with a TVDB ID"); throw new UnsupportedFeedException("Each item in the RSS feed must have a guid element with a TVDB ID");

View File

@ -14,7 +14,7 @@ namespace NzbDrone.Core.ImportLists.Rss
public class RssImportBaseSettings : IImportListSettings public class RssImportBaseSettings : IImportListSettings
{ {
private RssImportSettingsValidator Validator => new RssImportSettingsValidator(); private RssImportSettingsValidator Validator => new ();
public string BaseUrl { get; set; } public string BaseUrl { get; set; }