diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 7c2e72327..cdf8df17f 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -187,6 +187,7 @@ - [HonestlyWhoKnows](https://github.com/honestlywhoknows) - [TheMelmacian](https://github.com/TheMelmacian) - [ItsAllAboutTheCode](https://github.com/ItsAllAboutTheCode) + - [pret0rian8](https://github.com/pret0rian) # Emby Contributors diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEditParser.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEditParser.cs index fd55db4ba..a79d801fb 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEditParser.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEditParser.cs @@ -54,12 +54,23 @@ namespace MediaBrowser.MediaEncoding.Subtitles { break; } - - _logger.LogError( - "{ErrorCount} errors encountered while parsing '{FileExtension}' subtitle using the {SubtitleFormatParser} format parser", - subtitleFormat.ErrorCount, - fileExtension, - subtitleFormat.Name); + else if (subtitleFormat.TryGetErrors(out var errors)) + { + _logger.LogError( + "{ErrorCount} errors encountered while parsing '{FileExtension}' subtitle using the {SubtitleFormatParser} format parser, errors: {Errors}", + subtitleFormat.ErrorCount, + fileExtension, + subtitleFormat.Name, + errors); + } + else + { + _logger.LogError( + "{ErrorCount} errors encountered while parsing '{FileExtension}' subtitle using the {SubtitleFormatParser} format parser", + subtitleFormat.ErrorCount, + fileExtension, + subtitleFormat.Name); + } } if (subtitle.Paragraphs.Count == 0) diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleFormatExtensions.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleFormatExtensions.cs new file mode 100644 index 000000000..88c2bf3db --- /dev/null +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleFormatExtensions.cs @@ -0,0 +1,29 @@ +using System.Diagnostics.CodeAnalysis; +using Nikse.SubtitleEdit.Core.SubtitleFormats; + +namespace MediaBrowser.MediaEncoding.Subtitles; + +internal static class SubtitleFormatExtensions +{ + /// + /// Will try to find errors if supported by provider. + /// + /// The subtitle format. + /// The out errors value. + /// True if errors are available for given format. + public static bool TryGetErrors(this SubtitleFormat format, [NotNullWhen(true)] out string? errors) + { + errors = format switch + { + SubStationAlpha ssa => ssa.Errors, + AdvancedSubStationAlpha assa => assa.Errors, + SubRip subRip => subRip.Errors, + MicroDvd microDvd => microDvd.Errors, + DCinemaSmpte2007 smpte2007 => smpte2007.Errors, + DCinemaSmpte2010 smpte2010 => smpte2010.Errors, + _ => null, + }; + + return !string.IsNullOrWhiteSpace(errors); + } +}