mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-02-28 01:00:43 +01:00
fixed: Philips DVBC.XML files with frequency values in Hz instead of MHz caused an overflow exception
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Text;
|
||||
@@ -165,5 +166,32 @@ namespace ChanSort.Api
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseInt()
|
||||
protected int ParseInt(string input)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(input))
|
||||
return 0;
|
||||
if (input.Length > 2 && input[0] == '0' && char.ToLower(input[1]) == 'x')
|
||||
return int.Parse(input.Substring(2), NumberStyles.HexNumber);
|
||||
if (int.TryParse(input, out var value))
|
||||
return value;
|
||||
return 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseInt()
|
||||
protected long ParseLong(string input)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(input))
|
||||
return 0;
|
||||
if (input.Length > 2 && input[0] == '0' && char.ToLower(input[1]) == 'x')
|
||||
return long.Parse(input.Substring(2), NumberStyles.HexNumber);
|
||||
if (long.TryParse(input, out var value))
|
||||
return value;
|
||||
return 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -224,6 +224,12 @@ namespace ChanSort.Api
|
||||
|
||||
public string GetDvbcChannelName(decimal freqInMhz)
|
||||
{
|
||||
// in case the parameter is in Hz or kHz, correct it to MHz to avoid overflow errors. 2 GHz is the largest plausible frequency
|
||||
if (freqInMhz > 2000)
|
||||
freqInMhz /= 1000;
|
||||
if (freqInMhz > 2000)
|
||||
freqInMhz /= 1000;
|
||||
|
||||
return dvbcChannels.TryGet((int)(freqInMhz * 1000)) ?? dvbcChannels.TryGet((int)((freqInMhz-1) * 1000)) ?? "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,8 +225,9 @@ namespace ChanSort.Loader.PhilipsXml
|
||||
chan.OriginalNetworkId = ParseInt(data.TryGet("Onid"));
|
||||
chan.TransportStreamId = ParseInt(data.TryGet("Tsid"));
|
||||
chan.ServiceId = ParseInt(data.TryGet("Sid"));
|
||||
var freq = ParseInt(data.TryGet("Frequency"));
|
||||
chan.FreqInMhz = freq;
|
||||
chan.FreqInMhz = ParseInt(data.TryGet("Frequency")); ;
|
||||
if (chan.FreqInMhz > 100000)
|
||||
chan.FreqInMhz /= 1000;
|
||||
chan.ServiceType = ParseInt(data.TryGet("ServiceType"));
|
||||
chan.SignalSource |= LookupData.Instance.IsRadioTvOrData(chan.ServiceType);
|
||||
chan.SymbolRate = ParseInt(data.TryGet("SymbolRate"));
|
||||
@@ -255,19 +256,6 @@ namespace ChanSort.Loader.PhilipsXml
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseInt()
|
||||
private int ParseInt(string input)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(input))
|
||||
return 0;
|
||||
if (input.Length > 2 && input[0] == '0' && char.ToLower(input[1]) == 'x')
|
||||
return int.Parse(input.Substring(2), NumberStyles.HexNumber);
|
||||
if (int.TryParse(input, out var value))
|
||||
return value;
|
||||
return 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DecodeName()
|
||||
private string DecodeName(string input)
|
||||
{
|
||||
|
||||
@@ -556,19 +556,6 @@ namespace ChanSort.Loader.Sony
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseInt()
|
||||
private int ParseInt(string input)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(input))
|
||||
return 0;
|
||||
if (input.Length > 2 && input[0] == '0' && char.ToLower(input[1]) == 'x')
|
||||
return int.Parse(input.Substring(2), NumberStyles.HexNumber);
|
||||
if (int.TryParse(input, out var value))
|
||||
return value;
|
||||
return 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region Save()
|
||||
|
||||
@@ -4,6 +4,7 @@ ChanSort Change Log
|
||||
2019-11-11
|
||||
- LG hospitality TVs using files names like xx[modelname].TLL can now be loaded
|
||||
(They use the naming pattern of binary TLL files, but contain GlobalClone/XML text data)
|
||||
- fixed: Philips DVBC.XML files with frequency values in Hz instead of MHz caused an overflow exception
|
||||
|
||||
2019-11-10
|
||||
- Sony: added support for independent favorite list ordering for Android channel lists (n)
|
||||
|
||||
Reference in New Issue
Block a user