using System.IO; namespace EmbyToolbox.Services; /// Разрешённые контейнеры для извлечения дорожек. public static class TrackExtractionFormats { private static readonly HashSet Extensions = new(StringComparer.OrdinalIgnoreCase) { ".mkv", ".mp4", }; public static bool IsSupportedPath(string path) { if (string.IsNullOrWhiteSpace(path)) { return false; } var ext = Path.GetExtension(path); return !string.IsNullOrWhiteSpace(ext) && Extensions.Contains(ext); } public static string BuildOpenFileFilter() => "MKV и MP4|*.mkv;*.mp4|Все файлы|*.*"; public static IReadOnlyList EnumerateMediaFilesRecursive(string rootDirectory) { if (string.IsNullOrWhiteSpace(rootDirectory) || !Directory.Exists(rootDirectory)) { return Array.Empty(); } var bag = new List(); try { foreach (var file in Directory.EnumerateFiles(rootDirectory, "*.*", SearchOption.AllDirectories)) { if (IsSupportedPath(file)) { bag.Add(Path.GetFullPath(file)); } } } catch (UnauthorizedAccessException) { // игнорируем недоступные подкаталоги } catch (IOException) { } bag.Sort(StringComparer.OrdinalIgnoreCase); return bag; } }