From 1d54a9c3be4e69fe1fbc86d0baee9dbc5e575196 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 15 Oct 2023 23:20:55 +0300 Subject: [PATCH] audiobookbay: check if cover image has valid URI Fixes #14767 --- src/Jackett.Common/Indexers/AudioBookBay.cs | 24 ++++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/Jackett.Common/Indexers/AudioBookBay.cs b/src/Jackett.Common/Indexers/AudioBookBay.cs index 71d500121..ec47b8fa0 100644 --- a/src/Jackett.Common/Indexers/AudioBookBay.cs +++ b/src/Jackett.Common/Indexers/AudioBookBay.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; using AngleSharp.Dom; using AngleSharp.Html.Dom; using AngleSharp.Html.Parser; +using Jackett.Common.Extensions; using Jackett.Common.Models; using Jackett.Common.Models.IndexerConfig; 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(); var categories = category.SelectMany(MapTrackerCatDescToNewznab).Distinct().ToList(); - var release = new ReleaseInfo + releases.Add(new ReleaseInfo { Guid = details, Details = details, @@ -269,21 +270,28 @@ namespace Jackett.Common.Indexers Size = size, Seeders = 1, Peers = 1, + Poster = GetPosterUrl(row.QuerySelector("img[src]")?.GetAttribute("src")?.Trim()), PublishDate = publishDate, DownloadVolumeFactor = 0, 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; } + 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) { var parser = new HtmlParser();