From f7c1a88166e4ba756f05db12db2c61865cfc6712 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 23 Jul 2015 13:58:20 -0400 Subject: [PATCH] update schedules direct --- MediaBrowser.Api/LiveTv/LiveTvService.cs | 5 ++++- .../LiveTv/IListingsProvider.cs | 2 +- .../LiveTv/ILiveTvManager.cs | 3 ++- .../LiveTv/Listings/SchedulesDirect.cs | 14 ++++++++----- .../LiveTv/LiveTvManager.cs | 4 ++-- .../LiveTv/RefreshChannelsScheduledTask.cs | 15 +++++++++++--- .../HdHomerun/HdHomerunDiscovery.cs | 20 ++++++++++++++----- 7 files changed, 45 insertions(+), 18 deletions(-) diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs index f40048ce40..d05e0951a4 100644 --- a/MediaBrowser.Api/LiveTv/LiveTvService.cs +++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs @@ -369,6 +369,9 @@ namespace MediaBrowser.Api.LiveTv [ApiMember(Name = "Location", Description = "Location", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string Location { get; set; } + + [ApiMember(Name = "Country", Description = "Country", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string Country { get; set; } } public class LiveTvService : BaseApiService @@ -436,7 +439,7 @@ namespace MediaBrowser.Api.LiveTv public async Task Get(GetLineups request) { - var info = await _liveTvManager.GetLineups(request.Id, request.Location).ConfigureAwait(false); + var info = await _liveTvManager.GetLineups(request.Id, request.Country, request.Location).ConfigureAwait(false); return ToOptimizedSerializedResultUsingCache(info); } diff --git a/MediaBrowser.Controller/LiveTv/IListingsProvider.cs b/MediaBrowser.Controller/LiveTv/IListingsProvider.cs index 54977c8d3c..5e43f1d27a 100644 --- a/MediaBrowser.Controller/LiveTv/IListingsProvider.cs +++ b/MediaBrowser.Controller/LiveTv/IListingsProvider.cs @@ -14,6 +14,6 @@ namespace MediaBrowser.Controller.LiveTv Task> GetProgramsAsync(ListingsProviderInfo info, string channelNumber, DateTime startDateUtc, DateTime endDateUtc, CancellationToken cancellationToken); Task AddMetadata(ListingsProviderInfo info, List channels, CancellationToken cancellationToken); Task Validate(ListingsProviderInfo info); - Task> GetLineups(ListingsProviderInfo info, string location); + Task> GetLineups(ListingsProviderInfo info, string country, string location); } } diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs index 3dbf9a9e90..a0deb34f0b 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs @@ -355,8 +355,9 @@ namespace MediaBrowser.Controller.LiveTv /// Gets the lineups. /// /// The provider identifier. + /// The country. /// The location. /// Task<List<NameIdPair>>. - Task> GetLineups(string providerId, string location); + Task> GetLineups(string providerId, string country, string location); } } diff --git a/MediaBrowser.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs b/MediaBrowser.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs index 269da57683..ed265d416f 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs @@ -387,7 +387,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings return images; } - public async Task> GetHeadends(ListingsProviderInfo info, string location, CancellationToken cancellationToken) + public async Task> GetHeadends(ListingsProviderInfo info, string country, string location, CancellationToken cancellationToken) { var token = await GetToken(info, cancellationToken); @@ -400,9 +400,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings _logger.Info("Headends on account "); + var countryParam = string.Equals("ca", country, StringComparison.OrdinalIgnoreCase) + ? "Canada" + : "USA"; + var options = new HttpRequestOptions() { - Url = ApiUrl + "/headends?country=USA&postalcode=" + location, + Url = ApiUrl + "/headends?country=" + countryParam + "&postalcode=" + location, UserAgent = UserAgent, CancellationToken = cancellationToken }; @@ -839,12 +843,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings public async Task Validate(ListingsProviderInfo info) { - await AddLineupToAccount(info, CancellationToken.None).ConfigureAwait(false); + //await AddLineupToAccount(info, CancellationToken.None).ConfigureAwait(false); } - public Task> GetLineups(ListingsProviderInfo info, string location) + public Task> GetLineups(ListingsProviderInfo info, string country, string location) { - return GetHeadends(info, location, CancellationToken.None); + return GetHeadends(info, country, location, CancellationToken.None); } } } diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 52bb41ba19..5be90e6ccc 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -2238,7 +2238,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv return info; } - public Task> GetLineups(string providerId, string location) + public Task> GetLineups(string providerId, string country, string location) { var config = GetConfiguration(); @@ -2251,7 +2251,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv throw new ResourceNotFoundException(); } - return provider.GetLineups(info, location); + return provider.GetLineups(info, country, location); } } } diff --git a/MediaBrowser.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs b/MediaBrowser.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs index de2351434f..7cb616d3fc 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs @@ -1,5 +1,7 @@ -using MediaBrowser.Common.ScheduledTasks; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.Tasks; using System; using System.Collections.Generic; @@ -10,10 +12,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv class RefreshChannelsScheduledTask : IScheduledTask, IConfigurableScheduledTask, IHasKey { private readonly ILiveTvManager _liveTvManager; + private readonly IConfigurationManager _config; - public RefreshChannelsScheduledTask(ILiveTvManager liveTvManager) + public RefreshChannelsScheduledTask(ILiveTvManager liveTvManager, IConfigurationManager config) { _liveTvManager = liveTvManager; + _config = config; } public string Name @@ -50,9 +54,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv }; } + private LiveTvOptions GetConfiguration() + { + return _config.GetConfiguration("livetv"); + } + public bool IsHidden { - get { return _liveTvManager.Services.Count == 0; } + get { return _liveTvManager.Services.Count == 1 && GetConfiguration().TunerHosts.Count == 0; } } public bool IsEnabled diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs index 41652ae9f0..4777003d63 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs @@ -91,15 +91,25 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun private bool UriEquals(string savedUri, string location) { - if (!savedUri.StartsWith("http", StringComparison.OrdinalIgnoreCase)) + return string.Equals(NormalizeUrl(location), NormalizeUrl(savedUri), StringComparison.OrdinalIgnoreCase); + } + + private string NormalizeUrl(string url) + { + if (!url.StartsWith("http", StringComparison.OrdinalIgnoreCase)) { - savedUri = "http://" + savedUri; + url = "http://" + url; } - savedUri = savedUri.TrimEnd('/'); - location = location.TrimEnd('/'); + url = url.TrimEnd('/'); - return string.Equals(location, savedUri, StringComparison.OrdinalIgnoreCase); + // If there isn't a port, add the default port of 80 + if (url.Split(':').Length < 3) + { + url += ":80"; + } + + return url; } private LiveTvOptions GetConfiguration()