aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-01-12 11:55:38 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-01-12 11:55:38 -0500
commitedd19f6c45eee0cb1ad247af7b2b223dd3c3fa5d (patch)
tree6db52cdd542fce398dfe4c54de1a854312b46523 /MediaBrowser.Server.Implementations
parent109e3b4966c2fc1aa0c90fd355628c4ad7321f10 (diff)
added live tv settings page
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs32
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);