瀏覽代碼

Merge pull request #1008 from MediaBrowser/dev

3.0.5518.2
Luke 10 年之前
父節點
當前提交
177a5d78bf

+ 5 - 0
MediaBrowser.Controller/Channels/InternalChannelFeatures.cs

@@ -44,6 +44,11 @@ namespace MediaBrowser.Controller.Channels
         /// </summary>
         /// <value>The daily download limit.</value>
         public int? DailyDownloadLimit { get; set; }
+        /// <summary>
+        /// Gets or sets a value indicating whether [supports downloading].
+        /// </summary>
+        /// <value><c>true</c> if [supports downloading]; otherwise, <c>false</c>.</value>
+        public bool SupportsContentDownloading { get; set; }
 
         public InternalChannelFeatures()
         {

+ 21 - 15
MediaBrowser.Server.Implementations/Channels/ChannelDownloadScheduledTask.cs

@@ -170,23 +170,29 @@ namespace MediaBrowser.Server.Implementations.Channels
             foreach (var item in result.Items)
             {
                 var channelItem = (IChannelItem)item;
-                if (options.DownloadingChannels.Contains(channelItem.ChannelId))
+
+                var channelFeatures = _manager.GetChannelFeatures(channelItem.ChannelId);
+
+                if (channelFeatures.SupportsContentDownloading)
                 {
-                    try
-                    {
-                        await DownloadChannelItem(item, options, cancellationToken, path);
-                    }
-                    catch (OperationCanceledException)
-                    {
-                        break;
-                    }
-                    catch (ChannelDownloadException)
-                    {
-                        // Logged at lower levels
-                    }
-                    catch (Exception ex)
+                    if (options.DownloadingChannels.Contains(channelItem.ChannelId))
                     {
-                        _logger.ErrorException("Error downloading channel content for {0}", ex, item.Name);
+                        try
+                        {
+                            await DownloadChannelItem(item, options, cancellationToken, path);
+                        }
+                        catch (OperationCanceledException)
+                        {
+                            break;
+                        }
+                        catch (ChannelDownloadException)
+                        {
+                            // Logged at lower levels
+                        }
+                        catch (Exception ex)
+                        {
+                            _logger.ErrorException("Error downloading channel content for {0}", ex, item.Name);
+                        }
                     }
                 }
 

+ 1 - 1
MediaBrowser.Server.Implementations/Channels/ChannelManager.cs

@@ -508,7 +508,7 @@ namespace MediaBrowser.Server.Implementations.Channels
                 SupportsLatestMedia = supportsLatest,
                 Name = channel.Name,
                 Id = channel.Id.ToString("N"),
-                SupportsContentDownloading = isIndexable || supportsLatest,
+                SupportsContentDownloading = features.SupportsContentDownloading && (isIndexable || supportsLatest),
                 AutoRefreshLevels = features.AutoRefreshLevels
             };
         }

+ 10 - 6
MediaBrowser.Server.Implementations/Connect/ConnectManager.cs

@@ -219,7 +219,7 @@ namespace MediaBrowser.Server.Implementations.Connect
             {
                 throw new ArgumentNullException("wanApiAddress");
             }
-            
+
             var url = "Servers";
             url = GetConnectUrl(url);
 
@@ -699,7 +699,7 @@ namespace MediaBrowser.Server.Implementations.Connect
             {
                 throw new ArgumentNullException("ConnectAccessKey");
             }
-            
+
             options.RequestHeaders.Add("X-Connect-Token", ConnectAccessKey);
         }
 
@@ -723,7 +723,7 @@ namespace MediaBrowser.Server.Implementations.Connect
             {
                 throw new ArgumentNullException("ConnectServerId");
             }
-            
+
             var url = GetConnectUrl("ServerAuthorizations");
 
             url += "?serverId=" + ConnectServerId;
@@ -956,6 +956,10 @@ namespace MediaBrowser.Server.Implementations.Connect
                     _data.LastAuthorizationsRefresh = DateTime.UtcNow;
                     CacheData();
                 }
+                catch (Exception ex)
+                {
+                    _logger.ErrorException("Error refreshing authorization", ex);
+                }
                 finally
                 {
                     _operationLock.Release();
@@ -1010,7 +1014,7 @@ namespace MediaBrowser.Server.Implementations.Connect
             {
                 throw new ArgumentNullException("ConnectServerId");
             }
-     
+
             var url = GetConnectUrl("ServerAuthorizations");
 
             var options = new HttpRequestOptions
@@ -1074,7 +1078,7 @@ namespace MediaBrowser.Server.Implementations.Connect
                 });
 
             SetApplicationHeader(options);
