From a4e41cd978a32b8146bcadb15dd652062f7ec752 Mon Sep 17 00:00:00 2001 From: Stepan Goremykin Date: Wed, 20 Mar 2024 00:35:45 +0100 Subject: [PATCH] Fix Contains for sets --- .../Library/Resolvers/PhotoResolver.cs | 6 ++---- .../MediaEncoding/EncodingHelper.cs | 2 +- .../Manager/ProviderManager.cs | 2 +- MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs | 3 +-- src/Jellyfin.Drawing.Skia/SkiaEncoder.cs | 16 +++++++++------- src/Jellyfin.Drawing/ImageProcessor.cs | 7 ++++--- src/Jellyfin.Extensions/EnumerableExtensions.cs | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs index 0934555b23..6bc186203a 100644 --- a/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs @@ -4,13 +4,11 @@ using System.Linq; using Emby.Naming.Common; using Emby.Naming.Video; using Jellyfin.Data.Enums; -using Jellyfin.Extensions; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Resolvers; -using MediaBrowser.Model.Entities; namespace Emby.Server.Implementations.Library.Resolvers { @@ -103,8 +101,8 @@ namespace Emby.Server.Implementations.Library.Resolvers { ArgumentNullException.ThrowIfNull(path); - var extension = Path.GetExtension(path.AsSpan()).TrimStart('.'); - if (!imageProcessor.SupportedInputFormats.Contains(extension, StringComparison.OrdinalIgnoreCase)) + var extension = Path.GetExtension(path.AsSpan()).TrimStart('.').ToString(); + if (!imageProcessor.SupportedInputFormats.Contains(extension)) { return false; } diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index cdaa6a6cd2..65188b7473 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -2306,7 +2306,7 @@ namespace MediaBrowser.Controller.MediaEncoding // Source and target codecs must match if (string.IsNullOrEmpty(audioStream.Codec) - || !supportedAudioCodecs.Contains(audioStream.Codec, StringComparison.OrdinalIgnoreCase)) + || !supportedAudioCodecs.Contains(audioStream.Codec, StringComparer.OrdinalIgnoreCase)) { return false; } diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index f340349641..d8d98d6020 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -631,7 +631,7 @@ namespace MediaBrowser.Providers.Manager /// public Task SaveMetadataAsync(BaseItem item, ItemUpdateType updateType, IEnumerable savers) - => SaveMetadataAsync(item, updateType, _savers.Where(i => savers.Contains(i.Name, StringComparison.OrdinalIgnoreCase))); + => SaveMetadataAsync(item, updateType, _savers.Where(i => savers.Contains(i.Name, StringComparer.OrdinalIgnoreCase))); /// /// Saves the metadata. diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs index 1399ac307a..6cda9a9017 100644 --- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs @@ -11,7 +11,6 @@ using System.Threading; using System.Threading.Tasks; using System.Xml; using Jellyfin.Data.Enums; -using Jellyfin.Extensions; using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; @@ -1005,7 +1004,7 @@ namespace MediaBrowser.XbmcMetadata.Savers var name = reader.Name; if (!_commonTags.Contains(name) - && !xmlTagsUsed.Contains(name, StringComparison.OrdinalIgnoreCase)) + && !xmlTagsUsed.Contains(name, StringComparer.OrdinalIgnoreCase)) { writer.WriteNode(reader, false); } diff --git a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs index a158e5c866..c5cbc240d6 100644 --- a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs +++ b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs @@ -1,7 +1,9 @@ using System; +using System.Collections.Frozen; using System.Collections.Generic; using System.Globalization; using System.IO; +using System.Linq; using BlurHashSharp.SkiaSharp; using Jellyfin.Extensions; using MediaBrowser.Common.Configuration; @@ -69,8 +71,8 @@ public class SkiaEncoder : IImageEncoder public bool SupportsImageEncoding => true; /// - public IReadOnlyCollection SupportedInputFormats => - new HashSet(StringComparer.OrdinalIgnoreCase) + public IReadOnlyCollection SupportedInputFormats { get; } = + new[] { "jpeg", "jpg", @@ -91,7 +93,7 @@ public class SkiaEncoder : IImageEncoder "nef", "arw", SvgFormat - }; + }.ToFrozenSet(StringComparer.OrdinalIgnoreCase); /// public IReadOnlyCollection SupportedOutputFormats @@ -187,8 +189,8 @@ public class SkiaEncoder : IImageEncoder { ArgumentException.ThrowIfNullOrEmpty(path); - var extension = Path.GetExtension(path.AsSpan()).TrimStart('.'); - if (!SupportedInputFormats.Contains(extension, StringComparison.OrdinalIgnoreCase) + var extension = Path.GetExtension(path.AsSpan()).TrimStart('.').ToString(); + if (!SupportedInputFormats.Contains(extension) || extension.Equals(SvgFormat, StringComparison.OrdinalIgnoreCase)) { _logger.LogDebug("Unable to compute blur hash due to unsupported format: {ImagePath}", path); @@ -422,8 +424,8 @@ public class SkiaEncoder : IImageEncoder ArgumentException.ThrowIfNullOrEmpty(inputPath); ArgumentException.ThrowIfNullOrEmpty(outputPath); - var inputFormat = Path.GetExtension(inputPath.AsSpan()).TrimStart('.'); - if (!SupportedInputFormats.Contains(inputFormat, StringComparison.OrdinalIgnoreCase)) + var inputFormat = Path.GetExtension(inputPath.AsSpan()).TrimStart('.').ToString(); + if (!SupportedInputFormats.Contains(inputFormat)) { _logger.LogDebug("Unable to encode image due to unsupported format: {ImagePath}", inputPath); return inputPath; diff --git a/src/Jellyfin.Drawing/ImageProcessor.cs b/src/Jellyfin.Drawing/ImageProcessor.cs index 213328a39f..5ce4d46bf7 100644 --- a/src/Jellyfin.Drawing/ImageProcessor.cs +++ b/src/Jellyfin.Drawing/ImageProcessor.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Frozen; using System.Collections.Generic; using System.Globalization; using System.IO; @@ -75,8 +76,8 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable private string ResizedImageCachePath => Path.Combine(_appPaths.ImageCachePath, "resized-images"); /// - public IReadOnlyCollection SupportedInputFormats => - new HashSet(StringComparer.OrdinalIgnoreCase) + public IReadOnlyCollection SupportedInputFormats { get; } = + new[] { "tiff", "tif", @@ -103,7 +104,7 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable "ktx", "pkm", "wbmp" - }; + }.ToFrozenSet(StringComparer.OrdinalIgnoreCase); /// public bool SupportsImageCollageCreation => _imageEncoder.SupportsImageCollageCreation; diff --git a/src/Jellyfin.Extensions/EnumerableExtensions.cs b/src/Jellyfin.Extensions/EnumerableExtensions.cs index fd46358a4f..ffb79ba20a 100644 --- a/src/Jellyfin.Extensions/EnumerableExtensions.cs +++ b/src/Jellyfin.Extensions/EnumerableExtensions.cs @@ -16,7 +16,7 @@ public static class EnumerableExtensions /// The string comparison. /// A value indicating whether the value is contained in the collection. /// The source is null. - public static bool Contains(this IEnumerable source, ReadOnlySpan value, StringComparison stringComparison) + public static bool Contains(this IReadOnlyList source, ReadOnlySpan value, StringComparison stringComparison) { ArgumentNullException.ThrowIfNull(source);