mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
Improve results and fix download link on AnimeTosho
This commit is contained in:
@@ -1,8 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Xml.Linq;
|
||||||
using Jackett.Models;
|
using Jackett.Models;
|
||||||
using Jackett.Models.IndexerConfig;
|
using Jackett.Models.IndexerConfig;
|
||||||
using Jackett.Services;
|
using Jackett.Services;
|
||||||
|
using Jackett.Utils;
|
||||||
using Jackett.Utils.Clients;
|
using Jackett.Utils.Clients;
|
||||||
using NLog;
|
using NLog;
|
||||||
|
|
||||||
@@ -28,6 +31,18 @@ namespace Jackett.Indexers.Newznab
|
|||||||
Type = "public";
|
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");
|
protected override Uri FeedUri => new Uri(SiteLink + "/feed/api");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -32,8 +32,8 @@ namespace Jackett.Indexers
|
|||||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||||
{
|
{
|
||||||
var requestUri = FeedUri.ToString();
|
var requestUri = FeedUri.ToString();
|
||||||
if (!query.SanitizedSearchTerm.IsNullOrEmptyOrWhitespace())
|
if (!query.SearchTerm.IsNullOrEmptyOrWhitespace())
|
||||||
requestUri = requestUri + "?q=" + query.SanitizedSearchTerm;
|
requestUri = requestUri + "?q=" + query.SearchTerm;
|
||||||
var request = new WebRequest
|
var request = new WebRequest
|
||||||
{
|
{
|
||||||
Url = requestUri,
|
Url = requestUri,
|
||||||
|
@@ -21,31 +21,33 @@ namespace Jackett.Indexers
|
|||||||
{
|
{
|
||||||
var doc = XDocument.Parse(feedContent);
|
var doc = XDocument.Parse(feedContent);
|
||||||
|
|
||||||
var results = doc.Descendants("item").Select((XElement item) =>
|
var results = doc.Descendants("item").Select(ResultFromFeedItem);
|
||||||
{
|
|
||||||
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;
|
|
||||||
});
|
|
||||||
|
|
||||||
return results;
|
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)
|
private string ReadAttribute(IEnumerable<XElement> attributes, string attributeName)
|
||||||
{
|
{
|
||||||
var attribute = attributes.FirstOrDefault(e => e.Attribute("name").Value == attributeName);
|
var attribute = attributes.FirstOrDefault(e => e.Attribute("name").Value == attributeName);
|
||||||
|
Reference in New Issue
Block a user