From 5f40d3649d57ae4961d87628ad775cfce7c5d636 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Mon, 6 Nov 2023 16:03:24 +0200 Subject: [PATCH] indexers: filter releases without title --- src/Jackett.Common/Indexers/BaseIndexer.cs | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/Jackett.Common/Indexers/BaseIndexer.cs b/src/Jackett.Common/Indexers/BaseIndexer.cs index aed082602..574af7830 100644 --- a/src/Jackett.Common/Indexers/BaseIndexer.cs +++ b/src/Jackett.Common/Indexers/BaseIndexer.cs @@ -163,7 +163,7 @@ namespace Jackett.Common.Indexers protected virtual IEnumerable FilterResults(TorznabQuery query, IEnumerable results) { - var filteredResults = results; + var filteredResults = results.Where(IsValidRelease); // filter results with wrong categories if (query.Categories.Length > 0) @@ -179,7 +179,9 @@ namespace Jackett.Common.Indexers // eliminate excess results if (query.Limit > 0) + { filteredResults = filteredResults.Take(query.Limit); + } return filteredResults; } @@ -194,32 +196,57 @@ namespace Jackett.Common.Indexers // fix publish date // some trackers do not keep their clocks up to date and can be ~20 minutes out! if (!EnvironmentUtil.IsDebug && r.PublishDate > DateTime.Now) + { r.PublishDate = DateTime.Now; + } // generate magnet link from info hash (not allowed for private sites) if (r.MagnetUri == null && !string.IsNullOrWhiteSpace(r.InfoHash) && Type != "private") + { r.MagnetUri = MagnetUtil.InfoHashToPublicMagnet(r.InfoHash, r.Title); + } // generate info hash from magnet link if (r.MagnetUri != null && string.IsNullOrWhiteSpace(r.InfoHash)) + { r.InfoHash = MagnetUtil.MagnetToInfoHash(r.MagnetUri); + } // set guid if (r.Guid == null) { if (r.Link != null) + { r.Guid = r.Link; + } else if (r.MagnetUri != null) + { r.Guid = r.MagnetUri; + } else if (r.Details != null) + { r.Guid = r.Details; + } } return r; }); + return fixedResults; } + protected virtual bool IsValidRelease(ReleaseInfo release) + { + if (release.Title.IsNullOrWhiteSpace()) + { + logger.Error("Invalid Release: '{0}' from indexer: {1}. No title provided.", release.Details, Name); + + return false; + } + + return true; + } + public virtual bool CanHandleQuery(TorznabQuery query) { if (query == null)