diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index f25cf541b..989ed3c35 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -726,7 +726,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv foreach (var channelInfo in allChannelsList) { cancellationToken.ThrowIfCancellationRequested(); - + try { var item = await GetChannel(channelInfo.Item2, channelInfo.Item1, cancellationToken).ConfigureAwait(false); @@ -764,7 +764,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv foreach (var item in list) { cancellationToken.ThrowIfCancellationRequested(); - + // Avoid implicitly captured closure var currentChannel = item; @@ -793,17 +793,44 @@ namespace MediaBrowser.Server.Implementations.LiveTv double percent = numComplete; percent /= allChannelsList.Count; - progress.Report(80 * percent + 10); + progress.Report(70 * percent + 10); } _programs = programs.ToDictionary(i => i.Id); + progress.Report(80); // Load these now which will prefetch metadata await GetRecordings(new RecordingQuery(), cancellationToken).ConfigureAwait(false); - + progress.Report(85); + + await DeleteOldPrograms(_programs.Keys.ToList(), progress, cancellationToken).ConfigureAwait(false); + progress.Report(100); } + private async Task DeleteOldPrograms(List<Guid> currentIdList, IProgress<double> progress, CancellationToken cancellationToken) + { + var list = _itemRepo.GetItemsOfType(typeof(LiveTvProgram)).ToList(); + + var numComplete = 0; + + foreach (var program in list) + { + cancellationToken.ThrowIfCancellationRequested(); + + if (!currentIdList.Contains(program.Id)) + { + await _libraryManager.DeleteItem(program).ConfigureAwait(false); + } + + numComplete++; + double percent = numComplete; + percent /= list.Count; + + progress.Report(15 * percent + 85); + } + } + private double GetGuideDays(int channelCount) { if (_config.Configuration.LiveTvOptions.GuideDays.HasValue) |
