aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/LiveTv/TunerHosts
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-02-04 18:32:16 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-02-04 18:32:16 -0500
commit851364f84fb690c7701bb097d5791ca7e5435219 (patch)
tree67f122e1b195594bd0be64bce185b7e520856a3b /Emby.Server.Implementations/LiveTv/TunerHosts
parentac3ec6d1856b59c7b2ee1a2547c88a350405d749 (diff)
rework guide mappings
Diffstat (limited to 'Emby.Server.Implementations/LiveTv/TunerHosts')
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs64
1 files changed, 39 insertions, 25 deletions
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs
index 088c264f04..34d0dd8535 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs
@@ -113,17 +113,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
}
}
- var startingNumber = 1;
- foreach (var channel in channels)
- {
- if (!string.IsNullOrWhiteSpace(channel.Number))
- {
- continue;
- }
-
- channel.Number = startingNumber.ToString(CultureInfo.InvariantCulture);
- startingNumber++;
- }
return channels;
}
@@ -147,10 +136,11 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
channel.Name = GetChannelName(extInf, attributes);
channel.Number = GetChannelNumber(extInf, attributes, mediaUrl);
- if (attributes.TryGetValue("tvg-id", out value))
+ var channelId = GetTunerChannelId(attributes);
+ if (!string.IsNullOrWhiteSpace(channelId))
{
- channel.Id = value;
- channel.TunerChannelId = value;
+ channel.Id = channelId;
+ channel.TunerChannelId = channelId;
}
return channel;
@@ -186,9 +176,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
numberString = numberString.Trim();
}
- if (string.IsNullOrWhiteSpace(numberString) ||
- string.Equals(numberString, "-1", StringComparison.OrdinalIgnoreCase) ||
- string.Equals(numberString, "0", StringComparison.OrdinalIgnoreCase))
+ if (!IsValidChannelNumber(numberString))
{
string value;
if (attributes.TryGetValue("tvg-id", out value))
@@ -206,9 +194,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
numberString = numberString.Trim();
}
- if (string.IsNullOrWhiteSpace(numberString) ||
- string.Equals(numberString, "-1", StringComparison.OrdinalIgnoreCase) ||
- string.Equals(numberString, "0", StringComparison.OrdinalIgnoreCase))
+ if (!IsValidChannelNumber(numberString))
{
string value;
if (attributes.TryGetValue("channel-id", out value))
@@ -222,9 +208,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
numberString = numberString.Trim();
}
- if (string.IsNullOrWhiteSpace(numberString) ||
- string.Equals(numberString, "-1", StringComparison.OrdinalIgnoreCase) ||
- string.Equals(numberString, "0", StringComparison.OrdinalIgnoreCase))
+ if (!IsValidChannelNumber(numberString))
{
numberString = null;
}
@@ -239,8 +223,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
numberString = Path.GetFileNameWithoutExtension(mediaUrl.Split('/').Last());
- double value;
- if (!double.TryParse(numberString, NumberStyles.Any, CultureInfo.InvariantCulture, out value))
+ if (!IsValidChannelNumber(numberString))
{
numberString = null;
}
@@ -250,6 +233,24 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
return numberString;
}
+ private bool IsValidChannelNumber(string numberString)
+ {
+ if (string.IsNullOrWhiteSpace(numberString) ||
+ string.Equals(numberString, "-1", StringComparison.OrdinalIgnoreCase) ||
+ string.Equals(numberString, "0", StringComparison.OrdinalIgnoreCase))
+ {
+ return false;
+ }
+
+ double value;
+ if (!double.TryParse(numberString, NumberStyles.Any, CultureInfo.InvariantCulture, out value))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
private string GetChannelName(string extInf, Dictionary<string, string> attributes)
{
var nameParts = extInf.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
@@ -295,6 +296,19 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
return name;
}
+ private string GetTunerChannelId(Dictionary<string, string> attributes)
+ {
+ string result;
+ attributes.TryGetValue("tvg-id", out result);
+
+ if (string.IsNullOrWhiteSpace(result))
+ {
+ attributes.TryGetValue("channel-id", out result);
+ }
+
+ return result;
+ }
+
private Dictionary<string, string> ParseExtInf(string line, out string remaining)
{
var dict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);