瀏覽代碼

Merge pull request #1825 from MediaBrowser/dev

Dev
Luke 9 年之前
父節點
當前提交
88a6e43075

+ 4 - 2
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;

+ 1 - 1
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)
         {

+ 4 - 0
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;

+ 47 - 12
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)

+ 1 - 1
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">

+ 1 - 1
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" />

+ 30 - 7
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>

+ 0 - 3
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>