| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | 
							- #nullable enable
 
- #pragma warning disable CS1591
 
- using System;
 
- using System.Globalization;
 
- using System.IO;
 
- using System.Text.RegularExpressions;
 
- using Emby.Naming.Common;
 
- namespace Emby.Naming.Audio
 
- {
 
-     public class AlbumParser
 
-     {
 
-         private readonly NamingOptions _options;
 
-         public AlbumParser(NamingOptions options)
 
-         {
 
-             _options = options;
 
-         }
 
-         public bool IsMultiPart(string path)
 
-         {
 
-             var filename = Path.GetFileName(path);
 
-             if (filename.Length == 0)
 
-             {
 
-                 return false;
 
-             }
 
-             // TODO: Move this logic into options object
 
-             // Even better, remove the prefixes and come up with regexes
 
-             // But Kodi documentation seems to be weak for audio
 
-             // Normalize
 
-             // Remove whitespace
 
-             filename = filename.Replace('-', ' ');
 
-             filename = filename.Replace('.', ' ');
 
-             filename = filename.Replace('(', ' ');
 
-             filename = filename.Replace(')', ' ');
 
-             filename = Regex.Replace(filename, @"\s+", " ");
 
-             ReadOnlySpan<char> trimmedFilename = filename.TrimStart();
 
-             foreach (var prefix in _options.AlbumStackingPrefixes)
 
-             {
 
-                 if (!trimmedFilename.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
 
-                 {
 
-                     continue;
 
-                 }
 
-                 var tmp = trimmedFilename.Slice(prefix.Length).Trim();
 
-                 int index = tmp.IndexOf(' ');
 
-                 if (index != -1)
 
-                 {
 
-                     tmp = tmp.Slice(0, index);
 
-                 }
 
-                 if (int.TryParse(tmp, NumberStyles.Integer, CultureInfo.InvariantCulture, out _))
 
-                 {
 
-                     return true;
 
-                 }
 
-             }
 
-             return false;
 
-         }
 
-     }
 
- }
 
 
  |