diff options
Diffstat (limited to 'MediaBrowser.Controller/LiveTv/LiveTvChannel.cs')
| -rw-r--r-- | MediaBrowser.Controller/LiveTv/LiveTvChannel.cs | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs new file mode 100644 index 000000000..9e2d29eb6 --- /dev/null +++ b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs @@ -0,0 +1,197 @@ +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.Globalization; +using MediaBrowser.Model.Serialization; +using System; +using System.Linq; + +namespace MediaBrowser.Controller.LiveTv +{ + public class LiveTvChannel : BaseItem, IHasMediaSources, IHasProgramAttributes + { + public override List<string> GetUserDataKeys() + { + var list = base.GetUserDataKeys(); + + if (!ConfigurationManager.Configuration.DisableLiveTvChannelUserDataName) + { + list.Insert(0, GetClientTypeName() + "-" + Name); + } + + return list; + } + + public override UnratedItem GetBlockUnratedType() + { + return UnratedItem.LiveTvChannel; + } + + [IgnoreDataMember] + public override bool SupportsPositionTicksResume + { + get + { + return false; + } + } + + [IgnoreDataMember] + public override SourceType SourceType + { + get { return SourceType.LiveTV; } + } + + [IgnoreDataMember] + public override bool EnableRememberingTrackSelections + { + get + { + return false; + } + } + + /// <summary> + /// Gets or sets the number. + /// </summary> + /// <value>The number.</value> + public string Number { get; set; } + + /// <summary> + /// Gets or sets the type of the channel. + /// </summary> + /// <value>The type of the channel.</value> + public ChannelType ChannelType { get; set; } + + [IgnoreDataMember] + public override LocationType LocationType + { + get + { + // TODO: This should be removed + return LocationType.Remote; + } + } + + protected override string CreateSortName() + { + if (!string.IsNullOrEmpty(Number)) + { + double number = 0; + + if (double.TryParse(Number, NumberStyles.Any, CultureInfo.InvariantCulture, out number)) + { + return string.Format("{0:00000.0}", number) + "-" + (Name ?? string.Empty); + } + } + + return (Number ?? string.Empty) + "-" + (Name ?? string.Empty); + } + + [IgnoreDataMember] + 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<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems) + { + return new List<BaseItem>(); + } + + public override List<MediaSourceInfo> GetMediaSources(bool enablePathSubstitution) + { + var list = new List<MediaSourceInfo>(); + + var info = new MediaSourceInfo + { + Id = Id.ToString("N"), + Protocol = PathProtocol ?? MediaProtocol.File, + MediaStreams = new List<MediaStream>(), + Name = Name, + Path = Path, + RunTimeTicks = RunTimeTicks, + Type = MediaSourceType.Placeholder, + IsInfiniteStream = RunTimeTicks == null + }; + + list.Add(info); + + return list; + } + + public override List<MediaStream> GetMediaStreams() + { + return new List<MediaStream>(); + } + + protected override string GetInternalMetadataPath(string basePath) + { + return System.IO.Path.Combine(basePath, "livetv", Id.ToString("N"), "metadata"); + } + + public override bool CanDelete() + { + return false; + } + + [IgnoreDataMember] + public bool IsMovie { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is sports. + /// </summary> + /// <value><c>true</c> if this instance is sports; otherwise, <c>false</c>.</value> + [IgnoreDataMember] + public bool IsSports { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is series. + /// </summary> + /// <value><c>true</c> if this instance is series; otherwise, <c>false</c>.</value> + [IgnoreDataMember] + public bool IsSeries { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is news. + /// </summary> + /// <value><c>true</c> if this instance is news; otherwise, <c>false</c>.</value> + [IgnoreDataMember] + public bool IsNews { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is kids. + /// </summary> + /// <value><c>true</c> if this instance is kids; otherwise, <c>false</c>.</value> + [IgnoreDataMember] + public bool IsKids + { + get + { + return Tags.Contains("Kids", StringComparer.OrdinalIgnoreCase); + } + } + + [IgnoreDataMember] + public bool IsRepeat { get; set; } + + /// <summary> + /// Gets or sets the episode title. + /// </summary> + /// <value>The episode title.</value> + [IgnoreDataMember] + public string EpisodeTitle { get; set; } + } +} |
