Explorar o código

add transcode temp path migration

Luke Pulverenti %!s(int64=10) %!d(string=hai) anos
pai
achega
98ae564226

+ 1 - 1
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -250,7 +250,7 @@ namespace MediaBrowser.Api.Playback
 
         protected EncodingQuality GetQualitySetting()
         {
-            var quality = ApiEntryPoint.Instance.GetEncodingOptions().MediaEncodingQuality;
+            var quality = ApiEntryPoint.Instance.GetEncodingOptions().EncodingQuality;
 
             if (quality == EncodingQuality.Auto)
             {

+ 6 - 1
MediaBrowser.Common.Implementations/Configuration/BaseConfigurationManager.cs

@@ -105,7 +105,7 @@ namespace MediaBrowser.Common.Implementations.Configuration
             UpdateCachePath();
         }
 
-        public void AddParts(IEnumerable<IConfigurationFactory> factories)
+        public virtual void AddParts(IEnumerable<IConfigurationFactory> factories)
         {
             _configurationFactories = factories.ToArray();
 
@@ -266,6 +266,11 @@ namespace MediaBrowser.Common.Implementations.Configuration
                 XmlSerializer.SerializeToFile(configuration, path);
             }
 
+            OnNamedConfigurationUpdated(key, configuration);
+        }
+
+        protected virtual void OnNamedConfigurationUpdated(string key, object configuration)
+        {
             EventHelper.FireEventIfNotNull(NamedConfigurationUpdated, this, new ConfigurationUpdateEventArgs
             {
                 Key = key,

+ 31 - 1
MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs

@@ -1,4 +1,5 @@
-using MediaBrowser.Common.Configuration;
+using System.Collections.Generic;
+using MediaBrowser.Common.Configuration;
 using MediaBrowser.Common.Events;
 using MediaBrowser.Common.Implementations.Configuration;
 using MediaBrowser.Controller;
@@ -75,6 +76,13 @@ namespace MediaBrowser.Server.Implementations.Configuration
             base.OnConfigurationUpdated();
         }
 
+        public override void AddParts(IEnumerable<IConfigurationFactory> factories)
+        {
+            base.AddParts(factories);
+
+            UpdateTranscodingTempPath();
+        }
+
         /// <summary>
         /// Updates the items by name path.
         /// </summary>
@@ -95,6 +103,28 @@ namespace MediaBrowser.Server.Implementations.Configuration
                 Configuration.MetadataPath;
         }
 
+        /// <summary>
+        /// Updates the transcoding temporary path.
+        /// </summary>
+        private void UpdateTranscodingTempPath()
+        {
+            var encodingConfig = this.GetConfiguration<EncodingOptions>("encoding");
+
+            ((ServerApplicationPaths)ApplicationPaths).TranscodingTempPath = string.IsNullOrEmpty(encodingConfig.TranscodingTempPath) ?
+                null :
+                encodingConfig.TranscodingTempPath;
+        }
+
+        protected override void OnNamedConfigurationUpdated(string key, object configuration)
+        {
+            base.OnNamedConfigurationUpdated(key, configuration);
+
+            if (string.Equals(key, "encoding", StringComparison.OrdinalIgnoreCase))
+            {
+                UpdateTranscodingTempPath();
+            }
+        }
+
         /// <summary>
         /// Replaces the configuration.
         /// </summary>

+ 27 - 12
MediaBrowser.Server.Startup.Common/ApplicationHost.cs

@@ -238,12 +238,12 @@ namespace MediaBrowser.Server.Startup.Common
         /// <param name="remotePackageName">Name of the remote package.</param>
         /// <param name="supportsNativeWebSocket">if set to <c>true</c> [supports native web socket].</param>
         /// <param name="nativeApp">The native application.</param>
-        public ApplicationHost(ServerApplicationPaths applicationPaths, 
-            ILogManager logManager, 
-            StartupOptions options, 
+        public ApplicationHost(ServerApplicationPaths applicationPaths,
+            ILogManager logManager,
+            StartupOptions options,
             IFileSystem fileSystem,
-            string remotePackageName, 
-            bool supportsNativeWebSocket, 
+            string remotePackageName,
+            bool supportsNativeWebSocket,
             INativeApp nativeApp)
             : base(applicationPaths, logManager, fileSystem)
         {
@@ -353,12 +353,14 @@ namespace MediaBrowser.Server.Startup.Common
 
         public override async Task Init(IProgress<double> progress)
         {
-            PerformVersionMigration();
+            PerformPreInitMigrations();
 
             await base.Init(progress).ConfigureAwait(false);
+
+            PerformPostInitMigrations();
         }
 
-        private void PerformVersionMigration()
+        private void PerformPreInitMigrations()
         {
             var migrations = new List<IVersionMigration>
             {
@@ -375,6 +377,19 @@ namespace MediaBrowser.Server.Startup.Common
             }
         }
 
+        private void PerformPostInitMigrations()
+        {
+            var migrations = new List<IVersionMigration>
+            {
+                new MigrateTranscodingPath(ServerConfigurationManager)
+            };
+
+            foreach (var task in migrations)
+            {
+                task.Run();
+            }
+        }
+
         /// <summary>
         /// Registers resources that classes will depend on
         /// </summary>
@@ -383,7 +398,7 @@ namespace MediaBrowser.Server.Startup.Common
         {
             await base.RegisterResources(progress).ConfigureAwait(false);
 
-			RegisterSingleInstance<IHttpResultFactory>(new HttpResultFactory(LogManager, FileSystemManager, JsonSerializer));
+            RegisterSingleInstance<IHttpResultFactory>(new HttpResultFactory(LogManager, FileSystemManager, JsonSerializer));
 
             RegisterSingleInstance<IServerApplicationHost>(this);
             RegisterSingleInstance<IServerApplicationPaths>(ApplicationPaths);
@@ -398,7 +413,7 @@ namespace MediaBrowser.Server.Startup.Common
             UserDataManager = new UserDataManager(LogManager);
             RegisterSingleInstance(UserDataManager);
 
-			UserRepository = await GetUserRepository().ConfigureAwait(false);
+            UserRepository = await GetUserRepository().ConfigureAwait(false);
             RegisterSingleInstance(UserRepository);
 
             DisplayPreferencesRepository = new SqliteDisplayPreferencesRepository(ApplicationPaths, JsonSerializer, LogManager);
@@ -439,7 +454,7 @@ namespace MediaBrowser.Server.Startup.Common
 
             RegisterSingleInstance<ISearchEngine>(() => new SearchEngine(LogManager, LibraryManager, UserManager));
 
-			HttpServer = ServerFactory.CreateServer(this, LogManager, "Media Browser", WebApplicationName, "dashboard/index.html", _supportsNativeWebSocket);
+            HttpServer = ServerFactory.CreateServer(this, LogManager, "Media Browser", WebApplicationName, "dashboard/index.html", _supportsNativeWebSocket);
             RegisterSingleInstance(HttpServer, false);
             progress.Report(10);
 
@@ -533,12 +548,12 @@ namespace MediaBrowser.Server.Startup.Common
             RegisterSingleInstance<ISessionContext>(new SessionContext(UserManager, authContext, SessionManager));
             RegisterSingleInstance<IAuthService>(new AuthService(UserManager, authContext, ServerConfigurationManager, ConnectManager, SessionManager));
 
-			RegisterSingleInstance<ISubtitleEncoder>(new SubtitleEncoder(LibraryManager, LogManager.GetLogger("SubtitleEncoder"), ApplicationPaths, FileSystemManager, MediaEncoder, JsonSerializer));
+            RegisterSingleInstance<ISubtitleEncoder>(new SubtitleEncoder(LibraryManager, LogManager.GetLogger("SubtitleEncoder"), ApplicationPaths, FileSystemManager, MediaEncoder, JsonSerializer));
 
             await ConfigureDisplayPreferencesRepositories().ConfigureAwait(false);
             await ConfigureItemRepositories().ConfigureAwait(false);
             await ConfigureUserDataRepositories().ConfigureAwait(false);
-			await ConfigureNotificationsRepository().ConfigureAwait(false);
+            await ConfigureNotificationsRepository().ConfigureAwait(false);
             progress.Report(100);
 
             SetStaticProperties();

+ 1 - 0
MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj

@@ -66,6 +66,7 @@
     <Compile Include="Migrations\DeleteDlnaProfiles.cs" />
     <Compile Include="Migrations\DeprecatePlugins.cs" />
     <Compile Include="Migrations\IVersionMigration.cs" />
+    <Compile Include="Migrations\MigrateTranscodingPath.cs" />
     <Compile Include="Migrations\MigrateUserFolders.cs" />
     <Compile Include="Migrations\RenameXbmcOptions.cs" />
     <Compile Include="Migrations\RenameXmlOptions.cs" />

+ 30 - 0
MediaBrowser.Server.Startup.Common/Migrations/MigrateTranscodingPath.cs

@@ -0,0 +1,30 @@
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Model.Configuration;
+
+namespace MediaBrowser.Server.Startup.Common.Migrations
+{
+    public class MigrateTranscodingPath : IVersionMigration
+    {
+        private readonly IServerConfigurationManager _config;
+
+        public MigrateTranscodingPath(IServerConfigurationManager config)
+        {
+            _config = config;
+        }
+
+        public void Run()
+        {
+            if (!string.IsNullOrWhiteSpace(_config.Configuration.TranscodingTempPath))
+            {
+                var newConfig = _config.GetConfiguration<EncodingOptions>("encoding");
+
+                newConfig.TranscodingTempPath = _config.Configuration.TranscodingTempPath;
+                _config.SaveConfiguration("encoding", newConfig);
+
+                _config.Configuration.TranscodingTempPath = null;
+                _config.SaveConfiguration();
+            }
+        }
+    }
+}