diff --git a/src/Jackett/Indexers/Feeds/AnimeTosho.cs b/src/Jackett/Indexers/Feeds/AnimeTosho.cs index c37a361f2..d7fc756c7 100644 --- a/src/Jackett/Indexers/Feeds/AnimeTosho.cs +++ b/src/Jackett/Indexers/Feeds/AnimeTosho.cs @@ -1,8 +1,11 @@ using System; +using System.Linq; using System.Text; +using System.Xml.Linq; using Jackett.Models; using Jackett.Models.IndexerConfig; using Jackett.Services; +using Jackett.Utils; using Jackett.Utils.Clients; using NLog; @@ -28,6 +31,18 @@ namespace Jackett.Indexers.Newznab Type = "public"; } + protected override ReleaseInfo ResultFromFeedItem(XElement item) + { + var release = base.ResultFromFeedItem(item); + var enclosures = item.Descendants("enclosure").Where(e => e.Attribute("type").Value == "application/x-bittorrent"); + if (enclosures.Any()) + { + var enclosure = enclosures.First().Attribute("url").Value; + release.Link = enclosure.ToUri(); + } + return release; + } + protected override Uri FeedUri => new Uri(SiteLink + "/feed/api"); } } diff --git a/src/Jackett/Indexers/Feeds/BaseFeedIndexer.cs b/src/Jackett/Indexers/Feeds/BaseFeedIndexer.cs index 6e22f2a29..c4b3ed4f1 100644 --- a/src/Jackett/Indexers/Feeds/BaseFeedIndexer.cs +++ b/src/Jackett/Indexers/Feeds/BaseFeedIndexer.cs @@ -32,8 +32,8 @@ namespace Jackett.Indexers protected override async Task> PerformQuery(TorznabQuery query) { var requestUri = FeedUri.ToString(); - if (!query.SanitizedSearchTerm.IsNullOrEmptyOrWhitespace()) - requestUri = requestUri + "?q=" + query.SanitizedSearchTerm; + if (!query.SearchTerm.IsNullOrEmptyOrWhitespace()) + requestUri = requestUri + "?q=" + query.SearchTerm; var request = new WebRequest { Url = requestUri, diff --git a/src/Jackett/Indexers/Feeds/BaseNewznabIndexer.cs b/src/Jackett/Indexers/Feeds/BaseNewznabIndexer.cs index e85e868a4..c9479472f 100644 --- a/src/Jackett/Indexers/Feeds/BaseNewznabIndexer.cs +++ b/src/Jackett/Indexers/Feeds/BaseNewznabIndexer.cs @@ -21,31 +21,33 @@ namespace Jackett.Indexers { var doc = XDocument.Parse(feedContent); - var results = doc.Descendants("item").Select((XElement item) => - { - var attributes = item.Descendants().Where(e => e.Name.LocalName == "attr"); - var release = new ReleaseInfo - { - Title = item.FirstValue("title"), - Guid = item.FirstValue("guid").ToUri(), - Link = item.FirstValue("link").ToUri(), - Comments = item.FirstValue("comments").ToUri(), - PublishDate = item.FirstValue("pubDate").ToDateTime(), - Category = new List { Int32.Parse(attributes.First(e => e.Attribute("name").Value == "category").Attribute("value").Value) }, - Size = ReadAttribute(attributes, "size").TryParse(), - Files = ReadAttribute(attributes, "files").TryParse(), - Description = item.FirstValue("description"), - Seeders = ReadAttribute(attributes, "seeders").TryParse(), - Peers = ReadAttribute(attributes, "peers").TryParse(), - InfoHash = attributes.First(e => e.Attribute("name").Value == "infohash").Attribute("value").Value, - MagnetUri = attributes.First(e => e.Attribute("name").Value == "magneturl").Attribute("value").Value.ToUri(), - }; - return release; - }); + var results = doc.Descendants("item").Select(ResultFromFeedItem); return results; } + protected virtual ReleaseInfo ResultFromFeedItem(XElement item) + { + var attributes = item.Descendants().Where(e => e.Name.LocalName == "attr"); + var release = new ReleaseInfo + { + Title = item.FirstValue("title"), + Guid = item.FirstValue("guid").ToUri(), + Link = item.FirstValue("link").ToUri(), + Comments = item.FirstValue("comments").ToUri(), + PublishDate = item.FirstValue("pubDate").ToDateTime(), + Category = new List { Int32.Parse(attributes.First(e => e.Attribute("name").Value == "category").Attribute("value").Value) }, + Size = ReadAttribute(attributes, "size").TryParse(), + Files = ReadAttribute(attributes, "files").TryParse(), + Description = item.FirstValue("description"), + Seeders = ReadAttribute(attributes, "seeders").TryParse(), + Peers = ReadAttribute(attributes, "peers").TryParse(), + InfoHash = attributes.First(e => e.Attribute("name").Value == "infohash").Attribute("value").Value, + MagnetUri = attributes.First(e => e.Attribute("name").Value == "magneturl").Attribute("value").Value.ToUri(), + }; + return release; + } + private string ReadAttribute(IEnumerable attributes, string attributeName) { var attribute = attributes.FirstOrDefault(e => e.Attribute("name").Value == attributeName);