Răsfoiți Sursa

continue with tuner discovery

Luke Pulverenti 8 ani în urmă
părinte
comite
a0934e6226

+ 14 - 0
Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs

@@ -2543,6 +2543,20 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
             public CancellationTokenSource CancellationTokenSource { get; set; }
         }
 
+        public async Task<List<TunerHostInfo>> DiscoverTuners(CancellationToken cancellationToken)
+        {
+            var list = new List<TunerHostInfo>();
+
+            foreach (var host in _liveTvManager.TunerHosts)
+            {
+                var discoveredDevices = await DiscoverDevices(host, 3000, cancellationToken).ConfigureAwait(false);
+
+                list.AddRange(discoveredDevices);
+            }
+
+            return list;
+        }
+
         public async Task ScanForTunerDeviceChanges(CancellationToken cancellationToken)
         {
             foreach (var host in _liveTvManager.TunerHosts)

+ 5 - 0
Emby.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -160,6 +160,11 @@ namespace Emby.Server.Implementations.LiveTv
             }).ToList();
         }
 
+        public Task<List<TunerHostInfo>> DiscoverTuners(CancellationToken cancellationToken)
+        {
+            return EmbyTV.EmbyTV.Current.DiscoverTuners(cancellationToken);
+        }
+
         void service_DataSourceChanged(object sender, EventArgs e)
         {
             if (!_isDisposed)

+ 1 - 0
Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs

@@ -706,6 +706,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
                 var modelInfo = await GetModelInfo(hostInfo, false, cancellationToken).ConfigureAwait(false);
 
                 hostInfo.DeviceId = modelInfo.DeviceID;
+                hostInfo.FriendlyName = modelInfo.FriendlyName;
 
                 return hostInfo;
             }

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

@@ -677,7 +677,14 @@ namespace MediaBrowser.Api.LiveTv
     [Authenticated]
     public class GetTunerHostTypes : IReturn<List<NameIdPair>>
     {
-        
+
+    }
+
+    [Route("/LiveTv/Tuners/Discvover", "GET")]
+    [Authenticated]
+    public class DiscoverTuners : IReturn<List<TunerHostInfo>>
+    {
+
     }
 
     public class LiveTvService : BaseApiService
@@ -730,6 +737,12 @@ namespace MediaBrowser.Api.LiveTv
             };
         }
 
+        public async Task<object> Get(DiscoverTuners request)
+        {
+            var result = await _liveTvManager.DiscoverTuners(CancellationToken.None).ConfigureAwait(false);
+            return ToOptimizedResult(result);
+        }
+
         public async Task<object> Get(GetLiveStreamFile request)
         {
             var directStreamProvider = (await _liveTvManager.GetEmbyTvLiveStream(request.Id).ConfigureAwait(false)) as IDirectStreamProvider;

+ 2 - 1
MediaBrowser.Controller/Entities/Video.cs

@@ -614,7 +614,8 @@ namespace MediaBrowser.Controller.Entities
                 Timestamp = i.Timestamp,
                 Type = type,
                 PlayableStreamFileNames = i.PlayableStreamFileNames.ToList(),
-                SupportsDirectStream = i.VideoType == VideoType.VideoFile
+                SupportsDirectStream = i.VideoType == VideoType.VideoFile,
+                IsRemote = i.IsShortcut
             };
 
             if (info.Protocol == MediaProtocol.File)

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

@@ -382,6 +382,7 @@ namespace MediaBrowser.Controller.LiveTv
         List<IListingsProvider> ListingProviders { get; }
 
         List<NameIdPair> GetTunerHostTypes();
+        Task<List<TunerHostInfo>> DiscoverTuners(CancellationToken cancellationToken);
 
         event EventHandler<GenericEventArgs<TimerEventInfo>> SeriesTimerCancelled;
         event EventHandler<GenericEventArgs<TimerEventInfo>> TimerCancelled;

+ 6 - 0
MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs

@@ -185,6 +185,12 @@ namespace MediaBrowser.Controller.MediaEncoding
                 return null;
             }
 
+            // obviously don't do this for strm files
+            if (string.Equals(container, "strm", StringComparison.OrdinalIgnoreCase))
+            {
+                return null;
+            }
+
             return container;
         }