update m3uparser

This commit is contained in:
Luke Pulverenti 2017-01-14 14:57:08 -05:00
parent 4a73875ef3
commit 95ceddb7d9
2 changed files with 22 additions and 11 deletions

View File

@ -14,6 +14,7 @@ using MediaBrowser.Controller;
using MediaBrowser.Controller.IO; using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Extensions;
namespace Emby.Server.Implementations.LiveTv.TunerHosts 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 reg = new Regex(@"([a-z0-9\-_]+)=\""([^""]+)\""", RegexOptions.IgnoreCase);
var matches = reg.Matches(line); var matches = reg.Matches(line);
var minIndex = int.MaxValue;
foreach (Match match in matches)
{
dict[match.Groups[1].Value] = match.Groups[2].Value;
minIndex = Math.Min(minIndex, match.Index);
}
if (minIndex > 0 && minIndex < line.Length)
{
line = line.Substring(0, minIndex);
}
remaining = line; remaining = line;
foreach (Match match in matches)
{
var key = match.Groups[1].Value;
var value = match.Groups[2].Value;
dict[match.Groups[1].Value] = match.Groups[2].Value;
remaining = remaining.Replace(key + "=\"" + value + "\"", string.Empty, StringComparison.OrdinalIgnoreCase);
}
return dict; return dict;
} }
} }

View File

@ -52,5 +52,17 @@ namespace MediaBrowser.Tests
Assert.AreEqual("Movies!", result[0].Name); Assert.AreEqual("Movies!", result[0].Name);
Assert.AreEqual("3.2", result[0].Number); 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);
}
} }
} }