public CleanDateTimeResult Clean(string name) { var originalName = name; // Dummy up a file extension because the expressions will fail without one if (string.IsNullOrWhiteSpace(Path.GetExtension(name))) { name += ".mkv"; } var result = _options.CleanDateTimes.Select(i => Clean(name, i)) .FirstOrDefault(i => i.HasChanged) ?? new CleanDateTimeResult { Name = originalName }; if (result.HasChanged) { return(result); } // Make a second pass, running clean string first var cleanStringResult = new CleanStringParser(_iRegexProvider).Clean(name, _options.CleanStrings); if (!cleanStringResult.HasChanged) { return(result); } return(_options.CleanDateTimes.Select(i => Clean(cleanStringResult.Name, i)) .FirstOrDefault(i => i.HasChanged) ?? result); }
public CleanDateTimeResult Clean(string name) { var originalName = name; try { var extension = Path.GetExtension(name) ?? string.Empty; // Check supported extensions if (!_options.VideoFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase) && !_options.AudioFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase)) { // Dummy up a file extension because the expressions will fail without one // This is tricky because we can't just check Path.GetExtension for empty // If the input is "St. Vincent (2014)", it will produce ". Vincent (2014)" as the extension name += ".mkv"; } } catch (ArgumentException) { } var result = _options.CleanDateTimes.Select(i => Clean(name, i)) .FirstOrDefault(i => i.HasChanged) ?? new CleanDateTimeResult { Name = originalName }; if (result.HasChanged) { return(result); } // Make a second pass, running clean string first var cleanStringResult = new CleanStringParser(_iRegexProvider).Clean(name, _options.CleanStrings); if (!cleanStringResult.HasChanged) { return(result); } return(_options.CleanDateTimes.Select(i => Clean(cleanStringResult.Name, i)) .FirstOrDefault(i => i.HasChanged) ?? result); }
public CleanDateTimeResult Clean(string name) { var originalName = name; try { var extension = Path.GetExtension(name) ?? string.Empty; // Check supported extensions if (!_options.VideoFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase) && !_options.AudioFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase)) { // Dummy up a file extension because the expressions will fail without one // This is tricky because we can't just check Path.GetExtension for empty // If the input is "St. Vincent (2014)", it will produce ". Vincent (2014)" as the extension name += ".mkv"; } } catch (ArgumentException) { } var result = _options.CleanDateTimes.Select(i => Clean(name, i)) .FirstOrDefault(i => i.HasChanged) ?? new CleanDateTimeResult { Name = originalName }; if (result.HasChanged) { return result; } // Make a second pass, running clean string first var cleanStringResult = new CleanStringParser(_iRegexProvider).Clean(name, _options.CleanStrings); if (!cleanStringResult.HasChanged) { return result; } return _options.CleanDateTimes.Select(i => Clean(cleanStringResult.Name, i)) .FirstOrDefault(i => i.HasChanged) ?? result; }