showrss: improve implementation. resolves #7846 (#9663)

This commit is contained in:
Diego Heras 2020-09-26 23:50:45 +02:00 committed by GitHub
parent d0dff67251
commit cb2312273a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 21 deletions

View File

@ -20,8 +20,9 @@ namespace Jackett.Common.Indexers
public class ShowRSS : BaseWebIndexer
{
private string SearchAllUrl => SiteLink + "other/all.rss";
private string BrowseUrl => SiteLink + "browse/";
public override string[] LegacySiteLinks { get; protected set; } = {
"http://showrss.info/",
"http://showrss.info/"
};
private new ConfigurationData configData => base.configData;
@ -54,8 +55,6 @@ namespace Jackett.Common.Indexers
return IndexerConfigurationStatus.RequiresTesting;
}
public override Task<byte[]> Download(Uri link) => throw new NotImplementedException();
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
var releases = new List<ReleaseInfo>();
@ -68,44 +67,43 @@ namespace Jackett.Common.Indexers
xmlDoc.LoadXml(result.ContentString);
foreach (XmlNode node in xmlDoc.GetElementsByTagName("item"))
{
//TODO revisit for refactoring
var title = node.SelectSingleNode(".//*[local-name()='raw_title']").InnerText;
if ((!query.IsImdbQuery || !TorznabCaps.SupportsImdbMovieSearch) &&
!query.MatchQueryStringAND(title))
if (!query.MatchQueryStringAND(title))
continue;
// Try to guess the category... I'm not proud of myself...
var category = title.Contains("720p") ? TorznabCatType.TVHD.ID : TorznabCatType.TVSD.ID;
var test = node.SelectSingleNode("enclosure");
var magnetUri = new Uri(node.SelectSingleNode("link").InnerText);
// guess category from title
var category = title.Contains("720p") || title.Contains("1080p") ?
TorznabCatType.TVHD.ID :
TorznabCatType.TVSD.ID;
var magnetUri = new Uri(node.SelectSingleNode("link")?.InnerText);
var publishDate = DateTime.Parse(node.SelectSingleNode("pubDate").InnerText, CultureInfo.InvariantCulture);
var infoHash = node.SelectSingleNode("description").InnerText;
//TODO Maybe use magnetUri instead? https://github.com/Jackett/Jackett/pull/7342#discussion_r397552678
var guid = new Uri(test.Attributes["url"].Value);
var infoHash = node.SelectSingleNode(".//*[local-name()='info_hash']").InnerText;
var commentsUri = new Uri(BrowseUrl + node.SelectSingleNode(".//*[local-name()='show_id']").InnerText);
var release = new ReleaseInfo
{
MinimumRatio = 1,
MinimumSeedTime = 172800, // 48 hours
Title = title,
Comments = magnetUri,
Comments = commentsUri,
Category = new List<int> { category },
Guid = guid,
Guid = magnetUri,
PublishDate = publishDate,
Description = infoHash,
InfoHash = infoHash,
MagnetUri = magnetUri,
Size = 0,
Seeders = 1,
Peers = 2,
DownloadVolumeFactor = 0,
UploadVolumeFactor = 1
UploadVolumeFactor = 1,
MinimumRatio = 1,
MinimumSeedTime = 172800, // 48 hours
};
releases.Add(release);
}
}
catch (Exception ex)
catch (Exception e)
{
OnParseError(result.ContentString, ex);
OnParseError(result.ContentString, e);
}
return releases;