diff --git a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs index 17dcf138bf..bcb2dc2347 100644 --- a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs +++ b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs @@ -12,7 +12,7 @@ using System.Threading; namespace MediaBrowser.Controller.Channels { - public class ChannelAudioItem : Audio, IChannelMediaItem + public class ChannelAudioItem : Audio { public ChannelMediaContentType ContentType { get; set; } diff --git a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs index 098db1891a..c15b345b5a 100644 --- a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs +++ b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs @@ -13,7 +13,7 @@ using System.Threading; namespace MediaBrowser.Controller.Channels { - public class ChannelVideoItem : Video, IChannelMediaItem, IHasLookupInfo + public class ChannelVideoItem : Video, IHasLookupInfo { public ChannelMediaContentType ContentType { get; set; } diff --git a/MediaBrowser.Controller/Channels/IChannelManager.cs b/MediaBrowser.Controller/Channels/IChannelManager.cs index fec550df8b..e3d2d04404 100644 --- a/MediaBrowser.Controller/Channels/IChannelManager.cs +++ b/MediaBrowser.Controller/Channels/IChannelManager.cs @@ -116,7 +116,7 @@ namespace MediaBrowser.Controller.Channels /// if set to true [include cached versions]. /// The cancellation token. /// Task{IEnumerable{MediaSourceInfo}}. - Task> GetStaticMediaSources(IChannelMediaItem item, bool includeCachedVersions, CancellationToken cancellationToken); + Task> GetStaticMediaSources(BaseItem item, bool includeCachedVersions, CancellationToken cancellationToken); /// /// Gets the channel folder. @@ -141,6 +141,6 @@ namespace MediaBrowser.Controller.Channels /// The progress. /// The cancellation token. /// Task. - Task DownloadChannelItem(IChannelMediaItem item, string destinationPath, IProgress progress, CancellationToken cancellationToken); + Task DownloadChannelItem(BaseItem item, string destinationPath, IProgress progress, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Controller/Channels/IChannelMediaItem.cs b/MediaBrowser.Controller/Channels/IChannelMediaItem.cs deleted file mode 100644 index 8970879c9b..0000000000 --- a/MediaBrowser.Controller/Channels/IChannelMediaItem.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using MediaBrowser.Model.Channels; -using MediaBrowser.Model.Entities; -using System.Collections.Generic; - -namespace MediaBrowser.Controller.Channels -{ - public interface IChannelMediaItem - { - string ChannelId { get; set; } - Guid Id { get; set; } - string ExternalId { get; set; } - - long? RunTimeTicks { get; set; } - string MediaType { get; } - - ChannelMediaContentType ContentType { get; set; } - - ExtraType? ExtraType { get; set; } - - List ChannelMediaSources { get; set; } - } -} \ No newline at end of file diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index a4f30224bf..7078b04cfe 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -87,7 +87,6 @@ - diff --git a/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs b/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs index e86ae4b047..c29df61912 100644 --- a/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs @@ -42,7 +42,7 @@ namespace MediaBrowser.Providers.Movies public bool Supports(IHasImages item) { - var channelItem = item as IChannelMediaItem; + var channelItem = item as ChannelVideoItem; if (channelItem != null) { diff --git a/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs b/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs index eaebd426f6..d63a1594e4 100644 --- a/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs @@ -81,7 +81,7 @@ namespace MediaBrowser.Providers.Omdb return false; } - var channelItem = item as IChannelMediaItem; + var channelItem = item as ChannelVideoItem; if (channelItem != null) { diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs b/MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs index dac3a80f2c..3239b20b2d 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs @@ -20,11 +20,11 @@ namespace MediaBrowser.Server.Implementations.Channels public Task> GetMediaSources(IHasMediaSources item, CancellationToken cancellationToken) { - var channelItem = item as IChannelMediaItem; + var baseItem = (BaseItem) item; - if (channelItem != null) + if (baseItem.SourceType == SourceType.Channel) { - return _channelManager.GetDynamicMediaSources(channelItem, cancellationToken); + return _channelManager.GetDynamicMediaSources(baseItem, cancellationToken); } return Task.FromResult>(new List()); diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index 9cb0e25c26..d219e270be 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -248,9 +248,19 @@ namespace MediaBrowser.Server.Implementations.Channels return item; } - public async Task> GetStaticMediaSources(IChannelMediaItem item, bool includeCachedVersions, CancellationToken cancellationToken) + public async Task> GetStaticMediaSources(BaseItem item, bool includeCachedVersions, CancellationToken cancellationToken) { - IEnumerable results = item.ChannelMediaSources; + IEnumerable results = new List(); + var video = item as ChannelVideoItem; + if (video != null) + { + results = video.ChannelMediaSources; + } + var audio = item as ChannelAudioItem; + if (audio != null) + { + results = audio.ChannelMediaSources; + } var sources = SortMediaInfoResults(results) .Select(i => GetMediaSource(item, i)) @@ -265,7 +275,7 @@ namespace MediaBrowser.Server.Implementations.Channels return sources; } - public async Task> GetDynamicMediaSources(IChannelMediaItem item, CancellationToken cancellationToken) + public async Task> GetDynamicMediaSources(BaseItem item, CancellationToken cancellationToken) { var channel = GetChannel(item.ChannelId); var channelPlugin = GetChannelProvider(channel); @@ -319,7 +329,7 @@ namespace MediaBrowser.Server.Implementations.Channels return list; } - private IEnumerable GetCachedChannelItemMediaSources(IChannelMediaItem item) + private IEnumerable GetCachedChannelItemMediaSources(BaseItem item) { var filenamePrefix = item.Id.ToString("N"); var parentPath = Path.Combine(ChannelDownloadPath, item.ChannelId); @@ -368,7 +378,7 @@ namespace MediaBrowser.Server.Implementations.Channels return new List(); } - private MediaSourceInfo GetMediaSource(IChannelMediaItem item, ChannelMediaInfo info) + private MediaSourceInfo GetMediaSource(BaseItem item, ChannelMediaInfo info) { var source = info.ToMediaSource(); @@ -1277,16 +1287,25 @@ namespace MediaBrowser.Server.Implementations.Channels } item.ExternalId = info.Id; - var channelMediaItem = item as IChannelMediaItem; - - if (channelMediaItem != null) + var channelAudioItem = item as ChannelAudioItem; + if (channelAudioItem != null) { - channelMediaItem.ContentType = info.ContentType; - channelMediaItem.ExtraType = info.ExtraType; - channelMediaItem.ChannelMediaSources = info.MediaSources; + channelAudioItem.ContentType = info.ContentType; + channelAudioItem.ExtraType = info.ExtraType; + channelAudioItem.ChannelMediaSources = info.MediaSources; var mediaSource = info.MediaSources.FirstOrDefault(); + item.Path = mediaSource == null ? null : mediaSource.Path; + } + var channelVideoItem = item as ChannelVideoItem; + if (channelVideoItem != null) + { + channelVideoItem.ContentType = info.ContentType; + channelVideoItem.ExtraType = info.ExtraType; + channelVideoItem.ChannelMediaSources = info.MediaSources; + + var mediaSource = info.MediaSources.FirstOrDefault(); item.Path = mediaSource == null ? null : mediaSource.Path; } @@ -1439,7 +1458,7 @@ namespace MediaBrowser.Server.Implementations.Channels return await _libraryManager.GetNamedView(name, "channels", "zz_" + name, cancellationToken).ConfigureAwait(false); } - public async Task DownloadChannelItem(IChannelMediaItem item, string destination, + public async Task DownloadChannelItem(BaseItem item, string destination, IProgress progress, CancellationToken cancellationToken) { var sources = await GetDynamicMediaSources(item, cancellationToken) @@ -1455,7 +1474,7 @@ namespace MediaBrowser.Server.Implementations.Channels } private async Task TryDownloadChannelItem(MediaSourceInfo source, - IChannelMediaItem item, + BaseItem item, string destination, IProgress progress, CancellationToken cancellationToken) diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index d0e2ffde7d..61da810aa6 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -1250,6 +1250,7 @@ namespace MediaBrowser.Server.Implementations.Dto if (audio != null) { dto.Album = audio.Album; + dto.ExtraType = audio.ExtraType; var albumParent = audio.AlbumEntity; @@ -1352,6 +1353,8 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.Chapters = GetChapterInfoDtos(item); } + + dto.ExtraType = video.ExtraType; } if (fields.Contains(ItemFields.MediaStreams)) @@ -1535,12 +1538,6 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.ChannelName = _channelManagerFactory().GetChannel(item.ChannelId).Name; } - - var channelMediaItem = item as IChannelMediaItem; - if (channelMediaItem != null) - { - dto.ExtraType = channelMediaItem.ExtraType; - } } private void AttachLinkedChildImages(BaseItemDto dto, Folder folder, User user, DtoOptions options)