Forráskód Böngészése

stub out channel mapping

Luke Pulverenti 9 éve
szülő
commit
b0c1ba1e19

+ 85 - 1
MediaBrowser.Api/LiveTv/LiveTvService.cs

@@ -484,6 +484,30 @@ namespace MediaBrowser.Api.LiveTv
     {
     {
     }
     }
 
 
+    [Route("/LiveTv/ChannelMappingOptions")]
+    [Authenticated(AllowBeforeStartupWizard = true)]
+    public class GetChannelMappingOptions
+    {
+        [ApiMember(Name = "Id", Description = "Provider id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
+        public string ProviderId { get; set; }
+    }
+
+    public class ChannelMappingOptions
+    {
+        public List<TunerChannelMapping> TunerChannels { get; set; }
+        public List<NameIdPair> ProviderChannels { get; set; }
+        public List<NameValuePair> Mappings { get; set; }
+        public string ProviderName { get; set; }
+    }
+
+    public class TunerChannelMapping
+    {
+        public string Name { get; set; }
+        public string Number { get; set; }
+        public string ProviderChannelNumber { get; set; }
+        public string ProviderChannelName { get; set; }
+    }
+
     [Route("/LiveTv/Registration", "GET")]
     [Route("/LiveTv/Registration", "GET")]
     [Authenticated]
     [Authenticated]
     public class GetLiveTvRegistrationInfo : IReturn<MBRegistrationRecord>
     public class GetLiveTvRegistrationInfo : IReturn<MBRegistrationRecord>
@@ -550,6 +574,66 @@ namespace MediaBrowser.Api.LiveTv
             return ToOptimizedResult(result);
             return ToOptimizedResult(result);
         }
         }
 
 
+        public async Task<object> Get(GetChannelMappingOptions request)
+        {
+            var config = GetConfiguration();
+
+            var listingProvider = config.ListingProviders.First(i => string.Equals(request.ProviderId, i.Id, StringComparison.OrdinalIgnoreCase));
+
+            var tunerChannels = await _liveTvManager.GetChannelsForListingsProvider(request.ProviderId, CancellationToken.None)
+                        .ConfigureAwait(false);
+
+            var providerChannels = await _liveTvManager.GetChannelsFromListingsProviderData(request.ProviderId, CancellationToken.None)
+                     .ConfigureAwait(false);
+
+            var mappings = listingProvider.ChannelMappings.ToList();
+
+            var result = new ChannelMappingOptions
+            {
+                TunerChannels = tunerChannels.Select(i => GetTunerChannelMapping(i, mappings, providerChannels)).ToList(),
+
+                ProviderChannels = providerChannels.Select(i => new NameIdPair
+                {
+                    Name = i.Name,
+                    Id = i.Number
+
+                }).ToList(),
+
+                Mappings = mappings,
+
+                ProviderName = "Schedules Direct"
+            };
+
+            return ToOptimizedResult(result);
+        }
+
+        private TunerChannelMapping GetTunerChannelMapping(ChannelInfo channel, List<NameValuePair> mappings, List<ChannelInfo> providerChannels)
+        {
+            var result = new TunerChannelMapping
+            {
+                Name = channel.Number + " " + channel.Name,
+                Number = channel.Number
+            };
+
+            var mapping = mappings.FirstOrDefault(i => string.Equals(i.Name, channel.Number, StringComparison.OrdinalIgnoreCase));
+            var providerChannelNumber = channel.Number;
+
+            if (mapping != null)
+            {
+                providerChannelNumber = mapping.Value;
+            }
+
+            var providerChannel = providerChannels.FirstOrDefault(i => string.Equals(i.Number, providerChannelNumber, StringComparison.OrdinalIgnoreCase));
+
+            if (providerChannel != null)
+            {
+                result.ProviderChannelNumber = providerChannel.Number;
+                result.ProviderChannelName = providerChannel.Name;
+            }
+
+            return result;
+        }
+
         public object Get(GetSatIniMappings request)
         public object Get(GetSatIniMappings request)
         {
         {
             return ToOptimizedResult(_liveTvManager.GetSatIniMappings());
             return ToOptimizedResult(_liveTvManager.GetSatIniMappings());
@@ -657,7 +741,7 @@ namespace MediaBrowser.Api.LiveTv
                 Items = returnArray,
                 Items = returnArray,
                 TotalRecordCount = channelResult.TotalRecordCount
                 TotalRecordCount = channelResult.TotalRecordCount
             };
             };
-            
+
             return ToOptimizedSerializedResultUsingCache(result);
             return ToOptimizedSerializedResultUsingCache(result);
         }
         }
 
 

+ 6 - 0
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -1236,6 +1236,12 @@ namespace MediaBrowser.Api.Playback
             {
             {
                 var inputVideoCodec = videoStream == null ? null : videoStream.Codec;
                 var inputVideoCodec = videoStream == null ? null : videoStream.Codec;
                 bitrate = ResolutionNormalizer.ScaleBitrate(bitrate.Value, inputVideoCodec, outputVideoCodec);
                 bitrate = ResolutionNormalizer.ScaleBitrate(bitrate.Value, inputVideoCodec, outputVideoCodec);
+
+                // If a max bitrate was requested, don't let the scaled bitrate exceed it
+                if (request.VideoBitRate.HasValue)
+                {
+                    bitrate = Math.Min(bitrate.Value, request.VideoBitRate.Value);
+                }
             }
             }
 
 
             return bitrate;
             return bitrate;

+ 2 - 1
MediaBrowser.Controller/LiveTv/ILiveTvManager.cs

