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; }
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; }