-            
+
             // No need to examine the response
             using (var response = (await _httpClient.SendAsync(options, "POST").ConfigureAwait(false)).Content)
             {
@@ -1094,7 +1098,7 @@ namespace MediaBrowser.Server.Implementations.Connect
             {
                 throw new ArgumentNullException("user");
             }
-            
+
             if (string.IsNullOrEmpty(user.ConnectUserId))
             {
                 return;

+ 0 - 5
MediaBrowser.Server.Implementations/Library/UserManager.cs

@@ -669,11 +669,6 @@ namespace MediaBrowser.Server.Implementations.Library
                 throw new ArgumentNullException("newPasswordSha1");
             }
 
-            if (user.ConnectLinkType.HasValue && user.ConnectLinkType.Value == UserLinkType.Guest)
-            {
-                throw new ArgumentException("Passwords for guests cannot be changed.");
-            }
-
             user.EasyPassword = newPasswordSha1;
 
             await UpdateUser(user).ConfigureAwait(false);

+ 0 - 58
MediaBrowser.Server.Implementations/LiveTv/CleanDatabaseScheduledTask.cs

@@ -1,58 +0,0 @@
-using MediaBrowser.Common.ScheduledTasks;
-using MediaBrowser.Controller.LiveTv;
-using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Server.Implementations.LiveTv
-{
-    class CleanDatabaseScheduledTask : IScheduledTask, IConfigurableScheduledTask
-    {
-        private readonly ILiveTvManager _liveTvManager;
-
-        public CleanDatabaseScheduledTask(ILiveTvManager liveTvManager)
-        {
-            _liveTvManager = liveTvManager;
-        }
-
-        public string Name
-        {
-            get { return "Clean TV Database"; }
-        }
-
-        public string Description
-        {
-            get { return "Deletes old programs from the tv database."; }
-        }
-
-        public string Category
-        {
-            get { return "Live TV"; }
-        }
-
-        public Task Execute(System.Threading.CancellationToken cancellationToken, IProgress<double> progress)
-        {
-            var manager = (LiveTvManager)_liveTvManager;
-
-            return manager.CleanDatabase(progress, cancellationToken);
-        }
-
-        public IEnumerable<ITaskTrigger> GetDefaultTriggers()
-        {
-            return new ITaskTrigger[] 
-            { 
-                new IntervalTrigger{ Interval = TimeSpan.FromHours(12)}
-            };
-        }
-
-        public bool IsHidden
-        {
-            get { return _liveTvManager.ActiveService == null; }
-        }
-
-        public bool IsEnabled
-        {
-            get { return true; }
-        }
-    }
-}

+ 22 - 10
MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -2,6 +2,7 @@
 using MediaBrowser.Common.Configuration;
 using MediaBrowser.Common.Extensions;
 using MediaBrowser.Common.IO;
+using MediaBrowser.Common.Progress;
 using MediaBrowser.Common.ScheduledTasks;
 using MediaBrowser.Controller.Channels;
 using MediaBrowser.Controller.Configuration;
@@ -475,7 +476,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
             item.ProviderImageUrl = channelInfo.ImageUrl;
             item.HasProviderImage = channelInfo.HasImage;
             item.ProviderImagePath = channelInfo.ImagePath;
-            
+
             if (string.IsNullOrEmpty(item.Name))
             {
                 item.Name = channelInfo.Name;
@@ -887,7 +888,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv
 
             try
             {
-                await RefreshChannelsInternal(progress, cancellationToken).ConfigureAwait(false);
+                var innerProgress = new ActionableProgress<double>();
+                innerProgress.RegisterAction(p => progress.Report(p * .9));
+                await RefreshChannelsInternal(innerProgress, cancellationToken).ConfigureAwait(false);
+
+                innerProgress = new ActionableProgress<double>();
+                innerProgress.RegisterAction(p => progress.Report(90 + (p * .1)));
+                await CleanDatabaseInternal(progress, cancellationToken).ConfigureAwait(false);
             }
             finally
             {
@@ -998,14 +1005,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
 
         public async Task CleanDatabase(IProgress<double> progress, CancellationToken cancellationToken)
         {
-            var service = ActiveService;
-
-            if (service == null)
-            {
-                progress.Report(100);
-                return;
-            }
-
             await _refreshSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
 
             try
@@ -1018,8 +1017,21 @@ namespace MediaBrowser.Server.Implementations.LiveTv
             }
         }
 
+        private Task CleanDatabaseInternal(IProgress<double> progress, CancellationToken cancellationToken)
+        {
+            return DeleteOldPrograms(_programs.Keys.ToList(), progress, cancellationToken);
+        }
+
         private async Task DeleteOldPrograms(List<Guid> currentIdList, IProgress<double> progress, CancellationToken cancellationToken)
         {
+            var service = ActiveService;
+
+            if (service == null)
+            {
+                progress.Report(100);
+                return;
+            }
+
             var list = _itemRepo.GetItemsOfType(typeof(LiveTvProgram)).ToList();
 
             var numComplete = 0;

+ 2 - 0
MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json

@@ -70,6 +70,7 @@
     "HeaderSelectCertificatePath": "Select Certificate Path",
     "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:",
     "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to premium plugins, internet channel content, and more. {0}Learn more{1}.",
+    "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.",
     "HeaderWelcomeToMediaBrowserServerDashboard": "Welcome to the Media Browser Dashboard",
     "HeaderWelcomeToMediaBrowserWebClient": "Welcome to the Media Browser Web Client",
     "ButtonTakeTheTour": "Take the tour",
@@ -83,6 +84,7 @@
     "ButtonCancelItem": "Cancel item",
     "ButtonQueueForRetry": "Queue for retry",
     "ButtonReenable": "Re-enable",
+    "ButtonLearnMore": "Learn more",
     "SyncJobItemStatusSyncedMarkForRemoval": "Marked for removal",
     "LabelAbortedByServerShutdown": "(Aborted by server shutdown)",
     "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.",

+ 1 - 2
MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj

@@ -153,8 +153,8 @@
     <Compile Include="EntryPoints\ServerEventNotifier.cs" />
     <Compile Include="EntryPoints\UserDataChangeNotifier.cs" />
     <Compile Include="FileOrganization\OrganizerScheduledTask.cs" />
-    <Compile Include="HttpServer\NetListener\HttpListenerServer.cs" />
     <Compile Include="HttpServer\IHttpListener.cs" />
+    <Compile Include="HttpServer\NetListener\HttpListenerServer.cs" />
     <Compile Include="HttpServer\Security\AuthorizationContext.cs" />
     <Compile Include="HttpServer\ContainerAdapter.cs" />
     <Compile Include="HttpServer\GetSwaggerResource.cs" />
@@ -222,7 +222,6 @@
     <Compile Include="Library\Validators\StudiosValidator.cs" />
     <Compile Include="Library\Validators\YearsPostScanTask.cs" />
     <Compile Include="LiveTv\ChannelImageProvider.cs" />
-    <Compile Include="LiveTv\CleanDatabaseScheduledTask.cs" />
     <Compile Include="LiveTv\LiveTvConfigurationFactory.cs" />
     <Compile Include="LiveTv\LiveTvDtoService.cs" />
     <Compile Include="LiveTv\LiveTvManager.cs" />

+ 6 - 3
MediaBrowser.Server.Startup.Common/ApplicationHost.cs

@@ -843,10 +843,13 @@ namespace MediaBrowser.Server.Startup.Common
                 if (ServerConfigurationManager.Configuration.HttpServerPortNumber != HttpPort ||
                     ServerConfigurationManager.Configuration.HttpsPortNumber != HttpsPort)
                 {
-                    ServerConfigurationManager.Configuration.IsPortAuthorized = false;
-                    ServerConfigurationManager.SaveConfiguration();
+                    if (ServerConfigurationManager.Configuration.IsPortAuthorized)
+                    {
+                        ServerConfigurationManager.Configuration.IsPortAuthorized = false;
+                        ServerConfigurationManager.SaveConfiguration();
 
-                    requiresRestart = true;
+                        requiresRestart = true;
+                    }
                 }
             }
 

+ 2 - 2
Nuget/MediaBrowser.Common.Internal.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Common.Internal</id>
-        <version>3.0.566</version>
+        <version>3.0.567</version>
         <title>MediaBrowser.Common.Internal</title>
         <authors>Luke</authors>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.566" />
+            <dependency id="MediaBrowser.Common" version="3.0.567" />
             <dependency id="NLog" version="3.1.0.0" />
             <dependency id="SimpleInjector" version="2.6.1" />
         </dependencies>

+ 1 - 1
Nuget/MediaBrowser.Common.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Common</id>
-        <version>3.0.566</version>
+        <version>3.0.567</version>
         <title>MediaBrowser.Common</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>

+ 1 - 1
Nuget/MediaBrowser.Model.Signed.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Model.Signed</id>
-        <version>3.0.566</version>
+        <version>3.0.567</version>
         <title>MediaBrowser.Model - Signed Edition</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>

+ 2 - 2
Nuget/MediaBrowser.Server.Core.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Server.Core</id>
-        <version>3.0.566</version>
+        <version>3.0.567</version>
         <title>Media Browser.Server.Core</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains core components required to build plugins for Media Browser Server.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.566" />
+            <dependency id="MediaBrowser.Common" version="3.0.567" />
         </dependencies>
     </metadata>
     <files>

+ 1 - 1
SharedVersion.cs

@@ -1,4 +1,4 @@
 using System.Reflection;
 
 //[assembly: AssemblyVersion("3.0.*")]
-[assembly: AssemblyVersion("3.0.5518.1")]
+[assembly: AssemblyVersion("3.0.5518.2")]