diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-12 11:51:48 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-12 11:51:48 -0400 |
| commit | e62b663ae049548b5f2169a9fbf984f1fa539183 (patch) | |
| tree | 797af872e4be8b3509c8afb6ffd96ea0e2e2888a /MediaBrowser.Server.Implementations | |
| parent | 028a0a857ab6d7f42544e2ae3a3f79f5632844fc (diff) | |
remove more reliance on ActiveService
Diffstat (limited to 'MediaBrowser.Server.Implementations')
3 files changed, 34 insertions, 82 deletions
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 14a2b08a7..ec5ac3cae 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -103,27 +103,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv { _services.AddRange(services); - SetActiveService(GetConfiguration().ActiveService); - } - - private void SetActiveService(string name) - { - var service = _services.FirstOrDefault(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase)) ?? - _services.FirstOrDefault(); - - SetActiveService(service); - } - - private void SetActiveService(ILiveTvService service) - { - if (ActiveService != null) - { - ActiveService.DataSourceChanged -= service_DataSourceChanged; - } + ActiveService = _services.FirstOrDefault(); - ActiveService = service; - - if (service != null) + foreach (var service in _services) { service.DataSourceChanged += service_DataSourceChanged; } @@ -324,13 +306,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task<ILiveTvRecording> GetInternalRecording(string id, CancellationToken cancellationToken) { - var service = ActiveService; - - var recordings = await service.GetRecordingsAsync(cancellationToken).ConfigureAwait(false); + var result = await GetInternalRecordings(new RecordingQuery + { + Id = id - var recording = recordings.FirstOrDefault(i => _tvDtoService.GetInternalRecordingId(service.Name, i.Id) == new Guid(id)); + }, cancellationToken).ConfigureAwait(false); - return await GetRecording(recording, service.Name, cancellationToken).ConfigureAwait(false); + return result.Items.FirstOrDefault() as ILiveTvRecording; } private readonly SemaphoreSlim _liveStreamSemaphore = new SemaphoreSlim(1, 1); @@ -345,29 +327,38 @@ namespace MediaBrowser.Server.Implementations.LiveTv return await GetLiveStream(id, true, cancellationToken).ConfigureAwait(false); } + private ILiveTvService GetService(ILiveTvItem item) + { + return GetService(item.ServiceName); + } + + private ILiveTvService GetService(string name) + { + return _services.FirstOrDefault(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase)); + } + private async Task<ChannelMediaInfo> GetLiveStream(string id, bool isChannel, CancellationToken cancellationToken) { await _liveStreamSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false); try { - var service = ActiveService; ChannelMediaInfo info; if (isChannel) { var channel = GetInternalChannel(id); + var service = GetService(channel); _logger.Info("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ExternalId); - info = await service.GetChannelStream(channel.ExternalId, cancellationToken).ConfigureAwait(false); } else { - var recordings = await service.GetRecordingsAsync(cancellationToken).ConfigureAwait(false); - var recording = recordings.First(i => _tvDtoService.GetInternalRecordingId(service.Name, i.Id) == new Guid(id)); + var recording = await GetInternalRecording(id, cancellationToken).ConfigureAwait(false); + var service = GetService(recording); - _logger.Info("Opening recording stream from {0}, external recording Id: {1}", service.Name, recording.Id); - info = await service.GetRecordingStream(recording.Id, cancellationToken).ConfigureAwait(false); + _logger.Info("Opening recording stream from {0}, external recording Id: {1}", service.Name, recording.RecordingInfo.Id); + info = await service.GetRecordingStream(recording.RecordingInfo.Id, cancellationToken).ConfigureAwait(false); } _logger.Info("Live stream info: {0}", _jsonSerializer.SerializeToString(info)); @@ -668,13 +659,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv if (query.ChannelIdList.Length > 0) { var guids = query.ChannelIdList.Select(i => new Guid(i)).ToList(); - var serviceName = ActiveService.Name; programs = programs.Where(i => { var programChannelId = i.ExternalChannelId; - var internalProgramChannelId = _tvDtoService.GetInternalChannelId(serviceName, programChannelId); + var service = GetService(i); + var internalProgramChannelId = _tvDtoService.GetInternalChannelId(service.Name, programChannelId); return guids.Contains(internalProgramChannelId); }); @@ -1030,14 +1021,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv private async Task DeleteOldPrograms(List<Guid> currentIdList, IProgress<double> progress, CancellationToken cancellationToken) { - var service = ActiveService; - - if (service == null) - { - progress.Report(100); - return; - } - var list = _itemRepo.GetItemsOfType(typeof(LiveTvProgram)).ToList(); var numComplete = 0; @@ -1223,28 +1206,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv return Task.WhenAll(tasks); } - private IEnumerable<ILiveTvService> GetServices(string serviceName, string channelId) - { - IEnumerable<ILiveTvService> services = _services; - - if (string.IsNullOrEmpty(serviceName) && !string.IsNullOrEmpty(channelId)) - { - var channel = GetInternalChannel(channelId); - - if (channel != null) - { - serviceName = channel.ServiceName; - } - } - - if (!string.IsNullOrEmpty(serviceName)) - { - services = services.Where(i => string.Equals(i.Name, serviceName, StringComparison.OrdinalIgnoreCase)); - } - - return services; - } - public async Task<QueryResult<TimerInfoDto>> GetTimers(TimerQuery query, CancellationToken cancellationToken) { var service = ActiveService; @@ -1299,8 +1260,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv throw new ResourceNotFoundException(string.Format("Recording with Id {0} not found", recordingId)); } - var service = GetServices(recording.ServiceName, null) - .First(); + var service = GetService(recording.ServiceName); await service.DeleteRecordingAsync(recording.ExternalId, CancellationToken.None).ConfigureAwait(false); } @@ -1314,8 +1274,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv throw new ResourceNotFoundException(string.Format("Timer with Id {0} not found", id)); } - var service = GetServices(timer.ServiceName, null) - .First(); + var service = GetService(timer.ServiceName); await service.CancelTimerAsync(timer.ExternalId, CancellationToken.None).ConfigureAwait(false); } @@ -1329,8 +1288,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv throw new ResourceNotFoundException(string.Format("Timer with Id {0} not found", id)); } - var service = GetServices(timer.ServiceName, null) - .First(); + var service = GetService(timer.ServiceName); await service.CancelSeriesTimerAsync(timer.ExternalId, CancellationToken.None).ConfigureAwait(false); } @@ -1518,7 +1476,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task CreateTimer(TimerInfoDto timer, CancellationToken cancellationToken) { - var service = string.IsNullOrEmpty(timer.ServiceName) ? ActiveService : GetServices(timer.ServiceName, null).First(); + var service = GetService(timer.ServiceName); var info = await _tvDtoService.GetTimerInfo(timer, true, this, cancellationToken).ConfigureAwait(false); @@ -1531,7 +1489,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task CreateSeriesTimer(SeriesTimerInfoDto timer, CancellationToken cancellationToken) { - var service = string.IsNullOrEmpty(timer.ServiceName) ? ActiveService : GetServices(timer.ServiceName, null).First(); + var service = GetService(timer.ServiceName); var info = await _tvDtoService.GetSeriesTimerInfo(timer, true, this, cancellationToken).ConfigureAwait(false); @@ -1546,7 +1504,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv { var info = await _tvDtoService.GetTimerInfo(timer, false, this, cancellationToken).ConfigureAwait(false); - var service = string.IsNullOrEmpty(timer.ServiceName) ? ActiveService : GetServices(timer.ServiceName, null).First(); + var service = GetService(timer.ServiceName); await service.UpdateTimerAsync(info, cancellationToken).ConfigureAwait(false); } @@ -1555,7 +1513,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv { var info = await _tvDtoService.GetSeriesTimerInfo(timer, false, this, cancellationToken).ConfigureAwait(false); - var service = string.IsNullOrEmpty(timer.ServiceName) ? ActiveService : GetServices(timer.ServiceName, null).First(); + var service = GetService(timer.ServiceName); await service.UpdateSeriesTimerAsync(info, cancellationToken).ConfigureAwait(false); } @@ -1821,16 +1779,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv var services = await GetServiceInfos(CancellationToken.None).ConfigureAwait(false); var servicesList = services.ToList(); - var activeServiceInfo = ActiveService == null ? null : - servicesList.FirstOrDefault(i => string.Equals(i.Name, ActiveService.Name, StringComparison.OrdinalIgnoreCase)); - var info = new LiveTvInfo { Services = servicesList.ToList(), - ActiveServiceName = activeServiceInfo == null ? null : activeServiceInfo.Name, - IsEnabled = ActiveService != null, - Status = activeServiceInfo == null ? LiveTvServiceStatus.Unavailable : activeServiceInfo.Status, - StatusMessage = activeServiceInfo == null ? null : activeServiceInfo.StatusMessage + IsEnabled = servicesList.Count > 0 }; info.EnabledUsers = _userManager.Users diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index 616f8863c..0c890e626 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -586,6 +586,7 @@ "ValuePremieres": "Premieres {0}", "ValueStudio": "Studio: {0}", "ValueStudios": "Studios: {0}", + "ValueStatus": "Status: {0}", "ValueSpecialEpisodeName": "Special - {0}", "LabelLimit": "Limit:", "ValueLinks": "Links: {0}", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index d6fe5bb97..9464309b7 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -415,9 +415,8 @@ "TitleLiveTV": "Live TV", "LabelNumberOfGuideDays": "Number of days of guide data to download:", "LabelNumberOfGuideDaysHelp": "Downloading more days worth of guide data provides the ability to schedule out further in advance and view more listings, but it will also take longer to download. Auto will choose based on the number of channels.", - "LabelActiveService": "Active Service:", - "LabelActiveServiceHelp": "Multiple tv plugins can be installed but only one can be active at a time.", "OptionAutomatic": "Auto", + "HeaderServices": "Services", "LiveTvPluginRequired": "A Live TV service provider plugin is required in order to continue.", "LiveTvPluginRequiredHelp": "Please install one of our available plugins, such as Next Pvr or ServerWmc.", "LabelCustomizeOptionsPerMediaType": "Customize for media type:", |
