mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-03-06 18:26:33 +00:00
live tv updates
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Controller.Drawing;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
@@ -10,6 +8,9 @@ using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.LiveTv;
|
||||
using MediaBrowser.Model.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
{
|
||||
@@ -43,10 +44,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
ChannelId = GetInternalChannelId(service.Name, info.ChannelId, info.ChannelName).ToString("N"),
|
||||
Status = info.Status,
|
||||
SeriesTimerId = string.IsNullOrEmpty(info.SeriesTimerId) ? null : GetInternalSeriesTimerId(service.Name, info.SeriesTimerId).ToString("N"),
|
||||
RequestedPostPaddingSeconds = info.RequestedPostPaddingSeconds,
|
||||
RequestedPrePaddingSeconds = info.RequestedPrePaddingSeconds,
|
||||
RequiredPostPaddingSeconds = info.RequiredPostPaddingSeconds,
|
||||
RequiredPrePaddingSeconds = info.RequiredPrePaddingSeconds,
|
||||
PrePaddingSeconds = info.PrePaddingSeconds,
|
||||
PostPaddingSeconds = info.PostPaddingSeconds,
|
||||
IsPostPaddingRequired = info.IsPostPaddingRequired,
|
||||
IsPrePaddingRequired = info.IsPrePaddingRequired,
|
||||
ExternalChannelId = info.ChannelId,
|
||||
ExternalSeriesTimerId = info.SeriesTimerId,
|
||||
ServiceName = service.Name,
|
||||
@@ -76,10 +77,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
Name = info.Name,
|
||||
StartDate = info.StartDate,
|
||||
ExternalId = info.Id,
|
||||
RequestedPostPaddingSeconds = info.RequestedPostPaddingSeconds,
|
||||
RequestedPrePaddingSeconds = info.RequestedPrePaddingSeconds,
|
||||
RequiredPostPaddingSeconds = info.RequiredPostPaddingSeconds,
|
||||
RequiredPrePaddingSeconds = info.RequiredPrePaddingSeconds,
|
||||
PrePaddingSeconds = info.PrePaddingSeconds,
|
||||
PostPaddingSeconds = info.PostPaddingSeconds,
|
||||
IsPostPaddingRequired = info.IsPostPaddingRequired,
|
||||
IsPrePaddingRequired = info.IsPrePaddingRequired,
|
||||
Days = info.Days,
|
||||
Priority = info.Priority,
|
||||
RecordAnyChannel = info.RecordAnyChannel,
|
||||
@@ -100,33 +101,38 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
dto.ProgramId = GetInternalProgramId(service.Name, info.ProgramId).ToString("N");
|
||||
}
|
||||
|
||||
dto.DayPattern = info.Days == null ? null : GetDayPattern(info.Days);
|
||||
|
||||
return dto;
|
||||
}
|
||||
|
||||
public DayPattern? GetDayPattern(List<DayOfWeek> days)
|
||||
{
|
||||
DayPattern? pattern = null;
|
||||
|
||||
if (info.Days != null && info.Days.Count > 0)
|
||||
if (days.Count > 0)
|
||||
{
|
||||
if (info.Days.Count == 7)
|
||||
if (days.Count == 7)
|
||||
{
|
||||
pattern = DayPattern.Daily;
|
||||
}
|
||||
else if (info.Days.Count == 2)
|
||||
else if (days.Count == 2)
|
||||
{
|
||||
if (info.Days.Contains(DayOfWeek.Saturday) && info.Days.Contains(DayOfWeek.Sunday))
|
||||
if (days.Contains(DayOfWeek.Saturday) && days.Contains(DayOfWeek.Sunday))
|
||||
{
|
||||
pattern = DayPattern.Weekends;
|
||||
}
|
||||
}
|
||||
else if (info.Days.Count == 5)
|
||||
else if (days.Count == 5)
|
||||
{
|
||||
if (info.Days.Contains(DayOfWeek.Monday) && info.Days.Contains(DayOfWeek.Tuesday) && info.Days.Contains(DayOfWeek.Wednesday) && info.Days.Contains(DayOfWeek.Thursday) && info.Days.Contains(DayOfWeek.Friday))
|
||||
if (days.Contains(DayOfWeek.Monday) && days.Contains(DayOfWeek.Tuesday) && days.Contains(DayOfWeek.Wednesday) && days.Contains(DayOfWeek.Thursday) && days.Contains(DayOfWeek.Friday))
|
||||
{
|
||||
pattern = DayPattern.Weekdays;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dto.DayPattern = pattern;
|
||||
|
||||
return dto;
|
||||
return pattern;
|
||||
}
|
||||
|
||||
public RecordingInfoDto GetRecordingInfoDto(RecordingInfo info, ILiveTvService service, User user = null)
|
||||
@@ -228,7 +234,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
AspectRatio = program.AspectRatio,
|
||||
IsRepeat = program.IsRepeat,
|
||||
EpisodeTitle = program.EpisodeTitle,
|
||||
ChannelName = program.ChannelName
|
||||
ChannelName = program.ChannelName,
|
||||
IsMovie = program.IsMovie,
|
||||
IsSeries = program.IsSeries,
|
||||
IsSports = program.IsSports
|
||||
};
|
||||
|
||||
if (user != null)
|
||||
@@ -306,10 +315,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
StartDate = dto.StartDate,
|
||||
Status = dto.Status,
|
||||
SeriesTimerId = dto.ExternalSeriesTimerId,
|
||||
RequestedPostPaddingSeconds = dto.RequestedPostPaddingSeconds,
|
||||
RequestedPrePaddingSeconds = dto.RequestedPrePaddingSeconds,
|
||||
RequiredPostPaddingSeconds = dto.RequiredPostPaddingSeconds,
|
||||
RequiredPrePaddingSeconds = dto.RequiredPrePaddingSeconds,
|
||||
PrePaddingSeconds = dto.PrePaddingSeconds,
|
||||
PostPaddingSeconds = dto.PostPaddingSeconds,
|
||||
IsPostPaddingRequired = dto.IsPostPaddingRequired,
|
||||
IsPrePaddingRequired = dto.IsPrePaddingRequired,
|
||||
Priority = dto.Priority
|
||||
};
|
||||
|
||||
@@ -354,10 +363,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
EndDate = dto.EndDate,
|
||||
Name = dto.Name,
|
||||
StartDate = dto.StartDate,
|
||||
RequestedPostPaddingSeconds = dto.RequestedPostPaddingSeconds,
|
||||
RequestedPrePaddingSeconds = dto.RequestedPrePaddingSeconds,
|
||||
RequiredPostPaddingSeconds = dto.RequiredPostPaddingSeconds,
|
||||
RequiredPrePaddingSeconds = dto.RequiredPrePaddingSeconds,
|
||||
PrePaddingSeconds = dto.PrePaddingSeconds,
|
||||
PostPaddingSeconds = dto.PostPaddingSeconds,
|
||||
IsPostPaddingRequired = dto.IsPostPaddingRequired,
|
||||
IsPrePaddingRequired = dto.IsPrePaddingRequired,
|
||||
Days = dto.Days,
|
||||
Priority = dto.Priority,
|
||||
RecordAnyChannel = dto.RecordAnyChannel,
|
||||
|
||||
@@ -459,11 +459,41 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
return results.Items.FirstOrDefault(i => string.Equals(i.Id, id, StringComparison.CurrentCulture));
|
||||
}
|
||||
|
||||
public async Task<TimerInfoDto> GetNewTimerDefaults(CancellationToken cancellationToken)
|
||||
public async Task<SeriesTimerInfoDto> GetNewTimerDefaults(CancellationToken cancellationToken)
|
||||
{
|
||||
var info = await ActiveService.GetNewTimerDefaultsAsync(cancellationToken).ConfigureAwait(false);
|
||||
|
||||
return _tvDtoService.GetTimerInfoDto(info, ActiveService);
|
||||
var obj = _tvDtoService.GetSeriesTimerInfoDto(info, ActiveService);
|
||||
|
||||
obj.Id = obj.ExternalId = string.Empty;
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
public async Task<SeriesTimerInfoDto> GetNewTimerDefaults(string programId, CancellationToken cancellationToken)
|
||||
{
|
||||
var info = await GetNewTimerDefaults(cancellationToken).ConfigureAwait(false);
|
||||
|
||||
var program = await GetProgram(programId, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
info.Days = new List<DayOfWeek>
|
||||
{
|
||||
program.StartDate.ToLocalTime().DayOfWeek
|
||||
};
|
||||
|
||||
info.DayPattern = _tvDtoService.GetDayPattern(info.Days);
|
||||
|
||||
info.Name = program.Name;
|
||||
info.ChannelId = program.ChannelId;
|
||||
info.ChannelName = program.ChannelName;
|
||||
info.EndDate = program.EndDate;
|
||||
info.StartDate = program.StartDate;
|
||||
info.Name = program.Name;
|
||||
info.Overview = program.Overview;
|
||||
info.ProgramId = program.Id;
|
||||
info.ExternalProgramId = program.ExternalId;
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
public async Task CreateTimer(TimerInfoDto timer, CancellationToken cancellationToken)
|
||||
@@ -472,6 +502,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
|
||||
var info = await _tvDtoService.GetTimerInfo(timer, true, this, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
// Set priority from default values
|
||||
var defaultValues = await service.GetNewTimerDefaultsAsync(cancellationToken).ConfigureAwait(false);
|
||||
info.Priority = defaultValues.Priority;
|
||||
|
||||
await service.CreateTimerAsync(info, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -481,6 +515,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
||||
|
||||
var info = await _tvDtoService.GetSeriesTimerInfo(timer, true, this, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
// Set priority from default values
|
||||
var defaultValues = await service.GetNewTimerDefaultsAsync(cancellationToken).ConfigureAwait(false);
|
||||
info.Priority = defaultValues.Priority;
|
||||
|
||||
await service.CreateSeriesTimerAsync(info, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user