mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-04 03:27:21 -05:00 
			
		
		
		
	Clean up TunerHost classes
This commit is contained in:
		
							parent
							
								
									43fa983414
								
							
						
					
					
						commit
						5c65abcd94
					
				@ -1,10 +1,10 @@
 | 
				
			|||||||
#pragma warning disable CS1591
 | 
					#pragma warning disable CS1591
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Concurrent;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.IO;
 | 
					using System.IO;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text.Json;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using MediaBrowser.Common.Configuration;
 | 
					using MediaBrowser.Common.Configuration;
 | 
				
			||||||
@ -14,7 +14,7 @@ using MediaBrowser.Controller.LiveTv;
 | 
				
			|||||||
using MediaBrowser.Model.Dto;
 | 
					using MediaBrowser.Model.Dto;
 | 
				
			||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.LiveTv;
 | 
					using MediaBrowser.Model.LiveTv;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using Microsoft.Extensions.Caching.Memory;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Emby.Server.Implementations.LiveTv.TunerHosts
 | 
					namespace Emby.Server.Implementations.LiveTv.TunerHosts
 | 
				
			||||||
@ -23,17 +23,15 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        protected readonly IServerConfigurationManager Config;
 | 
					        protected readonly IServerConfigurationManager Config;
 | 
				
			||||||
        protected readonly ILogger<BaseTunerHost> Logger;
 | 
					        protected readonly ILogger<BaseTunerHost> Logger;
 | 
				
			||||||
        protected IJsonSerializer JsonSerializer;
 | 
					 | 
				
			||||||
        protected readonly IFileSystem FileSystem;
 | 
					        protected readonly IFileSystem FileSystem;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private readonly ConcurrentDictionary<string, ChannelCache> _channelCache =
 | 
					        private readonly IMemoryCache _memoryCache;
 | 
				
			||||||
            new ConcurrentDictionary<string, ChannelCache>(StringComparer.OrdinalIgnoreCase);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected BaseTunerHost(IServerConfigurationManager config, ILogger<BaseTunerHost> logger, IJsonSerializer jsonSerializer, IFileSystem fileSystem)
 | 
					        protected BaseTunerHost(IServerConfigurationManager config, ILogger<BaseTunerHost> logger, IFileSystem fileSystem, IMemoryCache memoryCache)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Config = config;
 | 
					            Config = config;
 | 
				
			||||||
            Logger = logger;
 | 
					            Logger = logger;
 | 
				
			||||||
            JsonSerializer = jsonSerializer;
 | 
					            _memoryCache = memoryCache;
 | 
				
			||||||
            FileSystem = fileSystem;
 | 
					            FileSystem = fileSystem;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -44,23 +42,19 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        public async Task<List<ChannelInfo>> GetChannels(TunerHostInfo tuner, bool enableCache, CancellationToken cancellationToken)
 | 
					        public async Task<List<ChannelInfo>> GetChannels(TunerHostInfo tuner, bool enableCache, CancellationToken cancellationToken)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            ChannelCache cache = null;
 | 
					 | 
				
			||||||
            var key = tuner.Id;
 | 
					            var key = tuner.Id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (enableCache && !string.IsNullOrEmpty(key) && _channelCache.TryGetValue(key, out cache))
 | 
					            if (enableCache && !string.IsNullOrEmpty(key) && _memoryCache.TryGetValue(key, out List<ChannelInfo> cache))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                return cache.Channels.ToList();
 | 
					                return cache;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var result = await GetChannelsInternal(tuner, cancellationToken).ConfigureAwait(false);
 | 
					            var list = await GetChannelsInternal(tuner, cancellationToken).ConfigureAwait(false);
 | 
				
			||||||
            var list = result.ToList();
 | 
					 | 
				
			||||||
            // logger.LogInformation("Channels from {0}: {1}", tuner.Url, JsonSerializer.SerializeToString(list));
 | 
					            // logger.LogInformation("Channels from {0}: {1}", tuner.Url, JsonSerializer.SerializeToString(list));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (!string.IsNullOrEmpty(key) && list.Count > 0)
 | 
					            if (!string.IsNullOrEmpty(key) && list.Count > 0)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                cache = cache ?? new ChannelCache();
 | 
					                _memoryCache.CreateEntry(key).SetValue(list);
 | 
				
			||||||
                cache.Channels = list;
 | 
					 | 
				
			||||||
                _channelCache.AddOrUpdate(key, cache, (k, v) => cache);
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return list;
 | 
					            return list;
 | 
				
			||||||
