From 314a12ffb5dcead93228d6d2ca37f615ae2dad7a Mon Sep 17 00:00:00 2001 From: Qstick Date: Tue, 24 Dec 2019 01:24:47 -0500 Subject: [PATCH] Fixed: Handle 3 digit audio channels --- .../MediaInfo/MediaInfoFormatter.cs | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs b/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs index fbd32ee4a..4469e51cc 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs @@ -458,13 +458,37 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo if (audioChannelPositions.Contains("/")) { - return Regex.Replace(audioChannelPositions, @"^\d+\sobjects", "", + var channelStringList = Regex.Replace(audioChannelPositions, + @"^\d+\sobjects", + "", RegexOptions.Compiled | RegexOptions.IgnoreCase) .Replace("Object Based / ", "") .Split(new string[] {" / "}, StringSplitOptions.RemoveEmptyEntries) .FirstOrDefault() - ?.Split('/') - .Sum(s => decimal.Parse(s, CultureInfo.InvariantCulture)); + ?.Split('/'); + + var positions = default(decimal); + + if (channelStringList == null) + { + return 0; + } + + foreach (var channel in channelStringList) + { + var channelSplit = channel.Split(new string[] { "." }, StringSplitOptions.None); + + if (channelSplit.Count() == 3) + { + positions += decimal.Parse(string.Format("{0}.{1}", channelSplit[1], channelSplit[2])); + } + else + { + positions += decimal.Parse(channel); + } + } + + return positions; } } catch (Exception e)