aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs62
-rw-r--r--MediaBrowser.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs19
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);
}