diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs index 5c7c28cc8e..a7ccafd693 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs @@ -2553,7 +2553,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV private async Task ScanForTunerDeviceChanges(ITunerHost host, CancellationToken cancellationToken) { - var discoveredDevices = await DiscoverDevices(host, 2000, cancellationToken).ConfigureAwait(false); + var discoveredDevices = await DiscoverDevices(host, 3000, cancellationToken).ConfigureAwait(false); var configuredDevices = GetConfiguration().TunerHosts .Where(i => string.Equals(i.Type, host.Type, StringComparison.OrdinalIgnoreCase)) diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs index 7904024bf4..de39d3838e 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs @@ -150,6 +150,16 @@ namespace Emby.Server.Implementations.LiveTv get { return _listingProviders; } } + public List GetTunerHostTypes() + { + return _tunerHosts.OrderBy(i => i.Name).Select(i => new NameIdPair + { + Name = i.Name, + Id = i.Type + + }).ToList(); + } + void service_DataSourceChanged(object sender, EventArgs e) { if (!_isDisposed) @@ -3002,50 +3012,6 @@ namespace Emby.Server.Implementations.LiveTv return _security.GetRegistrationStatus(feature); } - public List GetSatIniMappings() - { - return new List(); - //var names = GetType().Assembly.GetManifestResourceNames().Where(i => i.IndexOf("SatIp.ini", StringComparison.OrdinalIgnoreCase) != -1).ToList(); - - //return names.Select(GetSatIniMappings).Where(i => i != null).DistinctBy(i => i.Value.Split('|')[0]).ToList(); - } - - public NameValuePair GetSatIniMappings(string resource) - { - return new NameValuePair(); - //using (var stream = GetType().Assembly.GetManifestResourceStream(resource)) - //{ - // using (var reader = new StreamReader(stream)) - // { - // var parser = new StreamIniDataParser(); - // IniData data = parser.ReadData(reader); - - // var satType1 = data["SATTYPE"]["1"]; - // var satType2 = data["SATTYPE"]["2"]; - - // if (string.IsNullOrWhiteSpace(satType2)) - // { - // return null; - // } - - // var srch = "SatIp.ini."; - // var filename = Path.GetFileName(resource); - - // return new NameValuePair - // { - // Name = satType1 + " " + satType2, - // Value = satType2 + "|" + filename.Substring(filename.IndexOf(srch) + srch.Length) - // }; - // } - //} - } - - public Task> GetSatChannelScanResult(TunerHostInfo info, CancellationToken cancellationToken) - { - return Task.FromResult(new List()); - //return new TunerHosts.SatIp.ChannelScan(_logger).Scan(info, cancellationToken); - } - public Task> GetChannelsForListingsProvider(string id, CancellationToken cancellationToken) { var info = GetConfiguration().ListingProviders.First(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase)); diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs index dc4e57155e..639021762a 100644 --- a/MediaBrowser.Api/LiveTv/LiveTvService.cs +++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs @@ -582,13 +582,13 @@ namespace MediaBrowser.Api.LiveTv } [Route("/LiveTv/ListingProviders/Default", "GET")] - [Authenticated(AllowBeforeStartupWizard = true)] + [Authenticated] public class GetDefaultListingProvider : ListingsProviderInfo, IReturn { } [Route("/LiveTv/ListingProviders", "POST", Summary = "Adds a listing provider")] - [Authenticated(AllowBeforeStartupWizard = true)] + [Authenticated] public class AddListingProvider : ListingsProviderInfo, IReturn { public bool ValidateLogin { get; set; } @@ -596,7 +596,7 @@ namespace MediaBrowser.Api.LiveTv } [Route("/LiveTv/ListingProviders", "DELETE", Summary = "Deletes a listing provider")] - [Authenticated(AllowBeforeStartupWizard = true)] + [Authenticated] public class DeleteListingProvider : IReturnVoid { [ApiMember(Name = "Id", Description = "Provider id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "DELETE")] @@ -604,7 +604,7 @@ namespace MediaBrowser.Api.LiveTv } [Route("/LiveTv/ListingProviders/Lineups", "GET", Summary = "Gets available lineups")] - [Authenticated(AllowBeforeStartupWizard = true)] + [Authenticated] public class GetLineups : IReturn> { [ApiMember(Name = "Id", Description = "Provider id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] @@ -621,13 +621,13 @@ namespace MediaBrowser.Api.LiveTv } [Route("/LiveTv/ListingProviders/SchedulesDirect/Countries", "GET", Summary = "Gets available lineups")] - [Authenticated(AllowBeforeStartupWizard = true)] + [Authenticated] public class GetSchedulesDirectCountries { } [Route("/LiveTv/ChannelMappingOptions")] - [Authenticated(AllowBeforeStartupWizard = true)] + [Authenticated] public class GetChannelMappingOptions { [ApiMember(Name = "Id", Description = "Provider id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] @@ -635,7 +635,7 @@ namespace MediaBrowser.Api.LiveTv } [Route("/LiveTv/ChannelMappings")] - [Authenticated(AllowBeforeStartupWizard = true)] + [Authenticated] public class SetChannelMapping { [ApiMember(Name = "Id", Description = "Provider id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] @@ -660,20 +660,6 @@ namespace MediaBrowser.Api.LiveTv public string Feature { get; set; } } - [Route("/LiveTv/TunerHosts/Satip/IniMappings", "GET", Summary = "Gets available mappings")] - [Authenticated(AllowBeforeStartupWizard = true)] - public class GetSatIniMappings : IReturn> - { - - } - - [Route("/LiveTv/TunerHosts/Satip/ChannelScan", "GET", Summary = "Scans for available channels")] - [Authenticated(AllowBeforeStartupWizard = true)] - public class GetSatChannnelScanResult : TunerHostInfo - { - - } - [Route("/LiveTv/LiveStreamFiles/{Id}/stream.{Container}", "GET", Summary = "Gets a live tv channel")] public class GetLiveStreamFile { @@ -687,6 +673,13 @@ namespace MediaBrowser.Api.LiveTv public string Id { get; set; } } + [Route("/LiveTv/TunerHosts/Types", "GET")] + [Authenticated] + public class GetTunerHostTypes : IReturn> + { + + } + public class LiveTvService : BaseApiService { private readonly ILiveTvManager _liveTvManager; @@ -712,6 +705,12 @@ namespace MediaBrowser.Api.LiveTv _sessionContext = sessionContext; } + public object Get(GetTunerHostTypes request) + { + var list = _liveTvManager.GetTunerHostTypes(); + return ToOptimizedResult(list); + } + public object Get(GetLiveRecordingFile request) { var path = _liveTvManager.GetEmbyTvActiveRecordingPath(request.Id); @@ -749,13 +748,6 @@ namespace MediaBrowser.Api.LiveTv return ToOptimizedResult(new ListingsProviderInfo()); } - public async Task Get(GetSatChannnelScanResult request) - { - var result = await _liveTvManager.GetSatChannelScanResult(request, CancellationToken.None).ConfigureAwait(false); - - return ToOptimizedResult(result); - } - public async Task Get(GetLiveTvRegistrationInfo request) { var result = await _liveTvManager.GetRegistrationInfo(request.Feature).ConfigureAwait(false); @@ -803,11 +795,6 @@ namespace MediaBrowser.Api.LiveTv return ToOptimizedResult(result); } - public object Get(GetSatIniMappings request) - { - return ToOptimizedResult(_liveTvManager.GetSatIniMappings()); - } - public async Task Get(GetSchedulesDirectCountries request) { // https://json.schedulesdirect.org/20141201/available/countries diff --git a/MediaBrowser.Api/StartupWizardService.cs b/MediaBrowser.Api/StartupWizardService.cs index 0155ef31bf..b0f52dd85f 100644 --- a/MediaBrowser.Api/StartupWizardService.cs +++ b/MediaBrowser.Api/StartupWizardService.cs @@ -1,12 +1,9 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller; +using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Connect; using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Configuration; -using MediaBrowser.Model.LiveTv; using System; using System.Linq; using System.Threading.Tasks; @@ -52,16 +49,14 @@ namespace MediaBrowser.Api private readonly IServerApplicationHost _appHost; private readonly IUserManager _userManager; private readonly IConnectManager _connectManager; - private readonly ILiveTvManager _liveTvManager; private readonly IMediaEncoder _mediaEncoder; - public StartupWizardService(IServerConfigurationManager config, IServerApplicationHost appHost, IUserManager userManager, IConnectManager connectManager, ILiveTvManager liveTvManager, IMediaEncoder mediaEncoder) + public StartupWizardService(IServerConfigurationManager config, IServerApplicationHost appHost, IUserManager userManager, IConnectManager connectManager, IMediaEncoder mediaEncoder) { _config = config; _appHost = appHost; _userManager = userManager; _connectManager = connectManager; - _liveTvManager = liveTvManager; _mediaEncoder = mediaEncoder; } @@ -92,20 +87,6 @@ namespace MediaBrowser.Api PreferredMetadataLanguage = _config.Configuration.PreferredMetadataLanguage }; - var tvConfig = GetLiveTVConfiguration(); - - if (tvConfig.TunerHosts.Count > 0) - { - result.LiveTvTunerPath = tvConfig.TunerHosts[0].Url; - result.LiveTvTunerType = tvConfig.TunerHosts[0].Type; - } - - if (tvConfig.ListingProviders.Count > 0) - { - result.LiveTvGuideProviderId = tvConfig.ListingProviders[0].Id; - result.LiveTvGuideProviderType = tvConfig.ListingProviders[0].Type; - } - return result; } @@ -129,9 +110,6 @@ namespace MediaBrowser.Api _config.Configuration.MetadataCountryCode = request.MetadataCountryCode; _config.Configuration.PreferredMetadataLanguage = request.PreferredMetadataLanguage; _config.SaveConfiguration(); - - var task = UpdateTuners(request); - Task.WaitAll(task); } public object Get(GetStartupUser request) @@ -166,50 +144,6 @@ namespace MediaBrowser.Api return result; } - - private async Task UpdateTuners(UpdateStartupConfiguration request) - { - var config = GetLiveTVConfiguration(); - var save = false; - - if (string.IsNullOrWhiteSpace(request.LiveTvTunerPath) || - string.IsNullOrWhiteSpace(request.LiveTvTunerType)) - { - if (config.TunerHosts.Count > 0) - { - config.TunerHosts.Clear(); - save = true; - } - } - else - { - if (!config.TunerHosts.Any(i => string.Equals(i.Type, request.LiveTvTunerType, StringComparison.OrdinalIgnoreCase) && string.Equals(i.Url, request.LiveTvTunerPath, StringComparison.OrdinalIgnoreCase))) - { - // Add tuner - await _liveTvManager.SaveTunerHost(new TunerHostInfo - { - Type = request.LiveTvTunerType, - Url = request.LiveTvTunerPath - - }).ConfigureAwait(false); - } - } - - if (save) - { - SaveLiveTVConfiguration(config); - } - } - - private void SaveLiveTVConfiguration(LiveTvOptions config) - { - _config.SaveConfiguration("livetv", config); - } - - private LiveTvOptions GetLiveTVConfiguration() - { - return _config.GetConfiguration("livetv"); - } } public class StartupConfiguration @@ -217,10 +151,6 @@ namespace MediaBrowser.Api public string UICulture { get; set; } public string MetadataCountryCode { get; set; } public string PreferredMetadataLanguage { get; set; } - public string LiveTvTunerType { get; set; } - public string LiveTvTunerPath { get; set; } - public string LiveTvGuideProviderId { get; set; } - public string LiveTvGuideProviderType { get; set; } } public class StartupInfo diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs index a908d2d3fb..b3467fbbce 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs @@ -376,19 +376,13 @@ namespace MediaBrowser.Controller.LiveTv /// Task. Task OnRecordingFileDeleted(BaseItem recording); - /// - /// Gets the sat ini mappings. - /// - /// List<NameValuePair>. - List GetSatIniMappings(); - - Task> GetSatChannelScanResult(TunerHostInfo info, CancellationToken cancellationToken); - Task> GetChannelsForListingsProvider(string id, CancellationToken cancellationToken); Task> GetChannelsFromListingsProviderData(string id, CancellationToken cancellationToken); List ListingProviders { get; } + List GetTunerHostTypes(); + event EventHandler> SeriesTimerCancelled; event EventHandler> TimerCancelled; event EventHandler> TimerCreated; diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs index c595f9cea2..6a0fdede3c 100644 --- a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs +++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs @@ -46,6 +46,7 @@ namespace MediaBrowser.Model.LiveTv public string Url { get; set; } public string Type { get; set; } public string DeviceId { get; set; } + public string FriendlyName { get; set; } public bool ImportFavoritesOnly { get; set; } public bool AllowHWTranscoding { get; set; } public bool EnableTvgId { get; set; }