aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/LiveTv
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-11-24 16:30:38 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-11-24 16:30:38 -0500
commit01a9c07dd8bef8bb5d3abef4113d0449601b9ce5 (patch)
treeb3ba4a8bdbaa9d14c8cbb0b545d6b491a25920e3 /MediaBrowser.Server.Implementations/LiveTv
parent7b6819846d464c9e67335cfb6ab230702eb6ba1d (diff)
support display of channel images
Diffstat (limited to 'MediaBrowser.Server.Implementations/LiveTv')
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/ChannelImageProvider.cs7
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs60
2 files changed, 37 insertions, 30 deletions
diff --git a/MediaBrowser.Server.Implementations/LiveTv/ChannelImageProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/ChannelImageProvider.cs
index 4ab6e55c8..e1a918fd2 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/ChannelImageProvider.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/ChannelImageProvider.cs
@@ -33,12 +33,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
protected override bool NeedsRefreshInternal(BaseItem item, BaseProviderInfo providerInfo)
{
- if (item.HasImage(ImageType.Primary))
- {
- return false;
- }
-
- return base.NeedsRefreshInternal(item, providerInfo);
+ return !item.HasImage(ImageType.Primary);
}
public override async Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index 9e1c6c4ac..8ea4ff1d3 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -70,9 +70,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv
Name = info.Name,
ServiceName = info.ServiceName,
ChannelType = info.ChannelType,
- Id = info.ChannelId,
+ ChannelId = info.ChannelId,
Number = info.ChannelNumber,
- PrimaryImageTag = GetLogoImageTag(info)
+ PrimaryImageTag = GetLogoImageTag(info),
+ Type = info.GetType().Name,
+ Id = info.Id.ToString("N")
};
}
@@ -113,9 +115,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv
}).ThenBy(i => i.Name);
}
- public Channel GetChannel(string serviceName, string channelId)
+ public Channel GetChannel(string id)
{
- return _channels.FirstOrDefault(i => string.Equals(i.ServiceName, serviceName, StringComparison.OrdinalIgnoreCase) && string.Equals(i.ChannelId, channelId, StringComparison.OrdinalIgnoreCase));
+ var guid = new Guid(id);
+
+ return _channels.FirstOrDefault(i => i.Id == guid);
}
internal async Task RefreshChannels(IProgress<double> progress, CancellationToken cancellationToken)
@@ -125,36 +129,44 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var tasks = _services.Select(i => i.GetChannelsAsync(currentCancellationToken));
- var results = await Task.WhenAll(tasks).ConfigureAwait(false);
+ progress.Report(10);
- var allChannels = results.SelectMany(i => i);
+ var results = await Task.WhenAll(tasks).ConfigureAwait(false);
- var channnelTasks = allChannels.Select(i => GetChannel(i, cancellationToken));
+ var allChannels = results.SelectMany(i => i).ToList();
- var channelEntities = await Task.WhenAll(channnelTasks).ConfigureAwait(false);
+ var list = new List<Channel>();
- _channels = channelEntities.ToList();
- }
+ var numComplete = 0;
- private async Task<Channel> GetChannel(ChannelInfo channelInfo, CancellationToken cancellationToken)
- {
- try
- {
- return await GetChannelInternal(channelInfo, cancellationToken).ConfigureAwait(false);
- }
- catch (OperationCanceledException)
- {
- throw;
- }
- catch (Exception ex)
+ foreach (var channel in allChannels)
{
- _logger.ErrorException("Error getting channel information for {0}", ex, channelInfo.Name);
+ try
+ {
+ var item = await GetChannel(channel, cancellationToken).ConfigureAwait(false);
- return null;
+ list.Add(item);
+ }
+ catch (OperationCanceledException)
+ {
+ throw;
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error getting channel information for {0}", ex, channel.Name);
+ }
+
+ numComplete++;
+ double percent = numComplete;
+ percent /= allChannels.Count;
+
+ progress.Report(90 * percent + 10);
}
+
+ _channels = list;
}
- private async Task<Channel> GetChannelInternal(ChannelInfo channelInfo, CancellationToken cancellationToken)
+ private async Task<Channel> GetChannel(ChannelInfo channelInfo, CancellationToken cancellationToken)
{
var path = Path.Combine(_appPaths.ItemsByNamePath, "channels", _fileSystem.GetValidFilename(channelInfo.ServiceName), _fileSystem.GetValidFilename(channelInfo.Name));