aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs16
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs28
2 files changed, 36 insertions, 8 deletions
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index aa6ab1d65..edfef38fd 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -98,7 +98,7 @@ namespace MediaBrowser.Server.Implementations.Dto
var byName = item as IItemByName;
- if (byName != null && !(item is LiveTvChannel))
+ if (byName != null)
{
if (options.Fields.Contains(ItemFields.ItemCounts))
{
@@ -140,7 +140,7 @@ namespace MediaBrowser.Server.Implementations.Dto
var byName = item as IItemByName;
- if (byName != null && !(item is LiveTvChannel))
+ if (byName != null)
{
if (options.Fields.Contains(ItemFields.ItemCounts))
{
@@ -351,6 +351,12 @@ namespace MediaBrowser.Server.Implementations.Dto
AttachBasicFields(dto, item, owner, options);
+ var tvChannel = item as LiveTvChannel;
+ if (tvChannel != null)
+ {
+ _livetvManager().AddChannelInfo(dto, tvChannel, options, user);
+ }
+
var collectionFolder = item as ICollectionFolder;
if (collectionFolder != null)
{
@@ -1520,12 +1526,6 @@ namespace MediaBrowser.Server.Implementations.Dto
SetPhotoProperties(dto, photo);
}
- var tvChannel = item as LiveTvChannel;
- if (tvChannel != null)
- {
- dto.MediaSources = _mediaSourceManager().GetStaticMediaSources(tvChannel, true).ToList();
- }
-
dto.ChannelId = item.ChannelId;
var channelItem = item as IChannelItem;
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index 9cd4a2334..ff7700124 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -1040,6 +1040,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv
{
cancellationToken.ThrowIfCancellationRequested();
+ _logger.Debug("Refreshing guide from {0}", service.Name);
+
try
{
var innerProgress = new ActionableProgress<double>();
@@ -1721,6 +1723,32 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return dto;
}
+ public void AddChannelInfo(BaseItemDto dto, LiveTvChannel channel, DtoOptions options, User user)
+ {
+ dto.MediaSources = channel.GetMediaSources(true).ToList();
+
+ var now = DateTime.UtcNow;
+
+ var programs = _libraryManager.GetItems(new InternalItemsQuery
+ {
+ IncludeItemTypes = new[] { typeof(LiveTvProgram).Name },
+ ChannelIds = new[] { channel.Id.ToString("N") },
+ MaxStartDate = now,
+ MinEndDate = now,
+ Limit = 1
+
+ }).Items.Cast<LiveTvProgram>();
+
+ var currentProgram = programs
+ .OrderBy(i => i.StartDate)
+ .FirstOrDefault();
+
+ if (currentProgram != null)
+ {
+ dto.CurrentProgram = _dtoService.GetBaseItemDto(currentProgram, options, user);
+ }
+ }
+
private async Task<Tuple<SeriesTimerInfo, ILiveTvService>> GetNewTimerDefaultsInternal(CancellationToken cancellationToken, LiveTvProgram program = null)
{
var service = program != null && !string.IsNullOrWhiteSpace(program.ServiceName) ?