diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-12-13 13:23:03 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-12-13 13:23:03 -0500 |
| commit | ffad9c27e4844eeab235f88cb45739370d22a83a (patch) | |
| tree | d665d20f34066e46282328db8585f02b68d7f781 /Emby.Server.Implementations | |
| parent | afabbfa22beba80d448dc435a2008ec45e805dd6 (diff) | |
automatically adjust timer schedules to program changes
Diffstat (limited to 'Emby.Server.Implementations')
4 files changed, 29 insertions, 1 deletions
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj index 92e83f05b..df0301fc3 100644 --- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj +++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj @@ -181,6 +181,7 @@ <Compile Include="Localization\LocalizationManager.cs" /> <Compile Include="MediaEncoder\EncodingManager.cs" /> <Compile Include="Migrations\IVersionMigration.cs" /> + <Compile Include="Migrations\LibraryScanMigration.cs" /> <Compile Include="Migrations\UpdateLevelMigration.cs" /> <Compile Include="News\NewsEntryPoint.cs" /> <Compile Include="News\NewsService.cs" /> diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs index f5bef058d..84a255c7a 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs @@ -328,15 +328,35 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV } await UpdateTimersForSeriesTimer(epgData, timer, true).ConfigureAwait(false); } + } + public async Task RefreshTimers(CancellationToken cancellationToken, IProgress<double> progress) + { var timers = await GetTimersAsync(cancellationToken).ConfigureAwait(false); - foreach (var timer in timers.ToList()) + foreach (var timer in timers) { if (DateTime.UtcNow > timer.EndDate && !_activeRecordings.ContainsKey(timer.Id)) { OnTimerOutOfDate(timer); + continue; + } + + if (string.IsNullOrWhiteSpace(timer.ProgramId) || string.IsNullOrWhiteSpace(timer.ChannelId)) + { + continue; + } + + var epg = GetEpgDataForChannel(timer.ChannelId); + var program = epg.FirstOrDefault(i => string.Equals(i.Id, timer.ProgramId, StringComparison.OrdinalIgnoreCase)); + if (program == null) + { + OnTimerOutOfDate(timer); + continue; } + + RecordingHelper.CopyProgramInfoToTimerInfo(program, timer); + _timerProvider.Update(timer); } } diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs index 881aaaf0d..a5b19ff52 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs @@ -41,6 +41,11 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV public static void CopyProgramInfoToTimerInfo(ProgramInfo programInfo, TimerInfo timerInfo) { + timerInfo.Name = programInfo.Name; + timerInfo.StartDate = programInfo.StartDate; + timerInfo.EndDate = programInfo.EndDate; + timerInfo.ChannelId = programInfo.ChannelId; + timerInfo.SeasonNumber = programInfo.SeasonNumber; timerInfo.EpisodeNumber = programInfo.EpisodeNumber; timerInfo.IsMovie = programInfo.IsMovie; @@ -54,6 +59,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV timerInfo.HomePageUrl = programInfo.HomePageUrl; timerInfo.CommunityRating = programInfo.CommunityRating; + timerInfo.Overview = programInfo.Overview; timerInfo.ShortOverview = programInfo.ShortOverview; timerInfo.OfficialRating = programInfo.OfficialRating; timerInfo.IsRepeat = programInfo.IsRepeat; diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs index faf9687f4..5e12fc9b9 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs @@ -1231,6 +1231,7 @@ namespace Emby.Server.Implementations.LiveTv if (coreService != null) { await coreService.RefreshSeriesTimers(cancellationToken, new Progress<double>()).ConfigureAwait(false); + await coreService.RefreshTimers(cancellationToken, new Progress<double>()).ConfigureAwait(false); } // Load these now which will prefetch metadata |
