| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | using MediaBrowser.Controller.Entities;using MediaBrowser.Controller.Providers;using MediaBrowser.Model.Channels;using MediaBrowser.Model.Configuration;using MediaBrowser.Model.Dto;using MediaBrowser.Model.Entities;using System.Collections.Generic;using System.Globalization;using System.Linq;using System.Threading;namespace MediaBrowser.Controller.Channels{    public class ChannelVideoItem : Video, IChannelMediaItem, IHasLookupInfo<ChannelItemLookupInfo>    {        public string ExternalId { get; set; }        public string ChannelId { get; set; }        public string DataVersion { get; set; }        public ChannelItemType ChannelItemType { get; set; }        public bool IsInfiniteStream { get; set; }        public ChannelMediaContentType ContentType { get; set; }        public string OriginalImageUrl { get; set; }        public List<ChannelMediaInfo> ChannelMediaSources { get; set; }                public override string GetUserDataKey()        {            if (ContentType == ChannelMediaContentType.MovieExtra)            {                var key = this.GetProviderId(MetadataProviders.Imdb) ?? this.GetProviderId(MetadataProviders.Tmdb);                if (!string.IsNullOrWhiteSpace(key))                {                    key = key + "-" + ExtraType.ToString().ToLower();                    // Make sure different trailers have their own data.                    if (RunTimeTicks.HasValue)                    {                        key += "-" + RunTimeTicks.Value.ToString(CultureInfo.InvariantCulture);                    }                    return key;                }            }            return ExternalId;        }        protected override bool GetBlockUnratedValue(UserConfiguration config)        {            return config.BlockUnratedItems.Contains(UnratedItem.ChannelContent);        }        public override bool SupportsLocalMetadata        {            get            {                return false;            }        }        public override bool IsSaveLocalMetadataEnabled()        {            return false;        }        public ChannelVideoItem()        {            ChannelMediaSources = new List<ChannelMediaInfo>();        }        public override LocationType LocationType        {            get            {                if (string.IsNullOrEmpty(Path))                {                    return LocationType.Remote;                }                return base.LocationType;            }        }        public override IEnumerable<MediaSourceInfo> GetMediaSources(bool enablePathSubstitution)        {            var list = base.GetMediaSources(enablePathSubstitution).ToList();            var sources = ChannelManager.GetChannelItemMediaSources(Id.ToString("N"), false, CancellationToken.None)                    .Result.ToList();            if (sources.Count > 0)            {                return sources;            }            list.InsertRange(0, sources);            return list;        }        public ChannelItemLookupInfo GetLookupInfo()        {            var info = GetItemLookupInfo<ChannelItemLookupInfo>();            info.ContentType = ContentType;            info.ExtraType = ExtraType;            return info;        }        protected override string GetInternalMetadataPath(string basePath)        {            return System.IO.Path.Combine(basePath, "channels", ChannelId, Id.ToString("N"));        }    }}
 |