| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | 
							- using System;
 
- using System.IO;
 
- using System.Xml;
 
- using System.Xml.Serialization;
 
- using Emby.Server.Implementations;
 
- using MediaBrowser.Providers.Plugins.MusicBrainz.Configuration;
 
- using Microsoft.Extensions.Logging;
 
- namespace Jellyfin.Server.Migrations.PreStartupRoutines;
 
- /// <inheritdoc />
 
- public class MigrateMusicBrainzTimeout : IMigrationRoutine
 
- {
 
-     private readonly ServerApplicationPaths _applicationPaths;
 
-     private readonly ILogger<MigrateMusicBrainzTimeout> _logger;
 
-     /// <summary>
 
-     /// Initializes a new instance of the <see cref="MigrateMusicBrainzTimeout"/> class.
 
-     /// </summary>
 
-     /// <param name="applicationPaths">An instance of <see cref="ServerApplicationPaths"/>.</param>
 
-     /// <param name="loggerFactory">An instance of the <see cref="ILoggerFactory"/> interface.</param>
 
-     public MigrateMusicBrainzTimeout(ServerApplicationPaths applicationPaths, ILoggerFactory loggerFactory)
 
-     {
 
-         _applicationPaths = applicationPaths;
 
-         _logger = loggerFactory.CreateLogger<MigrateMusicBrainzTimeout>();
 
-     }
 
-     /// <inheritdoc />
 
-     public Guid Id => Guid.Parse("A6DCACF4-C057-4Ef9-80D3-61CEF9DDB4F0");
 
-     /// <inheritdoc />
 
-     public string Name => nameof(MigrateMusicBrainzTimeout);
 
-     /// <inheritdoc />
 
-     public bool PerformOnNewInstall => false;
 
-     /// <inheritdoc />
 
-     public void Perform()
 
-     {
 
-         string path = Path.Combine(_applicationPaths.PluginConfigurationsPath, "Jellyfin.Plugin.MusicBrainz.xml");
 
-         if (!File.Exists(path))
 
-         {
 
-             _logger.LogDebug("No MusicBrainz plugin configuration file found, skipping");
 
-             return;
 
-         }
 
-         var oldPluginConfiguration = ReadOld(path);
 
-         if (oldPluginConfiguration is not null)
 
-         {
 
-             var newPluginConfiguration = new PluginConfiguration();
 
-             newPluginConfiguration.Server = oldPluginConfiguration.Server;
 
-             newPluginConfiguration.ReplaceArtistName = oldPluginConfiguration.ReplaceArtistName;
 
-             var newRateLimit = oldPluginConfiguration.RateLimit / 1000.0;
 
-             newPluginConfiguration.RateLimit = newRateLimit < 1.0 ? 1.0 : newRateLimit;
 
-             WriteNew(path, newPluginConfiguration);
 
-         }
 
-     }
 
-     private OldMusicBrainzConfiguration? ReadOld(string path)
 
-     {
 
-         using var xmlReader = XmlReader.Create(path);
 
-         var serverConfigSerializer = new XmlSerializer(typeof(OldMusicBrainzConfiguration), new XmlRootAttribute("PluginConfiguration"));
 
-         return serverConfigSerializer.Deserialize(xmlReader) as OldMusicBrainzConfiguration;
 
-     }
 
-     private void WriteNew(string path, PluginConfiguration newPluginConfiguration)
 
-     {
 
-         var pluginConfigurationSerializer = new XmlSerializer(typeof(PluginConfiguration), new XmlRootAttribute("PluginConfiguration"));
 
-         var xmlWriterSettings = new XmlWriterSettings { Indent = true };
 
-         using var xmlWriter = XmlWriter.Create(path, xmlWriterSettings);
 
-         pluginConfigurationSerializer.Serialize(xmlWriter, newPluginConfiguration);
 
-     }
 
- #pragma warning disable
 
-     public sealed class OldMusicBrainzConfiguration
 
-     {
 
-         private string _server = string.Empty;
 
-         private long _rateLimit = 0L;
 
-         public string Server
 
-         {
 
-             get => _server;
 
-             set => _server = value.TrimEnd('/');
 
-         }
 
-         public long RateLimit
 
-         {
 
-             get => _rateLimit;
 
-             set => _rateLimit = value;
 
-         }
 
-         public bool ReplaceArtistName { get; set; }
 
-     }
 
- #pragma warning restore
 
- }
 
 
  |