normalize program object
This commit is contained in:
parent
25736b259a
commit
ef8a1ccecb
|
@ -161,7 +161,7 @@ namespace MediaBrowser.Api.LiveTv
|
||||||
|
|
||||||
[Route("/LiveTv/Programs", "GET,POST", Summary = "Gets available live tv epgs..")]
|
[Route("/LiveTv/Programs", "GET,POST", Summary = "Gets available live tv epgs..")]
|
||||||
[Authenticated]
|
[Authenticated]
|
||||||
public class GetPrograms : IReturn<QueryResult<ProgramInfoDto>>
|
public class GetPrograms : IReturn<QueryResult<BaseItemDto>>
|
||||||
{
|
{
|
||||||
[ApiMember(Name = "ChannelIds", Description = "The channels to return guide information for.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")]
|
[ApiMember(Name = "ChannelIds", Description = "The channels to return guide information for.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")]
|
||||||
public string ChannelIds { get; set; }
|
public string ChannelIds { get; set; }
|
||||||
|
@ -208,7 +208,7 @@ namespace MediaBrowser.Api.LiveTv
|
||||||
|
|
||||||
[Route("/LiveTv/Programs/Recommended", "GET", Summary = "Gets available live tv epgs..")]
|
[Route("/LiveTv/Programs/Recommended", "GET", Summary = "Gets available live tv epgs..")]
|
||||||
[Authenticated]
|
[Authenticated]
|
||||||
public class GetRecommendedPrograms : IReturn<QueryResult<ProgramInfoDto>>
|
public class GetRecommendedPrograms : IReturn<QueryResult<BaseItemDto>>
|
||||||
{
|
{
|
||||||
[ApiMember(Name = "UserId", Description = "Optional filter by user id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")]
|
[ApiMember(Name = "UserId", Description = "Optional filter by user id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")]
|
||||||
public string UserId { get; set; }
|
public string UserId { get; set; }
|
||||||
|
@ -231,7 +231,7 @@ namespace MediaBrowser.Api.LiveTv
|
||||||
|
|
||||||
[Route("/LiveTv/Programs/{Id}", "GET", Summary = "Gets a live tv program")]
|
[Route("/LiveTv/Programs/{Id}", "GET", Summary = "Gets a live tv program")]
|
||||||
[Authenticated]
|
[Authenticated]
|
||||||
public class GetProgram : IReturn<ProgramInfoDto>
|
public class GetProgram : IReturn<BaseItemDto>
|
||||||
{
|
{
|
||||||
[ApiMember(Name = "Id", Description = "Program Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
|
[ApiMember(Name = "Id", Description = "Program Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
|
|
|
@ -170,7 +170,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <param name="user">The user.</param>
|
/// <param name="user">The user.</param>
|
||||||
/// <returns>Task{ProgramInfoDto}.</returns>
|
/// <returns>Task{ProgramInfoDto}.</returns>
|
||||||
Task<ProgramInfoDto> GetProgram(string id, CancellationToken cancellationToken, User user = null);
|
Task<BaseItemDto> GetProgram(string id, CancellationToken cancellationToken, User user = null);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the programs.
|
/// Gets the programs.
|
||||||
|
@ -178,7 +178,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
/// <param name="query">The query.</param>
|
/// <param name="query">The query.</param>
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns>IEnumerable{ProgramInfo}.</returns>
|
/// <returns>IEnumerable{ProgramInfo}.</returns>
|
||||||
Task<QueryResult<ProgramInfoDto>> GetPrograms(ProgramQuery query, CancellationToken cancellationToken);
|
Task<QueryResult<BaseItemDto>> GetPrograms(ProgramQuery query, CancellationToken cancellationToken);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates the timer.
|
/// Updates the timer.
|
||||||
|
@ -240,7 +240,7 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
/// <param name="query">The query.</param>
|
/// <param name="query">The query.</param>
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns>Task{QueryResult{ProgramInfoDto}}.</returns>
|
/// <returns>Task{QueryResult{ProgramInfoDto}}.</returns>
|
||||||
Task<QueryResult<ProgramInfoDto>> GetRecommendedPrograms(RecommendedProgramQuery query,
|
Task<QueryResult<BaseItemDto>> GetRecommendedPrograms(RecommendedProgramQuery query,
|
||||||
CancellationToken cancellationToken);
|
CancellationToken cancellationToken);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -329,5 +329,13 @@ namespace MediaBrowser.Controller.LiveTv
|
||||||
/// <param name="dto">The dto.</param>
|
/// <param name="dto">The dto.</param>
|
||||||
/// <param name="user">The user.</param>
|
/// <param name="user">The user.</param>
|
||||||
void AddInfoToRecordingDto(BaseItem item, BaseItemDto dto, User user = null);
|
void AddInfoToRecordingDto(BaseItem item, BaseItemDto dto, User user = null);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds the information to program dto.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item">The item.</param>
|
||||||
|
/// <param name="dto">The dto.</param>
|
||||||
|
/// <param name="user">The user.</param>
|
||||||
|
void AddInfoToProgramDto(BaseItem item, BaseItemDto dto, User user = null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -743,9 +743,6 @@
|
||||||
<Compile Include="..\MediaBrowser.Model\LiveTv\ProgramAudio.cs">
|
<Compile Include="..\MediaBrowser.Model\LiveTv\ProgramAudio.cs">
|
||||||
<Link>LiveTv\ProgramAudio.cs</Link>
|
<Link>LiveTv\ProgramAudio.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="..\MediaBrowser.Model\LiveTv\ProgramInfoDto.cs">
|
|
||||||
<Link>LiveTv\ProgramInfoDto.cs</Link>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="..\MediaBrowser.Model\LiveTv\ProgramQuery.cs">
|
<Compile Include="..\MediaBrowser.Model\LiveTv\ProgramQuery.cs">
|
||||||
<Link>LiveTv\ProgramQuery.cs</Link>
|
<Link>LiveTv\ProgramQuery.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
|
@ -699,9 +699,6 @@
|
||||||
<Compile Include="..\MediaBrowser.Model\LiveTv\ProgramAudio.cs">
|
<Compile Include="..\MediaBrowser.Model\LiveTv\ProgramAudio.cs">
|
||||||
<Link>LiveTv\ProgramAudio.cs</Link>
|
<Link>LiveTv\ProgramAudio.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="..\MediaBrowser.Model\LiveTv\ProgramInfoDto.cs">
|
|
||||||
<Link>LiveTv\ProgramInfoDto.cs</Link>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="..\MediaBrowser.Model\LiveTv\ProgramQuery.cs">
|
<Compile Include="..\MediaBrowser.Model\LiveTv\ProgramQuery.cs">
|
||||||
<Link>LiveTv\ProgramQuery.cs</Link>
|
<Link>LiveTv\ProgramQuery.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
|
@ -929,14 +929,6 @@ namespace MediaBrowser.Model.ApiClient
|
||||||
/// <returns>System.String.</returns>
|
/// <returns>System.String.</returns>
|
||||||
string GetImageUrl(ChannelInfoDto item, ImageOptions options);
|
string GetImageUrl(ChannelInfoDto item, ImageOptions options);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the image URL.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="item">The item.</param>
|
|
||||||
/// <param name="options">The options.</param>
|
|
||||||
/// <returns>System.String.</returns>
|
|
||||||
string GetImageUrl(ProgramInfoDto item, ImageOptions options);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the subtitle URL.
|
/// Gets the subtitle URL.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1111,7 +1103,7 @@ namespace MediaBrowser.Model.ApiClient
|
||||||
/// <param name="query">The query.</param>
|
/// <param name="query">The query.</param>
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns>Task{QueryResult{ProgramInfoDto}}.</returns>
|
/// <returns>Task{QueryResult{ProgramInfoDto}}.</returns>
|
||||||
Task<QueryResult<ProgramInfoDto>> GetLiveTvProgramsAsync(ProgramQuery query, CancellationToken cancellationToken = default(CancellationToken));
|
Task<QueryResult<BaseItemDto>> GetLiveTvProgramsAsync(ProgramQuery query, CancellationToken cancellationToken = default(CancellationToken));
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the live tv program asynchronous.
|
/// Gets the live tv program asynchronous.
|
||||||
|
@ -1120,7 +1112,7 @@ namespace MediaBrowser.Model.ApiClient
|
||||||
/// <param name="userId">The user identifier.</param>
|
/// <param name="userId">The user identifier.</param>
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns>Task{ProgramInfoDto}.</returns>
|
/// <returns>Task{ProgramInfoDto}.</returns>
|
||||||
Task<ProgramInfoDto> GetLiveTvProgramAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken));
|
Task<BaseItemDto> GetLiveTvProgramAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken));
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the recommended live tv programs asynchronous.
|
/// Gets the recommended live tv programs asynchronous.
|
||||||
|
@ -1128,7 +1120,7 @@ namespace MediaBrowser.Model.ApiClient
|
||||||
/// <param name="query">The query.</param>
|
/// <param name="query">The query.</param>
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns>Task{QueryResult{ProgramInfoDto}}.</returns>
|
/// <returns>Task{QueryResult{ProgramInfoDto}}.</returns>
|
||||||
Task<QueryResult<ProgramInfoDto>> GetRecommendedLiveTvProgramsAsync(RecommendedProgramQuery query, CancellationToken cancellationToken = default(CancellationToken));
|
Task<QueryResult<BaseItemDto>> GetRecommendedLiveTvProgramsAsync(RecommendedProgramQuery query, CancellationToken cancellationToken = default(CancellationToken));
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates the live tv timer asynchronous.
|
/// Creates the live tv timer asynchronous.
|
||||||
|
|
|
@ -1175,5 +1175,11 @@ namespace MediaBrowser.Model.Dto
|
||||||
/// <value><c>true</c> if this instance is premiere; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance is premiere; otherwise, <c>false</c>.</value>
|
||||||
public bool? IsPremiere { get; set; }
|
public bool? IsPremiere { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the timer identifier.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The timer identifier.</value>
|
||||||
|
public string TimerId { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,7 @@ namespace MediaBrowser.Model.LiveTv
|
||||||
/// Gets or sets the now playing program.
|
/// Gets or sets the now playing program.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The now playing program.</value>
|
/// <value>The now playing program.</value>
|
||||||
public ProgramInfoDto CurrentProgram { get; set; }
|
public BaseItemDto CurrentProgram { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the primary image aspect ratio, after image enhancements.
|
/// Gets or sets the primary image aspect ratio, after image enhancements.
|
||||||
|
|
|
@ -1,250 +0,0 @@
|
||||||
using MediaBrowser.Model.Dto;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
using MediaBrowser.Model.Extensions;
|
|
||||||
using MediaBrowser.Model.Library;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Runtime.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Model.LiveTv
|
|
||||||
{
|
|
||||||
[DebuggerDisplay("Name = {Name}, StartTime = {StartDate}, EndTime = {EndDate}")]
|
|
||||||
public class ProgramInfoDto : IHasPropertyChangedEvent, IItemDto, IHasServerId
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Id of the program.
|
|
||||||
/// </summary>
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the primary image aspect ratio.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The primary image aspect ratio.</value>
|
|
||||||
public double? PrimaryImageAspectRatio { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the server identifier.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The server identifier.</value>
|
|
||||||
public string ServerId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the original primary image aspect ratio.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The original primary image aspect ratio.</value>
|
|
||||||
public double? OriginalPrimaryImageAspectRatio { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the type of the media.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The type of the media.</value>
|
|
||||||
public string MediaType { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the timer identifier.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The timer identifier.</value>
|
|
||||||
public string TimerId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the series timer identifier.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The series timer identifier.</value>
|
|
||||||
public string SeriesTimerId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the external identifier.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The external identifier.</value>
|
|
||||||
public string ExternalId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the channel identifier.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The channel identifier.</value>
|
|
||||||
public string ChannelId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the channel primary image tag.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The channel primary image tag.</value>
|
|
||||||
public string ChannelPrimaryImageTag { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the play access.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The play access.</value>
|
|
||||||
public PlayAccess PlayAccess { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the name of the channel.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The name of the channel.</value>
|
|
||||||
public string ChannelName { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the community rating.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The community rating.</value>
|
|
||||||
public float? CommunityRating { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the official rating.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The official rating.</value>
|
|
||||||
public string OfficialRating { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the production year.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The production year.</value>
|
|
||||||
public int? ProductionYear { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the name of the service.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The name of the service.</value>
|
|
||||||
public string ServiceName { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Name of the program
|
|
||||||
/// </summary>
|
|
||||||
public string Name { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Overview of the recording.
|
|
||||||
/// </summary>
|
|
||||||
public string Overview { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The start date of the program, in UTC.
|
|
||||||
/// </summary>
|
|
||||||
public DateTime StartDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The end date of the program, in UTC.
|
|
||||||
/// </summary>
|
|
||||||
public DateTime EndDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Genre of the program.
|
|
||||||
/// </summary>
|
|
||||||
public List<string> Genres { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether this instance is hd.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if this instance is hd; otherwise, <c>false</c>.</value>
|
|
||||||
public bool? IsHD { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the audio.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The audio.</value>
|
|
||||||
public ProgramAudio? Audio { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the original air date.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The original air date.</value>
|
|
||||||
public DateTime? OriginalAirDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether this instance is repeat.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if this instance is repeat; otherwise, <c>false</c>.</value>
|
|
||||||
public bool IsRepeat { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the episode title.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The episode title.</value>
|
|
||||||
public string EpisodeTitle { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the image tags.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The image tags.</value>
|
|
||||||
public Dictionary<ImageType, string> ImageTags { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the user data.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The user data.</value>
|
|
||||||
public UserItemDataDto UserData { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether this instance is movie.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if this instance is movie; otherwise, <c>false</c>.</value>
|
|
||||||
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>
|
|
||||||
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>
|
|
||||||
public bool IsSeries { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether this instance is live.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if this instance is live; otherwise, <c>false</c>.</value>
|
|
||||||
public bool IsLive { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the type.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The type.</value>
|
|
||||||
public string Type { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the run time ticks.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The run time ticks.</value>
|
|
||||||
public long? RunTimeTicks { 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>
|
|
||||||
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>
|
|
||||||
public bool IsKids { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether this instance is premiere.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if this instance is premiere; otherwise, <c>false</c>.</value>
|
|
||||||
public bool IsPremiere { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets a value indicating whether this instance has primary image.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if this instance has primary image; otherwise, <c>false</c>.</value>
|
|
||||||
[IgnoreDataMember]
|
|
||||||
public bool HasPrimaryImage
|
|
||||||
{
|
|
||||||
get { return ImageTags != null && ImageTags.ContainsKey(ImageType.Primary); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public ProgramInfoDto()
|
|
||||||
{
|
|
||||||
Genres = new List<string>();
|
|
||||||
ImageTags = new Dictionary<ImageType, string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,4 +1,6 @@
|
||||||
namespace MediaBrowser.Model.LiveTv
|
using MediaBrowser.Model.Dto;
|
||||||
|
|
||||||
|
namespace MediaBrowser.Model.LiveTv
|
||||||
{
|
{
|
||||||
public class TimerInfoDto : BaseTimerInfoDto
|
public class TimerInfoDto : BaseTimerInfoDto
|
||||||
{
|
{
|
||||||
|
@ -30,7 +32,7 @@
|
||||||
/// Gets or sets the program information.
|
/// Gets or sets the program information.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The program information.</value>
|
/// <value>The program information.</value>
|
||||||
public ProgramInfoDto ProgramInfo { get; set; }
|
public BaseItemDto ProgramInfo { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -259,7 +259,6 @@
|
||||||
<Compile Include="LiveTv\LiveTvTunerInfoDto.cs" />
|
<Compile Include="LiveTv\LiveTvTunerInfoDto.cs" />
|
||||||
<Compile Include="LiveTv\LiveTvTunerStatus.cs" />
|
<Compile Include="LiveTv\LiveTvTunerStatus.cs" />
|
||||||
<Compile Include="LiveTv\ProgramAudio.cs" />
|
<Compile Include="LiveTv\ProgramAudio.cs" />
|
||||||
<Compile Include="LiveTv\ProgramInfoDto.cs" />
|
|
||||||
<Compile Include="LiveTv\ProgramQuery.cs" />
|
<Compile Include="LiveTv\ProgramQuery.cs" />
|
||||||
<Compile Include="LiveTv\RecommendedProgramQuery.cs" />
|
<Compile Include="LiveTv\RecommendedProgramQuery.cs" />
|
||||||
<Compile Include="LiveTv\RecordingGroupQuery.cs" />
|
<Compile Include="LiveTv\RecordingGroupQuery.cs" />
|
||||||
|
|
|
@ -357,6 +357,11 @@ namespace MediaBrowser.Server.Implementations.Dto
|
||||||
_livetvManager().AddInfoToRecordingDto(item, dto, user);
|
_livetvManager().AddInfoToRecordingDto(item, dto, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (item is LiveTvProgram)
|
||||||
|
{
|
||||||
|
_livetvManager().AddInfoToProgramDto(item, dto, user);
|
||||||
|
}
|
||||||
|
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
|
|
||||||
if (program != null)
|
if (program != null)
|
||||||
{
|
{
|
||||||
dto.ProgramInfo = GetProgramInfoDto(program, channel);
|
dto.ProgramInfo = _dtoService.GetBaseItemDto(program, new DtoOptions());
|
||||||
|
|
||||||
dto.ProgramInfo.TimerId = dto.Id;
|
dto.ProgramInfo.TimerId = dto.Id;
|
||||||
dto.ProgramInfo.SeriesTimerId = dto.SeriesTimerId;
|
dto.ProgramInfo.SeriesTimerId = dto.SeriesTimerId;
|
||||||
|
@ -238,77 +238,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
|
|
||||||
if (currentProgram != null)
|
if (currentProgram != null)
|
||||||
{
|
{
|
||||||
dto.CurrentProgram = GetProgramInfoDto(currentProgram, info, user);
|
dto.CurrentProgram = _dtoService.GetBaseItemDto(currentProgram, new DtoOptions(), user);
|
||||||
}
|
|
||||||
|
|
||||||
return dto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ProgramInfoDto GetProgramInfoDto(LiveTvProgram item, LiveTvChannel channel, User user = null)
|
|
||||||
{
|
|
||||||
var dto = new ProgramInfoDto
|
|
||||||
{
|
|
||||||
Id = GetInternalProgramId(item.ServiceName, item.ExternalId).ToString("N"),
|
|
||||||
ChannelId = GetInternalChannelId(item.ServiceName, item.ExternalChannelId).ToString("N"),
|
|
||||||
Overview = item.Overview,
|
|
||||||
Genres = item.Genres,
|
|
||||||
ExternalId = item.ExternalId,
|
|
||||||
Name = item.Name,
|
|
||||||
ServiceName = item.ServiceName,
|
|
||||||
StartDate = item.StartDate,
|
|
||||||
OfficialRating = item.OfficialRating,
|
|
||||||
IsHD = item.IsHD,
|
|
||||||
OriginalAirDate = item.OriginalAirDate,
|
|
||||||
Audio = item.Audio,
|
|
||||||
CommunityRating = GetClientCommunityRating(item.CommunityRating),
|
|
||||||
IsRepeat = item.IsRepeat,
|
|
||||||
EpisodeTitle = item.EpisodeTitle,
|
|
||||||
IsMovie = item.IsMovie,
|
|
||||||
IsSeries = item.IsSeries,
|
|
||||||
IsSports = item.IsSports,
|
|
||||||
IsLive = item.IsLive,
|
|
||||||
IsNews = item.IsNews,
|
|
||||||
IsKids = item.IsKids,
|
|
||||||
IsPremiere = item.IsPremiere,
|
|
||||||
Type = "Program",
|
|
||||||
MediaType = item.MediaType,
|
|
||||||
ServerId = _appHost.SystemId,
|
|
||||||
ProductionYear = item.ProductionYear
|
|
||||||
};
|
|
||||||
|
|
||||||
if (item.EndDate.HasValue)
|
|
||||||
{
|
|
||||||
dto.EndDate = item.EndDate.Value;
|
|
||||||
|
|
||||||
dto.RunTimeTicks = (item.EndDate.Value - item.StartDate).Ticks;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (channel != null)
|
|
||||||
{
|
|
||||||
dto.ChannelName = channel.Name;
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(channel.PrimaryImagePath))
|
|
||||||
{
|
|
||||||
dto.ChannelPrimaryImageTag = GetImageTag(channel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var imageTag = GetImageTag(item);
|
|
||||||
|
|
||||||
if (imageTag != null)
|
|
||||||
{
|
|
||||||
dto.ImageTags[ImageType.Primary] = imageTag;
|
|
||||||
_dtoService.AttachPrimaryImageAspectRatio(dto, item, new List<ItemFields>
|
|
||||||
{
|
|
||||||
ItemFields.PrimaryImageAspectRatio
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (user != null)
|
|
||||||
{
|
|
||||||
dto.UserData = _userDataManager.GetUserDataDto(item, user);
|
|
||||||
|
|
||||||
dto.PlayAccess = item.GetPlayAccess(user);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return dto;
|
return dto;
|
||||||
|
@ -365,7 +295,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
return name.ToLower().GetMBId(typeof(ILiveTvRecording));
|
return name.ToLower().GetMBId(typeof(ILiveTvRecording));
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<TimerInfo> GetTimerInfo(TimerInfoDto dto, bool isNew, ILiveTvManager liveTv, CancellationToken cancellationToken)
|
public async Task<TimerInfo> GetTimerInfo(TimerInfoDto dto, bool isNew, LiveTvManager liveTv, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var info = new TimerInfo
|
var info = new TimerInfo
|
||||||
{
|
{
|
||||||
|
@ -405,7 +335,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(dto.ProgramId) && string.IsNullOrEmpty(info.ProgramId))
|
if (!string.IsNullOrEmpty(dto.ProgramId) && string.IsNullOrEmpty(info.ProgramId))
|
||||||
{
|
{
|
||||||
var program = await liveTv.GetProgram(dto.ProgramId, cancellationToken).ConfigureAwait(false);
|
var program = liveTv.GetInternalProgram(dto.ProgramId);
|
||||||
|
|
||||||
if (program != null)
|
if (program != null)
|
||||||
{
|
{
|
||||||
|
@ -426,7 +356,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<SeriesTimerInfo> GetSeriesTimerInfo(SeriesTimerInfoDto dto, bool isNew, ILiveTvManager liveTv, CancellationToken cancellationToken)
|
public async Task<SeriesTimerInfo> GetSeriesTimerInfo(SeriesTimerInfoDto dto, bool isNew, LiveTvManager liveTv, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var info = new SeriesTimerInfo
|
var info = new SeriesTimerInfo
|
||||||
{
|
{
|
||||||
|
@ -468,7 +398,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(dto.ProgramId) && string.IsNullOrEmpty(info.ProgramId))
|
if (!string.IsNullOrEmpty(dto.ProgramId) && string.IsNullOrEmpty(info.ProgramId))
|
||||||
{
|
{
|
||||||
var program = await liveTv.GetProgram(dto.ProgramId, cancellationToken).ConfigureAwait(false);
|
var program = liveTv.GetInternalProgram(dto.ProgramId);
|
||||||
|
|
||||||
if (program != null)
|
if (program != null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -284,7 +284,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
return _libraryManager.GetItemById(id) as LiveTvChannel;
|
return _libraryManager.GetItemById(id) as LiveTvChannel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private LiveTvProgram GetInternalProgram(string id)
|
internal LiveTvProgram GetInternalProgram(string id)
|
||||||
{
|
{
|
||||||
var guid = new Guid(id);
|
var guid = new Guid(id);
|
||||||
|
|
||||||
|
@ -732,20 +732,18 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
return GetInternalChannel(internalProgramChannelId);
|
return GetInternalChannel(internalProgramChannelId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ProgramInfoDto> GetProgram(string id, CancellationToken cancellationToken, User user = null)
|
public async Task<BaseItemDto> GetProgram(string id, CancellationToken cancellationToken, User user = null)
|
||||||
{
|
{
|
||||||
var program = GetInternalProgram(id);
|
var program = GetInternalProgram(id);
|
||||||
|
|
||||||
var channel = GetChannel(program);
|
var dto = _dtoService.GetBaseItemDto(program, new DtoOptions(), user);
|
||||||
|
|
||||||
var dto = _tvDtoService.GetProgramInfoDto(program, channel, user);
|
|
||||||
|
|
||||||
await AddRecordingInfo(new[] { dto }, cancellationToken).ConfigureAwait(false);
|
await AddRecordingInfo(new[] { dto }, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<QueryResult<ProgramInfoDto>> GetPrograms(ProgramQuery query, CancellationToken cancellationToken)
|
public async Task<QueryResult<BaseItemDto>> GetPrograms(ProgramQuery query, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
IEnumerable<LiveTvProgram> programs = GetPrograms();
|
IEnumerable<LiveTvProgram> programs = GetPrograms();
|
||||||
|
|
||||||
|
@ -839,19 +837,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
}
|
}
|
||||||
|
|
||||||
var returnArray = returnPrograms
|
var returnArray = returnPrograms
|
||||||
.Select(i =>
|
.Select(i => _dtoService.GetBaseItemDto(i, new DtoOptions(), user))
|
||||||
{
|
|
||||||
var channel = GetChannel(i);
|
|
||||||
|
|
||||||
return _tvDtoService.GetProgramInfoDto(i, channel, user);
|
|
||||||
})
|
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
RefreshIfNeeded(programList);
|
RefreshIfNeeded(programList);
|
||||||
|
|
||||||
await AddRecordingInfo(returnArray, cancellationToken).ConfigureAwait(false);
|
await AddRecordingInfo(returnArray, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
var result = new QueryResult<ProgramInfoDto>
|
var result = new QueryResult<BaseItemDto>
|
||||||
{
|
{
|
||||||
Items = returnArray,
|
Items = returnArray,
|
||||||
TotalRecordCount = programList.Count
|
TotalRecordCount = programList.Count
|
||||||
|
@ -924,24 +917,19 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<QueryResult<ProgramInfoDto>> GetRecommendedPrograms(RecommendedProgramQuery query, CancellationToken cancellationToken)
|
public async Task<QueryResult<BaseItemDto>> GetRecommendedPrograms(RecommendedProgramQuery query, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var internalResult = await GetRecommendedProgramsInternal(query, cancellationToken).ConfigureAwait(false);
|
var internalResult = await GetRecommendedProgramsInternal(query, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
var user = _userManager.GetUserById(query.UserId);
|
var user = _userManager.GetUserById(query.UserId);
|
||||||
|
|
||||||
var returnArray = internalResult.Items
|
var returnArray = internalResult.Items
|
||||||
.Select(i =>
|
.Select(i => _dtoService.GetBaseItemDto(i, new DtoOptions(), user))
|
||||||
{
|
|
||||||
var channel = GetChannel(i);
|
|
||||||
|
|
||||||
return _tvDtoService.GetProgramInfoDto(i, channel, user);
|
|
||||||
})
|
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
await AddRecordingInfo(returnArray, cancellationToken).ConfigureAwait(false);
|
await AddRecordingInfo(returnArray, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
var result = new QueryResult<ProgramInfoDto>
|
var result = new QueryResult<BaseItemDto>
|
||||||
{
|
{
|
||||||
Items = returnArray,
|
Items = returnArray,
|
||||||
TotalRecordCount = internalResult.TotalRecordCount
|
TotalRecordCount = internalResult.TotalRecordCount
|
||||||
|
@ -1020,37 +1008,40 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
}).Sum();
|
}).Sum();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task AddRecordingInfo(IEnumerable<ProgramInfoDto> programs, CancellationToken cancellationToken)
|
private async Task AddRecordingInfo(IEnumerable<BaseItemDto> programs, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var timers = new Dictionary<string, List<TimerInfo>>();
|
var timers = new Dictionary<string, List<TimerInfo>>();
|
||||||
|
|
||||||
foreach (var program in programs)
|
foreach (var program in programs)
|
||||||
{
|
{
|
||||||
|
var internalProgram = GetInternalProgram(program.Id);
|
||||||
|
|
||||||
List<TimerInfo> timerList;
|
List<TimerInfo> timerList;
|
||||||
if (!timers.TryGetValue(program.ServiceName, out timerList))
|
if (!timers.TryGetValue(internalProgram.ServiceName, out timerList))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var tempTimers = await GetService(program.ServiceName).GetTimersAsync(cancellationToken).ConfigureAwait(false);
|
var tempTimers = await GetService(internalProgram.ServiceName).GetTimersAsync(cancellationToken).ConfigureAwait(false);
|
||||||
timers[program.ServiceName] = timerList = tempTimers.ToList();
|
timers[internalProgram.ServiceName] = timerList = tempTimers.ToList();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.ErrorException("Error getting timer infos", ex);
|
_logger.ErrorException("Error getting timer infos", ex);
|
||||||
timers[program.ServiceName] = timerList = new List<TimerInfo>();
|
timers[internalProgram.ServiceName] = timerList = new List<TimerInfo>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var timer = timerList.FirstOrDefault(i => string.Equals(i.ProgramId, program.ExternalId, StringComparison.OrdinalIgnoreCase));
|
|
||||||
|
var timer = timerList.FirstOrDefault(i => string.Equals(i.ProgramId, internalProgram.ExternalId, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
if (timer != null)
|
if (timer != null)
|
||||||
{
|
{
|
||||||
program.TimerId = _tvDtoService.GetInternalTimerId(program.ServiceName, timer.Id)
|
program.TimerId = _tvDtoService.GetInternalTimerId(internalProgram.ServiceName, timer.Id)
|
||||||
.ToString("N");
|
.ToString("N");
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(timer.SeriesTimerId))
|
if (!string.IsNullOrEmpty(timer.SeriesTimerId))
|
||||||
{
|
{
|
||||||
program.SeriesTimerId = _tvDtoService.GetInternalSeriesTimerId(program.ServiceName, timer.SeriesTimerId)
|
program.SeriesTimerId = _tvDtoService.GetInternalSeriesTimerId(internalProgram.ServiceName, timer.SeriesTimerId)
|
||||||
.ToString("N");
|
.ToString("N");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1362,6 +1353,43 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AddInfoToProgramDto(BaseItem item, BaseItemDto dto, User user = null)
|
||||||
|
{
|
||||||
|
var program = (LiveTvProgram)item;
|
||||||
|
var service = GetService(program);
|
||||||
|
|
||||||
|
var channel = string.IsNullOrEmpty(program.ExternalChannelId) ? null : GetInternalChannel(_tvDtoService.GetInternalChannelId(service.Name, program.ExternalChannelId));
|
||||||
|
|
||||||
|
dto.Id = _tvDtoService.GetInternalProgramId(service.Name, program.ExternalId).ToString("N");
|
||||||
|
|
||||||
|
dto.ChannelId = _tvDtoService.GetInternalChannelId(service.Name, program.ExternalChannelId).ToString("N");
|
||||||
|
|
||||||
|
dto.StartDate = program.StartDate;
|
||||||
|
dto.IsRepeat = program.IsRepeat;
|
||||||
|
dto.EpisodeTitle = program.EpisodeTitle;
|
||||||
|
dto.ChannelType = program.ChannelType;
|
||||||
|
dto.Audio = program.Audio;
|
||||||
|
dto.IsHD = program.IsHD;
|
||||||
|
dto.IsMovie = program.IsMovie;
|
||||||
|
dto.IsSeries = program.IsSeries;
|
||||||
|
dto.IsSports = program.IsSports;
|
||||||
|
dto.IsLive = program.IsLive;
|
||||||
|
dto.IsNews = program.IsNews;
|
||||||
|
dto.IsKids = program.IsKids;
|
||||||
|
dto.IsPremiere = program.IsPremiere;
|
||||||
|
dto.OriginalAirDate = program.OriginalAirDate;
|
||||||
|
|
||||||
|
if (channel != null)
|
||||||
|
{
|
||||||
|
dto.ChannelName = channel.Name;
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(channel.PrimaryImagePath))
|
||||||
|
{
|
||||||
|
dto.ChannelPrimaryImageTag = _tvDtoService.GetImageTag(channel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void AddInfoToRecordingDto(BaseItem item, BaseItemDto dto, User user = null)
|
public void AddInfoToRecordingDto(BaseItem item, BaseItemDto dto, User user = null)
|
||||||
{
|
{
|
||||||
var recording = (ILiveTvRecording)item;
|
var recording = (ILiveTvRecording)item;
|
||||||
|
@ -1392,7 +1420,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
dto.IsNews = info.IsNews;
|
dto.IsNews = info.IsNews;
|
||||||
dto.IsKids = info.IsKids;
|
dto.IsKids = info.IsKids;
|
||||||
dto.IsPremiere = info.IsPremiere;
|
dto.IsPremiere = info.IsPremiere;
|
||||||
dto.RunTimeTicks = (info.EndDate - info.StartDate).Ticks;
|
|
||||||
dto.OriginalAirDate = info.OriginalAirDate;
|
dto.OriginalAirDate = info.OriginalAirDate;
|
||||||
|
|
||||||
dto.CanDelete = user == null
|
dto.CanDelete = user == null
|
||||||
|
@ -1751,7 +1778,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||||
info.Name = program.Name;
|
info.Name = program.Name;
|
||||||
info.Overview = program.Overview;
|
info.Overview = program.Overview;
|
||||||
info.ProgramId = programDto.Id;
|
info.ProgramId = programDto.Id;
|
||||||
info.ExternalProgramId = programDto.ExternalId;
|
info.ExternalProgramId = program.ExternalId;
|
||||||
|
|
||||||
if (program.EndDate.HasValue)
|
if (program.EndDate.HasValue)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user