diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-01-12 11:55:38 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-01-12 11:55:38 -0500 |
| commit | edd19f6c45eee0cb1ad247af7b2b223dd3c3fa5d (patch) | |
| tree | 6db52cdd542fce398dfe4c54de1a854312b46523 /MediaBrowser.Server.Implementations | |
| parent | 109e3b4966c2fc1aa0c90fd355628c4ad7321f10 (diff) | |
added live tv settings page
Diffstat (limited to 'MediaBrowser.Server.Implementations')
| -rw-r--r-- | MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 91766e0f8..ef8f515f5 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -1,6 +1,7 @@ using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Controller; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; @@ -27,7 +28,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv /// </summary> public class LiveTvManager : ILiveTvManager, IDisposable { - private readonly IServerApplicationPaths _appPaths; + private readonly IServerConfigurationManager _config; private readonly IFileSystem _fileSystem; private readonly ILogger _logger; private readonly IItemRepository _itemRepo; @@ -46,9 +47,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv private List<Guid> _channelIdList = new List<Guid>(); private Dictionary<Guid, LiveTvProgram> _programs = new Dictionary<Guid, LiveTvProgram>(); - public LiveTvManager(IServerApplicationPaths appPaths, IFileSystem fileSystem, ILogger logger, IItemRepository itemRepo, IImageProcessor imageProcessor, IUserDataManager userDataManager, IDtoService dtoService, IUserManager userManager, ILibraryManager libraryManager, IMediaEncoder mediaEncoder) + public LiveTvManager(IServerConfigurationManager config, IFileSystem fileSystem, ILogger logger, IItemRepository itemRepo, IImageProcessor imageProcessor, IUserDataManager userDataManager, IDtoService dtoService, IUserManager userManager, ILibraryManager libraryManager, IMediaEncoder mediaEncoder) { - _appPaths = appPaths; + _config = config; _fileSystem = fileSystem; _logger = logger; _itemRepo = itemRepo; @@ -217,7 +218,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv private async Task<LiveTvChannel> GetChannel(ChannelInfo channelInfo, string serviceName, CancellationToken cancellationToken) { - var path = Path.Combine(_appPaths.ItemsByNamePath, "channels", _fileSystem.GetValidFilename(channelInfo.Name)); + var path = Path.Combine(_config.ApplicationPaths.ItemsByNamePath, "channels", _fileSystem.GetValidFilename(channelInfo.Name)); var fileInfo = new DirectoryInfo(path); @@ -659,6 +660,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv numComplete = 0; var programs = new List<LiveTvProgram>(); + var guideDays = GetGuideDays(list.Count); + foreach (var item in list) { // Avoid implicitly captured closure @@ -666,8 +669,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv try { - var start = DateTime.UtcNow; - var end = start.AddDays(3); + var start = DateTime.UtcNow.AddHours(-1); + var end = start.AddDays(guideDays); var channelPrograms = await service.GetProgramsAsync(currentChannel.ChannelInfo.Id, start, end, cancellationToken).ConfigureAwait(false); @@ -695,6 +698,23 @@ namespace MediaBrowser.Server.Implementations.LiveTv _programs = programs.ToDictionary(i => i.Id); } + private double GetGuideDays(int channelCount) + { + if (_config.Configuration.LiveTvOptions.GuideDays.HasValue) + { + return _config.Configuration.LiveTvOptions.GuideDays.Value; + } + + var programsPerDay = channelCount * 48; + + const int maxPrograms = 32000; + + var days = Math.Round(((double)maxPrograms) / programsPerDay); + + // No less than 2, no more than 14 + return Math.Max(2, Math.Min(days, 14)); + } + private async Task<IEnumerable<Tuple<string, ChannelInfo>>> GetChannels(ILiveTvService service, CancellationToken cancellationToken) { var channels = await service.GetChannelsAsync(cancellationToken).ConfigureAwait(false); |
