浏览代码

loop over all compatible SubtitleFormats

cvium 3 年之前
父节点
当前提交
78f437401b
共有 1 个文件被更改,包括 15 次插入9 次删除
  1. 15 9
      MediaBrowser.MediaEncoding/Subtitles/SubtitleEditParser.cs

+ 15 - 9
MediaBrowser.MediaEncoding/Subtitles/SubtitleEditParser.cs

@@ -30,17 +30,23 @@ namespace MediaBrowser.MediaEncoding.Subtitles
         /// <inheritdoc />
         public SubtitleTrackInfo Parse(Stream stream, string fileExtension)
         {
-            var subtitleFormat = SubtitleFormat.AllSubtitleFormats.FirstOrDefault(asf => asf.Extension.Equals(fileExtension, StringComparison.OrdinalIgnoreCase));
-            if (subtitleFormat == null)
-            {
-                throw new ArgumentException("Unsupported format: " + fileExtension);
-            }
-
-            var lines = stream.ReadAllLines().ToList();
             var subtitle = new Subtitle();
-            subtitleFormat.LoadSubtitle(subtitle, lines, fileExtension);
-            if (subtitleFormat.ErrorCount > 0)
+            var lines = stream.ReadAllLines().ToList();
+
+            var subtitleFormats = SubtitleFormat.AllSubtitleFormats.Where(asf => asf.Extension.Equals(fileExtension, StringComparison.OrdinalIgnoreCase));
+            foreach (var subtitleFormat in subtitleFormats)
             {
+                if (subtitleFormat == null)
+                {
+                    throw new ArgumentException("Unsupported format: " + fileExtension);
+                }
+
+                subtitleFormat.LoadSubtitle(subtitle, lines, fileExtension);
+                if (subtitleFormat.ErrorCount == 0)
+                {
+                    break;
+                }
+
                 _logger.LogError("{ErrorCount} errors encountered while parsing subtitle", subtitleFormat.ErrorCount);
             }