diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-01-14 14:57:08 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-01-14 14:57:08 -0500 |
| commit | 95ceddb7d9c817f2e9233bd5116e7cb8ee76fc49 (patch) | |
| tree | 2517ccb8609ed192edd4068c60edbc4fac9d1172 | |
| parent | 4a73875ef3e5f754c27e2682548f0249fc88e480 (diff) | |
update m3uparser
| -rw-r--r-- | Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs | 17 | ||||
| -rw-r--r-- | MediaBrowser.Tests/M3uParserTest.cs | 12 |
2 files changed, 20 insertions, 9 deletions
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs index 5be94b507..06a7a0c2d 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs @@ -14,6 +14,7 @@ using MediaBrowser.Controller; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Extensions; namespace Emby.Server.Implementations.LiveTv.TunerHosts { @@ -273,20 +274,18 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts var reg = new Regex(@"([a-z0-9\-_]+)=\""([^""]+)\""", RegexOptions.IgnoreCase); var matches = reg.Matches(line); - var minIndex = int.MaxValue; + + remaining = line; + foreach (Match match in matches) { - dict[match.Groups[1].Value] = match.Groups[2].Value; - minIndex = Math.Min(minIndex, match.Index); - } + var key = match.Groups[1].Value; + var value = match.Groups[2].Value; - if (minIndex > 0 && minIndex < line.Length) - { - line = line.Substring(0, minIndex); + dict[match.Groups[1].Value] = match.Groups[2].Value; + remaining = remaining.Replace(key + "=\"" + value + "\"", string.Empty, StringComparison.OrdinalIgnoreCase); } - remaining = line; - return dict; } } diff --git a/MediaBrowser.Tests/M3uParserTest.cs b/MediaBrowser.Tests/M3uParserTest.cs index be7708457..3285d0740 100644 --- a/MediaBrowser.Tests/M3uParserTest.cs +++ b/MediaBrowser.Tests/M3uParserTest.cs @@ -52,5 +52,17 @@ namespace MediaBrowser.Tests Assert.AreEqual("Movies!", result[0].Name); Assert.AreEqual("3.2", result[0].Number); } + + [TestMethod] + public void TestFormat4() + { + BaseExtensions.CryptographyProvider = new CryptographyProvider(); + + var result = new M3uParser(new NullLogger(), null, null, null).ParseString("#EXTINF:0 tvg-id=\"abckabclosangeles.path.to\" tvg-logo=\"path.to / channel_logos / abckabclosangeles.png\", ABC KABC Los Angeles\nhttp://mystream", "-", "-"); + Assert.AreEqual(1, result.Count); + + Assert.IsNull(result[0].Number); + Assert.AreEqual("ABC KABC Los Angeles", result[0].Name); + } } } |
