|
|
|
@ -151,65 +151,72 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
|
|
|
|
public async Task AddMetadata(ListingsProviderInfo info, List<ChannelInfo> channels,
|
|
|
|
|
CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(info.ListingsId))
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("ListingsId required");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var token = await GetToken(info, cancellationToken);
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(token))
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("token required");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_channelPair.Clear();
|
|
|
|
|
|
|
|
|
|
if (!String.IsNullOrWhiteSpace(token) && !String.IsNullOrWhiteSpace(info.ListingsId))
|
|
|
|
|
var httpOptions = new HttpRequestOptions()
|
|
|
|
|
{
|
|
|
|
|
var httpOptions = new HttpRequestOptions()
|
|
|
|
|
{
|
|
|
|
|
Url = ApiUrl + "/lineups/" + info.ListingsId,
|
|
|
|
|
UserAgent = UserAgent,
|
|
|
|
|
CancellationToken = cancellationToken
|
|
|
|
|
};
|
|
|
|
|
Url = ApiUrl + "/lineups/" + info.ListingsId,
|
|
|
|
|
UserAgent = UserAgent,
|
|
|
|
|
CancellationToken = cancellationToken
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
httpOptions.RequestHeaders["token"] = token;
|
|
|
|
|
|
|
|
|
|
using (var response = await _httpClient.Get(httpOptions))
|
|
|
|
|
httpOptions.RequestHeaders["token"] = token;
|
|
|
|
|
|
|
|
|
|
using (var response = await _httpClient.Get(httpOptions))
|
|
|
|
|
{
|
|
|
|
|
var root = _jsonSerializer.DeserializeFromStream<ScheduleDirect.Channel>(response);
|
|
|
|
|
_logger.Info("Found " + root.map.Count() + " channels on the lineup on ScheduleDirect");
|
|
|
|
|
_logger.Info("Mapping Stations to Channel");
|
|
|
|
|
foreach (ScheduleDirect.Map map in root.map)
|
|
|
|
|
{
|
|
|
|
|
var root = _jsonSerializer.DeserializeFromStream<ScheduleDirect.Channel>(response);
|
|
|
|
|
_logger.Info("Found " + root.map.Count() + " channels on the lineup on ScheduleDirect");
|
|
|
|
|
_logger.Info("Mapping Stations to Channel");
|
|
|
|
|
foreach (ScheduleDirect.Map map in root.map)
|
|
|
|
|
{
|
|
|
|
|
var channel = (map.channel ?? (map.atscMajor + "." + map.atscMinor)).TrimStart('0');
|
|
|
|
|
_logger.Debug("Found channel: " + channel + " in Schedules Direct");
|
|
|
|
|
var schChannel = root.stations.FirstOrDefault(item => item.stationID == map.stationID);
|
|
|
|
|
var channel = (map.channel ?? (map.atscMajor + "." + map.atscMinor)).TrimStart('0');
|
|
|
|
|
_logger.Debug("Found channel: " + channel + " in Schedules Direct");
|
|
|
|
|
var schChannel = root.stations.FirstOrDefault(item => item.stationID == map.stationID);
|
|
|
|
|
|
|
|
|
|
if (!_channelPair.ContainsKey(channel) && channel != "0.0" && schChannel != null)
|
|
|
|
|
{
|
|
|
|
|
_channelPair.TryAdd(channel, schChannel);
|
|
|
|
|
}
|
|
|
|
|
if (!_channelPair.ContainsKey(channel) && channel != "0.0" && schChannel != null)
|
|
|
|
|
{
|
|
|
|
|
_channelPair.TryAdd(channel, schChannel);
|
|
|
|
|
}
|
|
|
|
|
_logger.Info("Added " + _channelPair.Count() + " channels to the dictionary");
|
|
|
|
|
}
|
|
|
|
|
_logger.Info("Added " + _channelPair.Count() + " channels to the dictionary");
|
|
|
|
|
|
|
|
|
|
foreach (ChannelInfo channel in channels)
|
|
|
|
|
foreach (ChannelInfo channel in channels)
|
|
|
|
|
{
|
|
|
|
|
// Helper.logger.Info("Modifyin channel " + channel.Number);
|
|
|
|
|
if (_channelPair.ContainsKey(channel.Number))
|
|
|
|
|
{
|
|
|
|
|
// Helper.logger.Info("Modifyin channel " + channel.Number);
|
|
|
|
|
if (_channelPair.ContainsKey(channel.Number))
|
|
|
|
|
string channelName;
|
|
|
|
|
if (_channelPair[channel.Number].logo != null)
|
|
|
|
|
{
|
|
|
|
|
string channelName;
|
|
|
|
|
if (_channelPair[channel.Number].logo != null)
|
|
|
|
|
{
|
|
|
|
|
channel.ImageUrl = _channelPair[channel.Number].logo.URL;
|
|
|
|
|
channel.HasImage = true;
|
|
|
|
|
}
|
|
|
|
|
if (_channelPair[channel.Number].affiliate != null)
|
|
|
|
|
{
|
|
|
|
|
channelName = _channelPair[channel.Number].affiliate;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
channelName = _channelPair[channel.Number].name;
|
|
|
|
|
}
|
|
|
|
|
channel.Name = channelName;
|
|
|
|
|
channel.ImageUrl = _channelPair[channel.Number].logo.URL;
|
|
|
|
|
channel.HasImage = true;
|
|
|
|
|
}
|
|
|
|
|
if (_channelPair[channel.Number].affiliate != null)
|
|
|
|
|
{
|
|
|
|
|
channelName = _channelPair[channel.Number].affiliate;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_logger.Info("Schedules Direct doesnt have data for channel: " + channel.Number + " " +
|
|
|
|
|
channel.Name);
|
|
|
|
|
channelName = _channelPair[channel.Number].name;
|
|
|
|
|
}
|
|
|
|
|
channel.Name = channelName;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_logger.Info("Schedules Direct doesnt have data for channel: " + channel.Number + " " +
|
|
|
|
|
channel.Name);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -572,6 +579,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
|
|
|
|
|
|
|
|
|
var token = await GetToken(info, cancellationToken);
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(token))
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("token required");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_logger.Info("Headends on account ");
|
|
|
|
|
|
|
|
|
|
var options = new HttpRequestOptions()
|
|
|
|
|