using System; using System.IO; using Emby.Naming.Common; using Jellyfin.Extensions; namespace Emby.Naming.Video { /// /// Resolve if file is stub (.disc). /// public static class StubResolver { /// /// Tries to resolve if file is stub (.disc). /// /// Path to file. /// NamingOptions containing StubFileExtensions and StubTypes. /// Stub type. /// True if file is a stub. public static bool TryResolveFile(string path, NamingOptions options, out string? stubType) { stubType = default; if (string.IsNullOrEmpty(path)) { return false; } var extension = Path.GetExtension(path.AsSpan()); if (!options.StubFileExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase)) { return false; } var token = Path.GetExtension(Path.GetFileNameWithoutExtension(path.AsSpan())).TrimStart('.'); foreach (var rule in options.StubTypes) { if (token.Equals(rule.Token, StringComparison.OrdinalIgnoreCase)) { stubType = rule.StubType; return true; } } return true; } } }