sonarr-repo-only/NzbDrone.Core/Indexers/Newznab/NewznabParser.cs

57 lines
1.7 KiB
C#
Raw Normal View History

2013-04-07 07:30:37 +00:00
using System;
2013-08-06 02:45:57 +00:00
using System.Linq;
using System.Xml;
2013-08-06 02:45:57 +00:00
using System.Xml.Linq;
using NzbDrone.Core.Indexers.Exceptions;
using NzbDrone.Core.Parser.Model;
2013-04-07 07:30:37 +00:00
namespace NzbDrone.Core.Indexers.Newznab
{
2013-09-13 23:17:58 +00:00
public class NewznabParser : RssParserBase
2013-04-07 07:30:37 +00:00
{
2013-08-06 02:45:57 +00:00
protected override string GetNzbInfoUrl(XElement item)
2013-04-07 07:30:37 +00:00
{
2013-08-06 02:45:57 +00:00
return item.Comments().Replace("#comments", "");
2013-04-07 07:30:37 +00:00
}
2013-09-13 23:17:58 +00:00
protected override long GetSize(XElement item)
2013-04-07 07:30:37 +00:00
{
2013-09-13 23:17:58 +00:00
var attributes = item.Elements("attr").ToList();
var sizeElement = attributes.SingleOrDefault(e => e.Attribute("name").Value.Equals("size", StringComparison.CurrentCultureIgnoreCase));
if (sizeElement != null)
2013-04-07 07:30:37 +00:00
{
return Convert.ToInt64(sizeElement.Attribute("value").Value);
2013-09-13 23:17:58 +00:00
}
2013-04-07 07:30:37 +00:00
return ParseSize(item.Description());
2013-09-13 23:17:58 +00:00
}
protected override ReleaseInfo PostProcessor(XElement item, ReleaseInfo currentResult)
{
if (currentResult != null)
{
var attributes = item.Elements("attr").ToList();
var rageIdElement = attributes.SingleOrDefault(e => e.Attribute("name").Value.Equals("rageid", StringComparison.CurrentCultureIgnoreCase));
if (rageIdElement != null)
{
int tvRageId;
if (Int32.TryParse(rageIdElement.Attribute("value").Value, out tvRageId))
{
currentResult.TvRageId = tvRageId;
}
}
2013-04-07 07:30:37 +00:00
}
return currentResult;
}
protected override void PreProcess(string source, string url)
{
NewznabPreProcessor.Process(source, url);
}
2013-04-07 07:30:37 +00:00
}
}