@ -95,7 +89,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
 | 
				
			|||||||
                        try
 | 
					                        try
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            Directory.CreateDirectory(Path.GetDirectoryName(channelCacheFile));
 | 
					                            Directory.CreateDirectory(Path.GetDirectoryName(channelCacheFile));
 | 
				
			||||||
                            JsonSerializer.SerializeToFile(channels, channelCacheFile);
 | 
					                            await using var writeStream = File.OpenWrite(channelCacheFile);
 | 
				
			||||||
 | 
					                            await JsonSerializer.SerializeAsync(writeStream, channels, cancellationToken: cancellationToken).ConfigureAwait(false);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        catch (IOException)
 | 
					                        catch (IOException)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
@ -110,7 +105,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
 | 
				
			|||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        try
 | 
					                        try
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            var channels = JsonSerializer.DeserializeFromFile<List<ChannelInfo>>(channelCacheFile);
 | 
					                            await using var readStream = File.OpenRead(channelCacheFile);
 | 
				
			||||||
 | 
					                            var channels = await JsonSerializer.DeserializeAsync<List<ChannelInfo>>(readStream, cancellationToken: cancellationToken)
 | 
				
			||||||
 | 
					                                .ConfigureAwait(false);
 | 
				
			||||||
                            list.AddRange(channels);
 | 
					                            list.AddRange(channels);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        catch (IOException)
 | 
					                        catch (IOException)
 | 
				
			||||||
@ -233,10 +230,5 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            return Config.GetConfiguration<LiveTvOptions>("livetv");
 | 
					            return Config.GetConfiguration<LiveTvOptions>("livetv");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        private class ChannelCache
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            public List<ChannelInfo> Channels;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,7 @@ using System.IO;
 | 
				
			|||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Net;
 | 
					using System.Net;
 | 
				
			||||||
using System.Net.Http;
 | 
					using System.Net.Http;
 | 
				
			||||||
 | 
					using System.Text.Json;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using MediaBrowser.Common.Configuration;
 | 
					using MediaBrowser.Common.Configuration;
 | 
				
			||||||
@ -23,7 +24,7 @@ using MediaBrowser.Model.IO;
 | 
				
			|||||||
using MediaBrowser.Model.LiveTv;
 | 
					using MediaBrowser.Model.LiveTv;
 | 
				
			||||||
using MediaBrowser.Model.MediaInfo;
 | 
					using MediaBrowser.Model.MediaInfo;
 | 
				
			||||||
using MediaBrowser.Model.Net;
 | 
					using MediaBrowser.Model.Net;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using Microsoft.Extensions.Caching.Memory;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
 | 
					namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
 | 
				
			||||||
@ -39,14 +40,14 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
 | 
				
			|||||||
        public HdHomerunHost(
 | 
					        public HdHomerunHost(
 | 
				
			||||||
            IServerConfigurationManager config,
 | 
					            IServerConfigurationManager config,
 | 
				
			||||||
            ILogger<HdHomerunHost> logger,
 | 
					            ILogger<HdHomerunHost> logger,
 | 
				
			||||||
            IJsonSerializer jsonSerializer,
 | 
					 | 
				
			||||||
            IFileSystem fileSystem,
 | 
					            IFileSystem fileSystem,
 | 
				
			||||||
            IHttpClient httpClient,
 | 
					            IHttpClient httpClient,
 | 
				
			||||||
            IServerApplicationHost appHost,
 | 
					            IServerApplicationHost appHost,
 | 
				
			||||||
            ISocketFactory socketFactory,
 | 
					            ISocketFactory socketFactory,
 | 
				
			||||||
            INetworkManager networkManager,
 | 
					            INetworkManager networkManager,
 | 
				
			||||||
            IStreamHelper streamHelper)
 | 
					            IStreamHelper streamHelper,
 | 
				
			||||||
            : base(config, logger, jsonSerializer, fileSystem)
 | 
					            IMemoryCache memoryCache)
 | 
				
			||||||
 | 
					            : base(config, logger, fileSystem, memoryCache)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _httpClient = httpClient;
 | 
					            _httpClient = httpClient;
 | 
				
			||||||
            _appHost = appHost;
 | 
					            _appHost = appHost;
 | 
				
			||||||