@@ -387,7 +387,8 @@ namespace MediaBrowser.Controller.LiveTv
 
 
         Task<List<ChannelInfo>> GetSatChannelScanResult(TunerHostInfo info, CancellationToken cancellationToken);
         Task<List<ChannelInfo>> GetSatChannelScanResult(TunerHostInfo info, CancellationToken cancellationToken);
 
 
-        Task<List<ChannelInfo>> GetChannelsFromListingsProvider(string id, CancellationToken cancellationToken);
+        Task<List<ChannelInfo>> GetChannelsForListingsProvider(string id, CancellationToken cancellationToken);
+        Task<List<ChannelInfo>> GetChannelsFromListingsProviderData(string id, CancellationToken cancellationToken);
 
 
         event EventHandler<GenericEventArgs<TimerEventInfo>> SeriesTimerCancelled;
         event EventHandler<GenericEventArgs<TimerEventInfo>> SeriesTimerCancelled;
         event EventHandler<GenericEventArgs<TimerEventInfo>> TimerCancelled;
         event EventHandler<GenericEventArgs<TimerEventInfo>> TimerCancelled;

+ 9 - 9
MediaBrowser.Dlna/Didl/DidlBuilder.cs

@@ -1015,17 +1015,17 @@ namespace MediaBrowser.Dlna.Didl
             int? width = null;
             int? width = null;
             int? height = null;
             int? height = null;
 
 
-            //try
-            //{
-            //    var size = _imageProcessor.GetImageSize(imageInfo);
+            try
+            {
+                var size = _imageProcessor.GetImageSize(imageInfo);
 
 
-            //    width = Convert.ToInt32(size.Width);
-            //    height = Convert.ToInt32(size.Height);
-            //}
-            //catch
-            //{
+                width = Convert.ToInt32(size.Width);
+                height = Convert.ToInt32(size.Height);
+            }
+            catch
+            {
 
 
-            //}
+            }
 
 
             var inputFormat = (Path.GetExtension(imageInfo.Path) ?? string.Empty)
             var inputFormat = (Path.GetExtension(imageInfo.Path) ?? string.Empty)
                 .TrimStart('.')
                 .TrimStart('.')

+ 6 - 0
MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs

@@ -425,6 +425,12 @@ namespace MediaBrowser.MediaEncoding.Encoder
             {
             {
                 var inputVideoCodec = videoStream == null ? null : videoStream.Codec;
                 var inputVideoCodec = videoStream == null ? null : videoStream.Codec;
                 bitrate = ResolutionNormalizer.ScaleBitrate(bitrate.Value, inputVideoCodec, outputVideoCodec);
                 bitrate = ResolutionNormalizer.ScaleBitrate(bitrate.Value, inputVideoCodec, outputVideoCodec);
+
+                // If a max bitrate was requested, don't let the scaled bitrate exceed it
+                if (request.VideoBitRate.HasValue)
+                {
+                    bitrate = Math.Min(bitrate.Value, request.VideoBitRate.Value);
+                }
             }
             }
 
 
             return bitrate;
             return bitrate;

+ 23 - 0
MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs

@@ -382,6 +382,29 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
             return list;
             return list;
         }
         }
 
 
+        public async Task<List<ChannelInfo>> GetChannelsForListingsProvider(ListingsProviderInfo listingsProvider, CancellationToken cancellationToken)
+        {
+            var list = new List<ChannelInfo>();
+
+            foreach (var hostInstance in _liveTvManager.TunerHosts)
+            {
+                try
+                {
+                    var channels = await hostInstance.GetChannels(cancellationToken).ConfigureAwait(false);
+
+                    list.AddRange(channels);
+                }
+                catch (Exception ex)
+                {
+                    _logger.ErrorException("Error getting channels", ex);
+                }
+            }
+
+            return list
+                .Where(i => IsListingProviderEnabledForTuner(listingsProvider, i.TunerHostId))
+                .ToList();
+        }
+
         public Task<IEnumerable<ChannelInfo>> GetChannelsAsync(CancellationToken cancellationToken)
         public Task<IEnumerable<ChannelInfo>> GetChannelsAsync(CancellationToken cancellationToken)
         {
         {
             return GetChannelsAsync(false, cancellationToken);
             return GetChannelsAsync(false, cancellationToken);

+ 7 - 1
MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -2585,7 +2585,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv
             return new TunerHosts.SatIp.ChannelScan(_logger).Scan(info, cancellationToken);
             return new TunerHosts.SatIp.ChannelScan(_logger).Scan(info, cancellationToken);
         }
         }
 
 
-        public Task<List<ChannelInfo>> GetChannelsFromListingsProvider(string id, CancellationToken cancellationToken)
+        public Task<List<ChannelInfo>> GetChannelsForListingsProvider(string id, CancellationToken cancellationToken)
+        {
+            var info = GetConfiguration().ListingProviders.First(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase));
+            return EmbyTV.EmbyTV.Current.GetChannelsForListingsProvider(info, cancellationToken);
+        }
+
+        public Task<List<ChannelInfo>> GetChannelsFromListingsProviderData(string id, CancellationToken cancellationToken)
         {
         {
             var info = GetConfiguration().ListingProviders.First(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase));
             var info = GetConfiguration().ListingProviders.First(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase));
             var provider = _listingProviders.First(i => string.Equals(i.Type, info.Type, StringComparison.OrdinalIgnoreCase));
             var provider = _listingProviders.First(i => string.Equals(i.Type, info.Type, StringComparison.OrdinalIgnoreCase));