diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations')
| -rw-r--r-- | MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs | 62 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs | 19 |
2 files changed, 71 insertions, 10 deletions
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 12241876a..00ac83f15 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -417,7 +417,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv .ToList(); } - var returnArray = list.ToArray(); + var returnArray = list.OrderByDescending(i => i.StartDate) + .ToArray(); return new QueryResult<RecordingInfoDto> { @@ -451,5 +452,64 @@ namespace MediaBrowser.Server.Implementations.LiveTv { throw new NotImplementedException(); } + + public async Task<QueryResult<TimerInfoDto>> GetTimers(TimerQuery query, CancellationToken cancellationToken) + { + var list = new List<TimerInfoDto>(); + + foreach (var service in GetServices(query.ServiceName, query.ChannelId)) + { + var timers = await GetTimers(service, cancellationToken).ConfigureAwait(false); + + list.AddRange(timers); + } + + if (!string.IsNullOrEmpty(query.ChannelId)) + { + list = list.Where(i => string.Equals(i.ChannelId, query.ChannelId)) + .ToList(); + } + + var returnArray = list.OrderByDescending(i => i.StartDate) + .ToArray(); + + return new QueryResult<TimerInfoDto> + { + Items = returnArray, + TotalRecordCount = returnArray.Length + }; + } + + private async Task<IEnumerable<TimerInfoDto>> GetTimers(ILiveTvService service, CancellationToken cancellationToken) + { + var timers = await service.GetTimersAsync(cancellationToken).ConfigureAwait(false); + + return timers.Select(i => GetTimerInfoDto(i, service)); + } + + private TimerInfoDto GetTimerInfoDto(TimerInfo info, ILiveTvService service) + { + var id = service.Name + info.ChannelId + info.Id; + id = id.GetMD5().ToString("N"); + + var dto = new TimerInfoDto + { + ChannelName = info.ChannelName, + Description = info.Description, + EndDate = info.EndDate, + Name = info.Name, + StartDate = info.StartDate, + Id = id, + ExternalId = info.Id, + ChannelId = GetInternalChannelId(service.Name, info.ChannelId).ToString("N"), + Status = info.Status, + IsRecurring = info.IsRecurring, + RecurringDays = info.RecurringDays + }; + + return dto; + } + + } } diff --git a/MediaBrowser.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs b/MediaBrowser.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs index bdc343dea..76971342a 100644 --- a/MediaBrowser.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs @@ -22,7 +22,7 @@ namespace MediaBrowser.Server.Implementations.Sorting if (val != 0) { - return val; + //return val; } } @@ -49,8 +49,8 @@ namespace MediaBrowser.Server.Implementations.Sorting private int Compare(Episode x, Episode y) { - var isXSpecial = (x.ParentIndexNumber ?? -1) == 0; - var isYSpecial = (y.ParentIndexNumber ?? -1) == 0; + var isXSpecial = (x.PhysicalSeasonNumber ?? -1) == 0; + var isYSpecial = (y.PhysicalSeasonNumber ?? -1) == 0; if (isXSpecial && isYSpecial) { @@ -67,12 +67,12 @@ namespace MediaBrowser.Server.Implementations.Sorting return CompareEpisodeToSpecial(x, y); } - return CompareEpisodeToSpecial(x, y) * -1; + return CompareEpisodeToSpecial(y, x) * -1; } private int CompareEpisodeToSpecial(Episode x, Episode y) { - var xSeason = x.ParentIndexNumber ?? -1; + var xSeason = x.PhysicalSeasonNumber ?? -1; var ySeason = y.AirsAfterSeasonNumber ?? y.AirsBeforeSeasonNumber ?? -1; if (xSeason != ySeason) @@ -85,8 +85,9 @@ namespace MediaBrowser.Server.Implementations.Sorting // Compare episode number // Add 1 to to non-specials to account for AirsBeforeEpisodeNumber - var xEpisode = (x.IndexNumber ?? 0) * 1000 + 1; - var yEpisode = (y.AirsBeforeEpisodeNumber ?? 0) * 1000; + var xEpisode = x.IndexNumber ?? -1; + xEpisode++; + var yEpisode = y.AirsBeforeEpisodeNumber ?? 10000; return xEpisode.CompareTo(yEpisode); } @@ -119,8 +120,8 @@ namespace MediaBrowser.Server.Implementations.Sorting private int CompareEpisodes(Episode x, Episode y) { - var xValue = ((x.ParentIndexNumber ?? -1) * 1000) + (x.IndexNumber ?? -1); - var yValue = ((y.ParentIndexNumber ?? -1) * 1000) + (y.IndexNumber ?? -1); + var xValue = ((x.PhysicalSeasonNumber ?? -1) * 1000) + (x.IndexNumber ?? -1); + var yValue = ((y.PhysicalSeasonNumber ?? -1) * 1000) + (y.IndexNumber ?? -1); return xValue.CompareTo(yValue); } |