@ -75,10 +76,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
 | 
				
			|||||||
                BufferContent = false
 | 
					                BufferContent = false
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            using (var response = await _httpClient.SendAsync(options, HttpMethod.Get).ConfigureAwait(false))
 | 
					            using var response = await _httpClient.SendAsync(options, HttpMethod.Get).ConfigureAwait(false);
 | 
				
			||||||
            using (var stream = response.Content)
 | 
					            await using var stream = response.Content;
 | 
				
			||||||
            {
 | 
					            var lineup = await JsonSerializer.DeserializeAsync<List<Channels>>(stream, cancellationToken: cancellationToken)
 | 
				
			||||||
                var lineup = await JsonSerializer.DeserializeFromStreamAsync<List<Channels>>(stream).ConfigureAwait(false) ?? new List<Channels>();
 | 
					                .ConfigureAwait(false) ?? new List<Channels>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (info.ImportFavoritesOnly)
 | 
					            if (info.ImportFavoritesOnly)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -87,7 +88,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            return lineup.Where(i => !i.DRM).ToList();
 | 
					            return lineup.Where(i => !i.DRM).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private class HdHomerunChannelInfo : ChannelInfo
 | 
					        private class HdHomerunChannelInfo : ChannelInfo
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@ -132,15 +132,16 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var response = await _httpClient.SendAsync(new HttpRequestOptions()
 | 
					                using var response = await _httpClient.SendAsync(
 | 
				
			||||||
 | 
					                    new HttpRequestOptions
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    Url = string.Format("{0}/discover.json", GetApiUrl(info)),
 | 
					                    Url = string.Format(CultureInfo.InvariantCulture, "{0}/discover.json", GetApiUrl(info)),
 | 
				
			||||||
                    CancellationToken = cancellationToken,
 | 
					                    CancellationToken = cancellationToken,
 | 
				
			||||||
                    BufferContent = false
 | 
					                    BufferContent = false
 | 
				
			||||||
                }, HttpMethod.Get).ConfigureAwait(false))
 | 
					                }, HttpMethod.Get).ConfigureAwait(false);
 | 
				
			||||||
                using (var stream = response.Content)
 | 
					                await using var stream = response.Content;
 | 
				
			||||||
                {
 | 
					                var discoverResponse = await JsonSerializer.DeserializeAsync<DiscoverResponse>(stream, cancellationToken: cancellationToken)
 | 
				
			||||||
                    var discoverResponse = await JsonSerializer.DeserializeFromStreamAsync<DiscoverResponse>(stream).ConfigureAwait(false);
 | 
					                    .ConfigureAwait(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (!string.IsNullOrEmpty(cacheKey))
 | 
					                if (!string.IsNullOrEmpty(cacheKey))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@ -152,10 +153,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                return discoverResponse;
 | 
					                return discoverResponse;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            catch (HttpException ex)
 | 
					            catch (HttpException ex)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (!throwAllExceptions && ex.StatusCode.HasValue && ex.StatusCode.Value == System.Net.HttpStatusCode.NotFound)
 | 
					                if (!throwAllExceptions && ex.StatusCode.HasValue && ex.StatusCode.Value == HttpStatusCode.NotFound)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var defaultValue = "HDHR";
 | 
					                    var defaultValue = "HDHR";
 | 
				
			||||||
                    var response = new DiscoverResponse
 | 
					                    var response = new DiscoverResponse
 | 
				
			||||||
 | 
				
			|||||||
@ -18,7 +18,7 @@ using MediaBrowser.Model.Entities;
 | 
				
			|||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.LiveTv;
 | 
					using MediaBrowser.Model.LiveTv;
 | 
				
			||||||
using MediaBrowser.Model.MediaInfo;
 | 
					using MediaBrowser.Model.MediaInfo;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using Microsoft.Extensions.Caching.Memory;
 | 
				
			||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
using Microsoft.Net.Http.Headers;
 | 
					using Microsoft.Net.Http.Headers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -36,13 +36,13 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
 | 
				
			|||||||
            IServerConfigurationManager config,
 | 
					            IServerConfigurationManager config,
 | 
				
			||||||
            IMediaSourceManager mediaSourceManager,
 | 
					            IMediaSourceManager mediaSourceManager,
 | 
				
			||||||
            ILogger<M3UTunerHost> logger,
 | 
					            ILogger<M3UTunerHost> logger,
 | 
				
			||||||
            IJsonSerializer jsonSerializer,
 | 
					 | 
				
			||||||
            IFileSystem fileSystem,
 | 
					            IFileSystem fileSystem,
 | 
				
			||||||
            IHttpClient httpClient,
 | 
					            IHttpClient httpClient,
 | 
				
			||||||
            IServerApplicationHost appHost,
 | 
					            IServerApplicationHost appHost,
 | 
				
			||||||
            INetworkManager networkManager,
 | 
					            INetworkManager networkManager,
 | 
				
			||||||
            IStreamHelper streamHelper)
 | 
					            IStreamHelper streamHelper,
 | 
				
			||||||
            : base(config, logger, jsonSerializer, fileSystem)
 | 
					            IMemoryCache memoryCache)
 | 
				
			||||||
 | 
					            : base(config, logger, fileSystem, memoryCache)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _httpClient = httpClient;
 | 
					            _httpClient = httpClient;
 | 
				
			||||||
            _appHost = appHost;
 | 
					            _appHost = appHost;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user