| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 
							- using System;
 
- using System.Globalization;
 
- using System.IO;
 
- using System.Linq;
 
- 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 MultiPartResult ParseMultiPart(string path)
 
-         {
 
-             var result = new MultiPartResult();
 
-             var filename = Path.GetFileName(path);
 
-             if (string.IsNullOrEmpty(filename))
 
-             {
 
-                 return result;
 
-             }
 
-             // 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+", " ");
 
-             filename = filename.TrimStart();
 
-             foreach (var prefix in _options.AlbumStackingPrefixes)
 
-             {
 
-                 if (filename.IndexOf(prefix, StringComparison.OrdinalIgnoreCase) == 0)
 
-                 {
 
-                     var tmp = filename.Substring(prefix.Length);
 
-                     tmp = tmp.Trim().Split(' ').FirstOrDefault() ?? string.Empty;
 
-                     if (int.TryParse(tmp, NumberStyles.Integer, CultureInfo.InvariantCulture, out var val))
 
-                     {
 
-                         result.IsMultiPart = true;
 
-                         break;
 
-                     }
 
-                 }
 
-             }
 
-             return result;
 
-         }
 
-     }
 
- }
 
 
  |