Improve results and fix download link on AnimeTosho

This commit is contained in:
chibidev
2017-08-08 09:27:21 +02:00
parent b05ee653d3
commit dba63857e4
3 changed files with 40 additions and 23 deletions

View File

@@ -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");
}
}

View File

@@ -32,8 +32,8 @@ namespace Jackett.Indexers
protected override async Task<IEnumerable<ReleaseInfo>> 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,

View File

@@ -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<int> { Int32.Parse(attributes.First(e => e.Attribute("name").Value == "category").Attribute("value").Value) },
Size = ReadAttribute(attributes, "size").TryParse<Int64>(),
Files = ReadAttribute(attributes, "files").TryParse<Int64>(),
Description = item.FirstValue("description"),
Seeders = ReadAttribute(attributes, "seeders").TryParse<Int32>(),
Peers = ReadAttribute(attributes, "peers").TryParse<Int32>(),
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<int> { Int32.Parse(attributes.First(e => e.Attribute("name").Value == "category").Attribute("value").Value) },
Size = ReadAttribute(attributes, "size").TryParse<Int64>(),
Files = ReadAttribute(attributes, "files").TryParse<Int64>(),
Description = item.FirstValue("description"),
Seeders = ReadAttribute(attributes, "seeders").TryParse<Int32>(),
Peers = ReadAttribute(attributes, "peers").TryParse<Int32>(),
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<XElement> attributes, string attributeName)
{
var attribute = attributes.FirstOrDefault(e => e.Attribute("name").Value == attributeName);