diff options
| author | Claus Vium <cvium@users.noreply.github.com> | 2022-01-28 12:21:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-28 12:21:40 +0100 |
| commit | 488ce510321ebcec36bccc45398feffe725cb5f0 (patch) | |
| tree | 9a7a52acf8169a7406cd41b166066198cfd19124 /MediaBrowser.LocalMetadata | |
| parent | 42724ef4118ca8225da537db0c087d6ae86dbae1 (diff) | |
Remove some allocations (#7246)
Diffstat (limited to 'MediaBrowser.LocalMetadata')
| -rw-r--r-- | MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs b/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs index 7dc6149f4..70fd68129 100644 --- a/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs +++ b/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs @@ -291,7 +291,7 @@ namespace MediaBrowser.LocalMetadata.Images foreach (var name in imageFileNames) { - if (AddImage(files, images, imagePrefix + name, ImageType.Primary)) + if (AddImage(files, images, name, ImageType.Primary, imagePrefix)) { return; } @@ -317,7 +317,7 @@ namespace MediaBrowser.LocalMetadata.Images if (!string.IsNullOrEmpty(name)) { - AddImage(files, images, imagePrefix + name + "-fanart", ImageType.Backdrop); + AddImage(files, images, name + "-fanart", ImageType.Backdrop, imagePrefix); // Support without the prefix if it's in it's own folder if (!isInMixedFolder) @@ -436,7 +436,7 @@ namespace MediaBrowser.LocalMetadata.Images private bool AddImage(List<FileSystemMetadata> files, List<LocalImageInfo> images, string name, string imagePrefix, bool isInMixedFolder, ImageType type) { - var added = AddImage(files, images, imagePrefix + name, type); + var added = AddImage(files, images, name, type, imagePrefix); if (!isInMixedFolder) { @@ -449,32 +449,39 @@ namespace MediaBrowser.LocalMetadata.Images return added; } - private bool AddImage(List<FileSystemMetadata> files, List<LocalImageInfo> images, string name, ImageType type) + private static bool AddImage(IReadOnlyList<FileSystemMetadata> files, List<LocalImageInfo> images, string name, ImageType type, string? prefix = null) { - var image = GetImage(files, name); + var image = GetImage(files, name, prefix); - if (image != null) + if (image == null) { - images.Add(new LocalImageInfo - { - FileInfo = image, - Type = type - }); - - return true; + return false; } - return false; + images.Add(new LocalImageInfo + { + FileInfo = image, + Type = type + }); + + return true; } - private static FileSystemMetadata? GetImage(IReadOnlyList<FileSystemMetadata> files, string name) + private static FileSystemMetadata? GetImage(IReadOnlyList<FileSystemMetadata> files, string name, string? prefix = null) { + var fileNameLength = name.Length + (prefix?.Length ?? 0); for (var i = 0; i < files.Count; i++) { var file = files[i]; - if (!file.IsDirectory - && file.Length > 0 - && Path.GetFileNameWithoutExtension(file.FullName.AsSpan()).Equals(name, StringComparison.OrdinalIgnoreCase)) + if (file.IsDirectory || file.Length <= 0) + { + continue; + } + + var fileName = Path.GetFileNameWithoutExtension(file.FullName.AsSpan()); + if (fileName.Length == fileNameLength + && fileName.StartsWith(prefix, StringComparison.OrdinalIgnoreCase) + && fileName.EndsWith(name, StringComparison.OrdinalIgnoreCase)) { return file; } |
