mirror of
https://github.com/Radarr/Radarr.git
synced 2024-11-04 10:02:40 +01:00
handle empty rss response from indexers.
This commit is contained in:
parent
ef32431682
commit
a22cbfee2f
@ -4,6 +4,7 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Xml;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Core.Parser.Model;
|
using NzbDrone.Core.Parser.Model;
|
||||||
@ -12,7 +13,7 @@ namespace NzbDrone.Core.Indexers
|
|||||||
{
|
{
|
||||||
public interface IParseFeed
|
public interface IParseFeed
|
||||||
{
|
{
|
||||||
IEnumerable<ReportInfo> Process(Stream source, string url);
|
IEnumerable<ReportInfo> Process(string xml, string url);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class BasicRssParser : IParseFeed
|
public class BasicRssParser : IParseFeed
|
||||||
@ -24,34 +25,37 @@ public BasicRssParser()
|
|||||||
_logger = LogManager.GetCurrentClassLogger();
|
_logger = LogManager.GetCurrentClassLogger();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<ReportInfo> Process(Stream source, string url)
|
public IEnumerable<ReportInfo> Process(string xml, string url)
|
||||||
{
|
{
|
||||||
var document = XDocument.Load(source);
|
using (var xmlTextReader = new XmlTextReader(new StringReader(xml)) { DtdProcessing = DtdProcessing.Ignore })
|
||||||
var items = document.Descendants("item");
|
|
||||||
|
|
||||||
var result = new List<ReportInfo>();
|
|
||||||
|
|
||||||
foreach (var item in items)
|
|
||||||
{
|
{
|
||||||
try
|
var document = XDocument.Load(xmlTextReader);
|
||||||
{
|
var items = document.Descendants("item");
|
||||||
var reportInfo = ParseFeedItem(item);
|
|
||||||
if (reportInfo != null)
|
|
||||||
{
|
|
||||||
reportInfo.NzbUrl = GetNzbUrl(item);
|
|
||||||
reportInfo.NzbInfoUrl = GetNzbInfoUrl(item);
|
|
||||||
|
|
||||||
result.Add(reportInfo);
|
var result = new List<ReportInfo>();
|
||||||
|
|
||||||
|
foreach (var item in items)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var reportInfo = ParseFeedItem(item);
|
||||||
|
if (reportInfo != null)
|
||||||
|
{
|
||||||
|
reportInfo.NzbUrl = GetNzbUrl(item);
|
||||||
|
reportInfo.NzbInfoUrl = GetNzbInfoUrl(item);
|
||||||
|
|
||||||
|
result.Add(reportInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception itemEx)
|
||||||
|
{
|
||||||
|
itemEx.Data.Add("Item", item.Title());
|
||||||
|
_logger.ErrorException("An error occurred while processing feed item from " + url, itemEx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception itemEx)
|
|
||||||
{
|
|
||||||
itemEx.Data.Add("Item", item.Title());
|
|
||||||
_logger.ErrorException("An error occurred while processing feed item from " + url, itemEx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -106,8 +106,16 @@ private List<ReportInfo> Fetch(IIndexer indexer, IEnumerable<string> urls)
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
_logger.Trace("Downloading Feed " + url);
|
_logger.Trace("Downloading Feed " + url);
|
||||||
var stream = _httpProvider.DownloadStream(url);
|
var xml = _httpProvider.DownloadString(url);
|
||||||
result.AddRange(indexer.Parser.Process(stream, url));
|
if (!string.IsNullOrWhiteSpace(xml))
|
||||||
|
{
|
||||||
|
result.AddRange(indexer.Parser.Process(xml, url));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_logger.Warn("{0} returned empty response.", url);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (WebException webException)
|
catch (WebException webException)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user