diff options
8 files changed, 88 insertions, 27 deletions
diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index 0ce69970f2..1eb169bf9b 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -67,7 +67,7 @@ namespace MediaBrowser.Model.Configuration /// </summary> /// <value><c>true</c> if [enable case sensitive item ids]; otherwise, <c>false</c>.</value> public bool EnableCaseSensitiveItemIds { get; set; } - + /// <summary> /// Gets or sets the metadata path. /// </summary> @@ -155,7 +155,7 @@ namespace MediaBrowser.Model.Configuration /// </summary> /// <value>The dashboard source path.</value> public string DashboardSourcePath { get; set; } - + /// <summary> /// Gets or sets the image saving convention. /// </summary> @@ -201,12 +201,14 @@ namespace MediaBrowser.Model.Configuration public bool EnableFolderView { get; set; } public bool EnableGroupingIntoCollections { get; set; } public bool DisplaySpecialsWithinSeasons { get; set; } + public string[] LocalNetworkAddresses { get; set; } /// <summary> /// Initializes a new instance of the <see cref="ServerConfiguration" /> class. /// </summary> public ServerConfiguration() { + LocalNetworkAddresses = new string[] { }; Migrations = new string[] { }; EnableCustomPathSubFolders = true; diff --git a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs index 6e57b4022a..d76c89dfb8 100644 --- a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs @@ -25,7 +25,7 @@ namespace MediaBrowser.Providers.Music private readonly IApplicationHost _appHost; private readonly ILogger _logger; - public static string MusicBrainzBaseUrl = "https://www.musicbrainz.org"; + public static string MusicBrainzBaseUrl = "http://musicbrainz.fercasas.com:5000"; public MusicBrainzAlbumProvider(IHttpClient httpClient, IApplicationHost appHost, ILogger logger) { diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 032f8dbb7a..503fb1aa74 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -362,6 +362,10 @@ namespace MediaBrowser.Server.Implementations.Library return; } } + if (item is Photo) + { + return; + } //if (!(item is Folder)) //{ // return; diff --git a/MediaBrowser.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs index 4d2fc8bfe3..328dd99792 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs @@ -3,12 +3,14 @@ using MediaBrowser.Model.Dto; using MediaBrowser.Model.LiveTv; using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; using Emby.XmlTv.Classes; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; namespace MediaBrowser.Server.Implementations.LiveTv.Listings @@ -16,10 +18,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings public class XmlTvListingsProvider : IListingsProvider { private readonly IServerConfigurationManager _config; + private readonly IHttpClient _httpClient; - public XmlTvListingsProvider(IServerConfigurationManager config) + public XmlTvListingsProvider(IServerConfigurationManager config, IHttpClient httpClient) { _config = config; + _httpClient = httpClient; } public string Name @@ -37,13 +41,39 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings return _config.Configuration.PreferredMetadataLanguage; } + private async Task<string> GetXml(string path, CancellationToken cancellationToken) + { + if (!path.StartsWith("http", StringComparison.OrdinalIgnoreCase)) + { + return path; + } + + var cacheFilename = DateTime.UtcNow.DayOfYear.ToString(CultureInfo.InvariantCulture) + "_" + DateTime.UtcNow.Hour.ToString(CultureInfo.InvariantCulture) + ".xml"; + var cacheFile = Path.Combine(_config.ApplicationPaths.CachePath, "xmltv", cacheFilename); + if (File.Exists(cacheFile)) + { + return cacheFile; + } + + var tempFile = await _httpClient.GetTempFile(new HttpRequestOptions + { + CancellationToken = cancellationToken, + Url = path + + }).ConfigureAwait(false); + File.Copy(tempFile, cacheFile, true); + + return cacheFile; + } + // TODO: Should this method be async? - public Task<IEnumerable<ProgramInfo>> GetProgramsAsync(ListingsProviderInfo info, string channelNumber, string channelName, DateTime startDateUtc, DateTime endDateUtc, CancellationToken cancellationToken) + public async Task<IEnumerable<ProgramInfo>> GetProgramsAsync(ListingsProviderInfo info, string channelNumber, string channelName, DateTime startDateUtc, DateTime endDateUtc, CancellationToken cancellationToken) { - var reader = new XmlTvReader(info.Path, GetLanguage(), null); + var path = await GetXml(info.Path, cancellationToken).ConfigureAwait(false); + var reader = new XmlTvReader(path, GetLanguage(), null); var results = reader.GetProgrammes(channelNumber, startDateUtc, endDateUtc, cancellationToken); - return Task.FromResult(results.Select(p => new ProgramInfo() + return results.Select(p => new ProgramInfo() { ChannelId = p.ChannelId, EndDate = p.EndDate, @@ -68,34 +98,39 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings HasImage = p.Icon != null && !String.IsNullOrEmpty(p.Icon.Source), OfficialRating = p.Rating != null && !String.IsNullOrEmpty(p.Rating.Value) ? p.Rating.Value : null, CommunityRating = p.StarRating.HasValue ? p.StarRating.Value : (float?)null - })); + }); } - public async Task AddMetadata(ListingsProviderInfo info, List<ChannelInfo> channels, CancellationToken cancellationToken) + public Task AddMetadata(ListingsProviderInfo info, List<ChannelInfo> channels, CancellationToken cancellationToken) { // Add the channel image url var reader = new XmlTvReader(info.Path, GetLanguage(), null); var results = reader.GetChannels().ToList(); if (channels != null && channels.Count > 0) - { - channels.ForEach(c => { + { + channels.ForEach(c => + { var match = results.FirstOrDefault(r => r.Id == c.Id); if (match != null && match.Icon != null && !String.IsNullOrEmpty(match.Icon.Source)) { c.ImageUrl = match.Icon.Source; } }); - } + } + + return Task.FromResult(true); } - public async Task Validate(ListingsProviderInfo info, bool validateLogin, bool validateListings) + public Task Validate(ListingsProviderInfo info, bool validateLogin, bool validateListings) { - // Check that the path or url is valid. If not, throw a file not found exception - if (!File.Exists(info.Path)) + // Assume all urls are valid. check files for existence + if (!info.Path.StartsWith("http", StringComparison.OrdinalIgnoreCase) && !File.Exists(info.Path)) { throw new FileNotFoundException("Could not find the XmlTv file specified:", info.Path); } + + return Task.FromResult(true); } public Task<List<NameIdPair>> GetLineups(ListingsProviderInfo info, string country, string location) diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 5dc0640356..52ffe3a4b4 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -46,7 +46,7 @@ <HintPath>..\packages\CommonIO.1.0.0.9\lib\net45\CommonIO.dll</HintPath> </Reference> <Reference Include="Emby.XmlTv, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\packages\Emby.XmlTv.1.0.0.50\lib\net45\Emby.XmlTv.dll</HintPath> + <HintPath>..\packages\Emby.XmlTv.1.0.0.51\lib\net45\Emby.XmlTv.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="INIFileParser, Version=2.3.0.0, Culture=neutral, PublicKeyToken=79af7b307b65cf3c, processorArchitecture=MSIL"> diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index 516bf32716..badc3f2c1f 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CommonIO" version="1.0.0.9" targetFramework="net45" />
- <package id="Emby.XmlTv" version="1.0.0.50" targetFramework="net45" />
+ <package id="Emby.XmlTv" version="1.0.0.51" targetFramework="net45" />
<package id="ini-parser" version="2.3.0" targetFramework="net45" />
<package id="Interfaces.IO" version="1.0.0.5" targetFramework="net45" />
<package id="MediaBrowser.Naming" version="1.0.0.51" targetFramework="net45" />
diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index 75e3bb7f5c..23710479bc 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -833,17 +833,40 @@ namespace MediaBrowser.Server.Startup.Common private IEnumerable<string> GetUrlPrefixes() { - var prefixes = new List<string> - { - "http://+:" + ServerConfigurationManager.Configuration.HttpServerPortNumber + "/" - }; + var hosts = ServerConfigurationManager.Configuration.LocalNetworkAddresses.ToList(); + + if (hosts.Count == 0) + { + hosts.Add("+"); + } - if (!string.IsNullOrWhiteSpace(CertificatePath)) + if (!hosts.Contains("+", StringComparer.OrdinalIgnoreCase)) { - prefixes.Add("https://+:" + ServerConfigurationManager.Configuration.HttpsPortNumber + "/"); + if (!hosts.Contains("localhost", StringComparer.OrdinalIgnoreCase)) + { + hosts.Add("localhost"); + } + + if (!hosts.Contains("127.0.0.1", StringComparer.OrdinalIgnoreCase)) + { + hosts.Add("127.0.0.1"); + } } - return prefixes; + return hosts.SelectMany(i => + { + var prefixes = new List<string> + { + "http://"+i+":" + ServerConfigurationManager.Configuration.HttpServerPortNumber + "/" + }; + + if (!string.IsNullOrWhiteSpace(CertificatePath)) + { + prefixes.Add("https://" + i + ":" + ServerConfigurationManager.Configuration.HttpsPortNumber + "/"); + } + + return prefixes; + }); } /// <summary> diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index d6c1ad6bcb..94b2adf2cd 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -1122,9 +1122,6 @@ <Content Include="dashboard-ui\music.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\alphapicker.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\components\imageeditor\imageeditor.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
|
