From cfce8f987f076968826f1ace672b8a63ba52aaaf Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 12 Jan 2025 19:02:51 +0200 Subject: [PATCH] animebytes: improve M2TS and ISO titles for BR-DISK detection --- .../Extensions/IEnumerableExtensions.cs | 9 +++++ .../Indexers/Definitions/AnimeBytes.cs | 39 ++++++++++++------- 2 files changed, 33 insertions(+), 15 deletions(-) create mode 100644 src/Jackett.Common/Extensions/IEnumerableExtensions.cs diff --git a/src/Jackett.Common/Extensions/IEnumerableExtensions.cs b/src/Jackett.Common/Extensions/IEnumerableExtensions.cs new file mode 100644 index 000000000..bc41d1f4e --- /dev/null +++ b/src/Jackett.Common/Extensions/IEnumerableExtensions.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace Jackett.Common.Extensions +{ + public static class IEnumerableExtensions + { + public static HashSet ToHashSet(this IEnumerable source, IEqualityComparer comparer = null) => new (source, comparer); + } +} diff --git a/src/Jackett.Common/Indexers/Definitions/AnimeBytes.cs b/src/Jackett.Common/Indexers/Definitions/AnimeBytes.cs index a80c6653b..041d27c57 100644 --- a/src/Jackett.Common/Indexers/Definitions/AnimeBytes.cs +++ b/src/Jackett.Common/Indexers/Definitions/AnimeBytes.cs @@ -348,30 +348,39 @@ namespace Jackett.Common.Indexers.Definitions .ToList(); propertyList.RemoveAll(p => _ExcludedProperties.Any(p.ContainsIgnoreCase)); - var properties = new HashSet(propertyList); + var properties = propertyList.ToHashSet(); - if (torrent.Files.Any(f => f.FileName.ContainsIgnoreCase("Remux"))) - { - var resolutionProperty = properties.FirstOrDefault(_RemuxResolutions.ContainsIgnoreCase); - - if (resolutionProperty.IsNotNullOrWhiteSpace()) - { - properties.Add($"{resolutionProperty} Remux"); - } - } - - if (properties.Any(p => p.StartsWithIgnoreCase("M2TS"))) + if (properties.Any(p => p.ContainsIgnoreCase("M2TS"))) { properties.Add("BR-DISK"); } - if (!AllowRaws && - categoryName == "Anime" && - properties.Any(p => p.StartsWithIgnoreCase("RAW") || p.Contains("BR-DISK"))) + var isBluRayDisk = properties.Any(p => p.ContainsIgnoreCase("RAW") || p.ContainsIgnoreCase("M2TS") || p.ContainsIgnoreCase("ISO")); + + if (!AllowRaws && categoryName == "Anime" && isBluRayDisk) { continue; } + properties = properties + .Select(property => + { + if (isBluRayDisk) + { + property = Regex.Replace(property, @"\b(H\.?265)\b", "HEVC", RegexOptions.Compiled | RegexOptions.IgnoreCase); + property = Regex.Replace(property, @"\b(H\.?264)\b", "AVC", RegexOptions.Compiled | RegexOptions.IgnoreCase); + } + + if (torrent.Files.Any(f => f.FileName.ContainsIgnoreCase("Remux")) + && _RemuxResolutions.ContainsIgnoreCase(property)) + { + property += " Remux"; + } + + return property; + }) + .ToHashSet(); + int? season = null; int? episode = null;