audiobookbay: check if cover image has valid URI

Fixes #14767
This commit is contained in:
Bogdan
2023-10-15 23:20:55 +03:00
parent f440c20108
commit 1d54a9c3be

View File

@@ -10,6 +10,7 @@ using System.Threading.Tasks;
using AngleSharp.Dom; using AngleSharp.Dom;
using AngleSharp.Html.Dom; using AngleSharp.Html.Dom;
using AngleSharp.Html.Parser; using AngleSharp.Html.Parser;
using Jackett.Common.Extensions;
using Jackett.Common.Models; using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig; using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Services.Interfaces; using Jackett.Common.Services.Interfaces;
@@ -259,7 +260,7 @@ namespace Jackett.Common.Indexers
var category = matchCategory.Groups[1].Success ? matchCategory.Groups[1].Value.Split(';').Select(c => c.Trim()).ToList() : new List<string>(); var category = matchCategory.Groups[1].Success ? matchCategory.Groups[1].Value.Split(';').Select(c => c.Trim()).ToList() : new List<string>();
var categories = category.SelectMany(MapTrackerCatDescToNewznab).Distinct().ToList(); var categories = category.SelectMany(MapTrackerCatDescToNewznab).Distinct().ToList();
var release = new ReleaseInfo releases.Add(new ReleaseInfo
{ {
Guid = details, Guid = details,
Details = details, Details = details,
@@ -269,21 +270,28 @@ namespace Jackett.Common.Indexers
Size = size, Size = size,
Seeders = 1, Seeders = 1,
Peers = 1, Peers = 1,
Poster = GetPosterUrl(row.QuerySelector("img[src]")?.GetAttribute("src")?.Trim()),
PublishDate = publishDate, PublishDate = publishDate,
DownloadVolumeFactor = 0, DownloadVolumeFactor = 0,
UploadVolumeFactor = 1 UploadVolumeFactor = 1
}; });
var cover = row.QuerySelector("img[src]")?.GetAttribute("src")?.Trim();
if (!string.IsNullOrEmpty(cover))
release.Poster = cover.StartsWith("http") ? new Uri(cover) : new Uri(SiteLink + cover);
releases.Add(release);
} }
return releases; return releases;
} }
private Uri GetPosterUrl(string cover)
{
if (cover.IsNotNullOrWhiteSpace() &&
Uri.TryCreate(cover.StartsWith("http") ? cover : SiteLink + cover, UriKind.Absolute, out var posterUri) &&
(posterUri.Scheme == Uri.UriSchemeHttp || posterUri.Scheme == Uri.UriSchemeHttps))
{
return posterUri;
}
return null;
}
private static IHtmlDocument ParseHtmlDocument(string response) private static IHtmlDocument ParseHtmlDocument(string response)
{ {
var parser = new HtmlParser(); var parser = new HtmlParser();