Beispiel #1
0
        private async Task <BaseItem> GetChannelItemEntity(ChannelItemInfo info)
        {
            BaseItem item;

            Guid id;

            if (info.Type == ChannelItemType.Category)
            {
                id   = info.Id.GetMBId(typeof(ChannelCategoryItem));
                item = new ChannelCategoryItem();
            }
            else if (info.MediaType == ChannelMediaType.Audio)
            {
                id   = info.Id.GetMBId(typeof(ChannelCategoryItem));
                item = new ChannelAudioItem();
            }
            else
            {
                id   = info.Id.GetMBId(typeof(ChannelVideoItem));
                item = new ChannelVideoItem();
            }

            item.Id              = id;
            item.Name            = info.Name;
            item.Genres          = info.Genres;
            item.CommunityRating = info.CommunityRating;
            item.OfficialRating  = info.OfficialRating;
            item.Overview        = info.Overview;
            item.People          = info.People;
            item.PremiereDate    = info.PremiereDate;
            item.ProductionYear  = info.ProductionYear;
            item.RunTimeTicks    = info.RunTimeTicks;
            item.ProviderIds     = info.ProviderIds;

            return(item);
        }
Beispiel #2
0
        private async Task <BaseItem> GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Guid internalChannelId, CancellationToken cancellationToken)
        {
            BaseItem item;
            Guid     id;
            var      isNew = false;

            var idToHash = GetIdToHash(info.Id, channelProvider);

            if (info.Type == ChannelItemType.Folder)
            {
                id = idToHash.GetMBId(typeof(ChannelFolderItem));

                item = _libraryManager.GetItemById(id) as ChannelFolderItem;

                if (item == null)
                {
                    isNew = true;
                    item  = new ChannelFolderItem();
                }
            }
            else if (info.MediaType == ChannelMediaType.Audio)
            {
                id = idToHash.GetMBId(typeof(ChannelAudioItem));

                item = _libraryManager.GetItemById(id) as ChannelAudioItem;

                if (item == null)
                {
                    isNew = true;
                    item  = new ChannelAudioItem();
                }
            }
            else
            {
                id = idToHash.GetMBId(typeof(ChannelVideoItem));

                item = _libraryManager.GetItemById(id) as ChannelVideoItem;

                if (item == null)
                {
                    isNew = true;
                    item  = new ChannelVideoItem();
                }
            }

            item.Id           = id;
            item.RunTimeTicks = info.RunTimeTicks;

            if (isNew)
            {
                item.Name              = info.Name;
                item.Genres            = info.Genres;
                item.Studios           = info.Studios;
                item.CommunityRating   = info.CommunityRating;
                item.OfficialRating    = info.OfficialRating;
                item.Overview          = info.Overview;
                item.IndexNumber       = info.IndexNumber;
                item.ParentIndexNumber = info.ParentIndexNumber;
                item.People            = info.People;
                item.PremiereDate      = info.PremiereDate;
                item.ProductionYear    = info.ProductionYear;
                item.ProviderIds       = info.ProviderIds;

                item.DateCreated = info.DateCreated.HasValue ?
                                   info.DateCreated.Value :
                                   DateTime.UtcNow;
            }

            var channelItem = (IChannelItem)item;

            channelItem.OriginalImageUrl = info.ImageUrl;
            channelItem.ExternalId       = info.Id;
            channelItem.ChannelId        = internalChannelId.ToString("N");
            channelItem.ChannelItemType  = info.Type;

            if (isNew)
            {
                channelItem.Tags = info.Tags;
            }

            var channelMediaItem = item as IChannelMediaItem;

            if (channelMediaItem != null)
            {
                channelMediaItem.ContentType         = info.ContentType;
                channelMediaItem.ChannelMediaSources = info.MediaSources;

                var mediaSource = info.MediaSources.FirstOrDefault();

                item.Path = mediaSource == null ? null : mediaSource.Path;

                item.DisplayMediaType = channelMediaItem.ContentType.ToString();
            }

            if (isNew)
            {
                await _libraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false);

                _libraryManager.RegisterItem(item);
            }

            return(item);
        }