using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.MediaInfo; using System.Collections.Generic; using System.Linq; namespace MediaBrowser.Controller.LiveTv { public class LiveTvChannel : BaseItem, IHasMediaSources { /// /// Gets the user data key. /// /// System.String. public override string GetUserDataKey() { return GetClientTypeName() + "-" + Name; } /// /// Returns the folder containing the item. /// If the item is a folder, it returns the folder itself /// /// The containing folder path. public override string ContainingFolderPath { get { return Path; } } protected override bool GetBlockUnratedValue(UserConfiguration config) { return config.BlockUnratedItems.Contains(UnratedItem.LiveTvChannel); } /// /// Gets a value indicating whether this instance is owned item. /// /// true if this instance is owned item; otherwise, false. public override bool IsOwnedItem { get { return false; } } public override bool IsSaveLocalMetadataEnabled() { return true; } /// /// Gets or sets the number. /// /// The number. public string Number { get; set; } /// /// Gets or sets the external identifier. /// /// The external identifier. public string ExternalId { get; set; } /// /// Gets or sets the type of the channel. /// /// The type of the channel. public ChannelType ChannelType { get; set; } public string ServiceName { get; set; } /// /// Supply the image path if it can be accessed directly from the file system /// /// The image path. public string ProviderImagePath { get; set; } /// /// Supply the image url if it can be downloaded /// /// The image URL. public string ProviderImageUrl { get; set; } /// /// Gets or sets a value indicating whether this instance has image. /// /// null if [has image] contains no value, true if [has image]; otherwise, false. public bool? HasProviderImage { get; set; } protected override string CreateSortName() { double number = 0; if (!string.IsNullOrEmpty(Number)) { double.TryParse(Number, out number); } return number.ToString("000-") + (Name ?? string.Empty); } public override string MediaType { get { return ChannelType == ChannelType.Radio ? Model.Entities.MediaType.Audio : Model.Entities.MediaType.Video; } } public override string GetClientTypeName() { return "TvChannel"; } public IEnumerable GetTaggedItems(IEnumerable inputItems) { return new List(); } public IEnumerable GetMediaSources(bool enablePathSubstitution) { var list = new List(); var locationType = LocationType; var info = new MediaSourceInfo { Id = Id.ToString("N"), Protocol = locationType == LocationType.Remote ? MediaProtocol.Http : MediaProtocol.File, MediaStreams = new List(), Name = Name, Path = Path, RunTimeTicks = RunTimeTicks, Type = MediaSourceType.Default }; list.Add(info); return list; } } }