mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
This commit is contained in:
@@ -143,7 +143,7 @@ namespace Jackett.Common.Indexers
|
|||||||
{
|
{
|
||||||
foreach (var fi in feedItems)
|
foreach (var fi in feedItems)
|
||||||
{
|
{
|
||||||
EraiRawsReleaseInfo releaseInfo = new EraiRawsReleaseInfo(fi);
|
var releaseInfo = new EraiRawsReleaseInfo(fi);
|
||||||
|
|
||||||
// Validate the release
|
// Validate the release
|
||||||
if (releaseInfo.PublishDate == null)
|
if (releaseInfo.PublishDate == null)
|
||||||
@@ -152,9 +152,9 @@ namespace Jackett.Common.Indexers
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (releaseInfo.MagnetLink == null)
|
if (releaseInfo.MagnetLink == null && string.IsNullOrWhiteSpace(releaseInfo.InfoHash))
|
||||||
{
|
{
|
||||||
logger.Warn($"Failed to parse {DisplayName} RSS feed item '{fi.Title}' due to malformed link URI.");
|
logger.Warn($"Failed to parse {DisplayName} RSS feed item '{fi.Title}' due to malformed link URI and no infohash available.");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,11 +183,25 @@ namespace Jackett.Common.Indexers
|
|||||||
{
|
{
|
||||||
foreach (var fi in feedItems)
|
foreach (var fi in feedItems)
|
||||||
{
|
{
|
||||||
|
var guid = fi.MagnetLink;
|
||||||
|
if (guid == null)
|
||||||
|
{
|
||||||
|
// Magnet link is not available so generate something unique
|
||||||
|
var builder = new UriBuilder(fi.DetailsLink);
|
||||||
|
if (!string.IsNullOrWhiteSpace(builder.Query))
|
||||||
|
{
|
||||||
|
builder.Query += "&";
|
||||||
|
}
|
||||||
|
builder.Query += $"infoHash={fi.InfoHash}";
|
||||||
|
guid = builder.Uri;
|
||||||
|
}
|
||||||
|
|
||||||
yield return new ReleaseInfo
|
yield return new ReleaseInfo
|
||||||
{
|
{
|
||||||
Title = string.Concat(fi.Title, " - ", fi.Quality),
|
Title = string.Concat(fi.Title, " - ", fi.Quality),
|
||||||
Guid = fi.MagnetLink,
|
Guid = guid,
|
||||||
MagnetUri = fi.MagnetLink,
|
MagnetUri = fi.MagnetLink,
|
||||||
|
InfoHash = fi.InfoHash,
|
||||||
Details = fi.DetailsLink,
|
Details = fi.DetailsLink,
|
||||||
PublishDate = fi.PublishDate.Value.ToLocalTime().DateTime,
|
PublishDate = fi.PublishDate.Value.ToLocalTime().DateTime,
|
||||||
Category = MapTrackerCatToNewznab("1"),
|
Category = MapTrackerCatToNewznab("1"),
|
||||||
@@ -224,6 +238,7 @@ namespace Jackett.Common.Indexers
|
|||||||
var title = rssItem.SelectSingleNode("title")?.InnerText;
|
var title = rssItem.SelectSingleNode("title")?.InnerText;
|
||||||
var link = rssItem.SelectSingleNode("link")?.InnerText;
|
var link = rssItem.SelectSingleNode("link")?.InnerText;
|
||||||
var publishDate = rssItem.SelectSingleNode("pubDate")?.InnerText;
|
var publishDate = rssItem.SelectSingleNode("pubDate")?.InnerText;
|
||||||
|
var infoHash = rssItem.SelectSingleNode("erai:infohash", nsm)?.InnerText;
|
||||||
var size = rssItem.SelectSingleNode("erai:size", nsm)?.InnerText;
|
var size = rssItem.SelectSingleNode("erai:size", nsm)?.InnerText;
|
||||||
var description = rssItem.SelectSingleNode("description")?.InnerText;
|
var description = rssItem.SelectSingleNode("description")?.InnerText;
|
||||||
var quality = rssItem.SelectSingleNode("erai:resolution", nsm)?.InnerText;
|
var quality = rssItem.SelectSingleNode("erai:resolution", nsm)?.InnerText;
|
||||||
@@ -232,6 +247,7 @@ namespace Jackett.Common.Indexers
|
|||||||
{
|
{
|
||||||
Title = title,
|
Title = title,
|
||||||
Link = link,
|
Link = link,
|
||||||
|
InfoHash = infoHash,
|
||||||
PublishDate = publishDate,
|
PublishDate = publishDate,
|
||||||
Size = size,
|
Size = size,
|
||||||
Description = description,
|
Description = description,
|
||||||
@@ -249,6 +265,8 @@ namespace Jackett.Common.Indexers
|
|||||||
|
|
||||||
public string Link { get; private set; }
|
public string Link { get; private set; }
|
||||||
|
|
||||||
|
public string InfoHash { get; private set; }
|
||||||
|
|
||||||
public string PublishDate { get; private set; }
|
public string PublishDate { get; private set; }
|
||||||
|
|
||||||
public string Size { get; private set; }
|
public string Size { get; private set; }
|
||||||
@@ -262,8 +280,10 @@ namespace Jackett.Common.Indexers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private bool IsValid()
|
private bool IsValid()
|
||||||
{
|
{
|
||||||
return !(string.IsNullOrWhiteSpace(Title) ||
|
var missingBothHashAndLink = string.IsNullOrWhiteSpace(Link) && string.IsNullOrWhiteSpace(InfoHash);
|
||||||
string.IsNullOrWhiteSpace(Link) ||
|
|
||||||
|
return !(missingBothHashAndLink ||
|
||||||
|
string.IsNullOrWhiteSpace(Title) ||
|
||||||
string.IsNullOrWhiteSpace(PublishDate) ||
|
string.IsNullOrWhiteSpace(PublishDate) ||
|
||||||
string.IsNullOrWhiteSpace(Size) ||
|
string.IsNullOrWhiteSpace(Size) ||
|
||||||
string.IsNullOrWhiteSpace(Quality));
|
string.IsNullOrWhiteSpace(Quality));
|
||||||
@@ -281,6 +301,7 @@ namespace Jackett.Common.Indexers
|
|||||||
Quality = feedItem.Quality;
|
Quality = feedItem.Quality;
|
||||||
Size = ReleaseInfo.GetBytes(feedItem.Size);
|
Size = ReleaseInfo.GetBytes(feedItem.Size);
|
||||||
DetailsLink = ParseDetailsLink(feedItem.Description);
|
DetailsLink = ParseDetailsLink(feedItem.Description);
|
||||||
|
InfoHash = feedItem.InfoHash;
|
||||||
|
|
||||||
if (Uri.TryCreate(feedItem.Link, UriKind.Absolute, out Uri magnetUri))
|
if (Uri.TryCreate(feedItem.Link, UriKind.Absolute, out Uri magnetUri))
|
||||||
{
|
{
|
||||||
@@ -321,6 +342,8 @@ namespace Jackett.Common.Indexers
|
|||||||
|
|
||||||
public Uri MagnetLink { get; }
|
public Uri MagnetLink { get; }
|
||||||
|
|
||||||
|
public string InfoHash { get; }
|
||||||
|
|
||||||
public Uri DetailsLink { get; set; }
|
public Uri DetailsLink { get; set; }
|
||||||
|
|
||||||
public DateTimeOffset? PublishDate { get; }
|
public DateTimeOffset? PublishDate { get; }
|
||||||
@@ -342,8 +365,6 @@ namespace Jackett.Common.Indexers
|
|||||||
{ " - (?<detail>[0-9]+) ", " - " } // "<title> - <episode> ..."
|
{ " - (?<detail>[0-9]+) ", " - " } // "<title> - <episode> ..."
|
||||||
};
|
};
|
||||||
|
|
||||||
private const string TITLE_URL_SLUG_REGEX = @"^(?<url_slug>.+) -";
|
|
||||||
|
|
||||||
public string Parse(string title)
|
public string Parse(string title)
|
||||||
{
|
{
|
||||||
var results = SearchTitleForDetails(title, new Dictionary<string, Dictionary<string, string>> {
|
var results = SearchTitleForDetails(title, new Dictionary<string, Dictionary<string, string>> {
|
||||||
|
Reference in New Issue
Block a user