Browse Source

Reworked LocalizationManager to load data async

Bond_009 6 năm trước cách đây
mục cha
commit
51edd5d067
27 tập tin đã thay đổi với 159 bổ sung208 xóa
  1. 7 9
      Emby.Server.Implementations/ApplicationHost.cs
  2. 8 8
      Emby.Server.Implementations/Library/MediaSourceManager.cs
  3. 85 102
      Emby.Server.Implementations/Localization/LocalizationManager.cs
  4. 0 0
      Emby.Server.Implementations/Localization/Ratings/br.csv
  5. 0 0
      Emby.Server.Implementations/Localization/Ratings/ca.csv
  6. 0 0
      Emby.Server.Implementations/Localization/Ratings/co.csv
  7. 0 0
      Emby.Server.Implementations/Localization/Ratings/dk.csv
  8. 0 0
      Emby.Server.Implementations/Localization/Ratings/es.csv
  9. 0 0
      Emby.Server.Implementations/Localization/Ratings/fr.csv
  10. 0 0
      Emby.Server.Implementations/Localization/Ratings/gb.csv
  11. 0 0
      Emby.Server.Implementations/Localization/Ratings/ie.csv
  12. 0 0
      Emby.Server.Implementations/Localization/Ratings/jp.csv
  13. 0 0
      Emby.Server.Implementations/Localization/Ratings/kz.csv
  14. 0 0
      Emby.Server.Implementations/Localization/Ratings/mx.csv
  15. 0 0
      Emby.Server.Implementations/Localization/Ratings/nl.csv
  16. 0 0
      Emby.Server.Implementations/Localization/Ratings/nz.csv
  17. 0 0
      Emby.Server.Implementations/Localization/Ratings/ro.csv
  18. 0 0
      Emby.Server.Implementations/Localization/Ratings/uk.csv
  19. 0 0
      Emby.Server.Implementations/Localization/Ratings/us.csv
  20. 0 63
      Emby.Server.Implementations/Localization/TextLocalizer.cs
  21. 1 1
      Jellyfin.Server/Program.cs
  22. 4 3
      MediaBrowser.Api/ItemUpdateService.cs
  23. 2 2
      MediaBrowser.Common/IApplicationHost.cs
  24. 42 4
      MediaBrowser.Controller/Extensions/StringExtensions.cs
  25. 4 4
      MediaBrowser.Model/Globalization/ILocalizationManager.cs
  26. 1 2
      MediaBrowser.Providers/Manager/MetadataService.cs
  27. 5 10
      MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs

+ 7 - 9
Emby.Server.Implementations/ApplicationHost.cs

@@ -110,9 +110,7 @@ using MediaBrowser.XbmcMetadata.Providers;
 using Microsoft.Extensions.Logging;
 using ServiceStack;
 using ServiceStack.Text.Jsv;
-using StringExtensions = MediaBrowser.Controller.Extensions.StringExtensions;
 using X509Certificate = System.Security.Cryptography.X509Certificates.X509Certificate;
-using UtfUnknown;
 
 namespace Emby.Server.Implementations
 {
@@ -303,7 +301,7 @@ namespace Emby.Server.Implementations
 
         private ILiveTvManager LiveTvManager { get; set; }
 
-        public ILocalizationManager LocalizationManager { get; set; }
+        public LocalizationManager LocalizationManager { get; set; }
 
         private IEncodingManager EncodingManager { get; set; }
         private IChannelManager ChannelManager { get; set; }
@@ -704,7 +702,7 @@ namespace Emby.Server.Implementations
             }
         }
 
-        public void Init()
+        public async Task Init()
         {
             HttpPort = ServerConfigurationManager.Configuration.HttpServerPortNumber;
             HttpsPort = ServerConfigurationManager.Configuration.HttpsPortNumber;
@@ -734,7 +732,7 @@ namespace Emby.Server.Implementations
 
             SetHttpLimit();
 
-            RegisterResources();
+            await RegisterResources();
 
             FindParts();
         }
@@ -749,7 +747,7 @@ namespace Emby.Server.Implementations
         /// <summary>
         /// Registers resources that classes will depend on
         /// </summary>
-        protected void RegisterResources()
+        protected async Task RegisterResources()
         {
             RegisterSingleInstance(ConfigurationManager);
             RegisterSingleInstance<IApplicationHost>(this);
@@ -810,9 +808,9 @@ namespace Emby.Server.Implementations
             IAssemblyInfo assemblyInfo = new AssemblyInfo();
             RegisterSingleInstance(assemblyInfo);
 
-            LocalizationManager = new LocalizationManager(ServerConfigurationManager, FileSystemManager, JsonSerializer, LoggerFactory, assemblyInfo, new TextLocalizer());
-            StringExtensions.LocalizationManager = LocalizationManager;
-            RegisterSingleInstance(LocalizationManager);
+            LocalizationManager = new LocalizationManager(ServerConfigurationManager, FileSystemManager, JsonSerializer, LoggerFactory);
+            await LocalizationManager.LoadAll();
+            RegisterSingleInstance<ILocalizationManager>(LocalizationManager);
 
             BlurayExaminer = new BdInfoExaminer(FileSystemManager);
             RegisterSingleInstance(BlurayExaminer);

+ 8 - 8
Emby.Server.Implementations/Library/MediaSourceManager.cs

@@ -322,18 +322,18 @@ namespace Emby.Server.Implementations.Library
 
         private string[] NormalizeLanguage(string language)
         {
-            if (language != null)
+            if (language == null)
             {
-                var culture = _localizationManager.FindLanguageInfo(language);
-                if (culture != null)
-                {
-                    return culture.ThreeLetterISOLanguageNames;
-                }
+                return Array.Empty<string>();
+            }
 
-                return new string[] { language };
+            var culture = _localizationManager.FindLanguageInfo(language);
+            if (culture != null)
+            {
+                return culture.ThreeLetterISOLanguageNames;
             }
 
-            return Array.Empty<string>();
+            return new string[] { language };
         }
 
         private void SetDefaultSubtitleStreamIndex(MediaSourceInfo source, UserItemData userData, User user, bool allowRememberingSelection)

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 85 - 102
Emby.Server.Implementations/Localization/LocalizationManager.cs


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/br.txt → Emby.Server.Implementations/Localization/Ratings/br.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/ca.txt → Emby.Server.Implementations/Localization/Ratings/ca.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/co.txt → Emby.Server.Implementations/Localization/Ratings/co.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/dk.txt → Emby.Server.Implementations/Localization/Ratings/dk.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/es.txt → Emby.Server.Implementations/Localization/Ratings/es.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/fr.txt → Emby.Server.Implementations/Localization/Ratings/fr.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/gb.txt → Emby.Server.Implementations/Localization/Ratings/gb.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/ie.txt → Emby.Server.Implementations/Localization/Ratings/ie.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/jp.txt → Emby.Server.Implementations/Localization/Ratings/jp.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/kz.txt → Emby.Server.Implementations/Localization/Ratings/kz.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/mx.txt → Emby.Server.Implementations/Localization/Ratings/mx.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/nl.txt → Emby.Server.Implementations/Localization/Ratings/nl.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/nz.txt → Emby.Server.Implementations/Localization/Ratings/nz.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/ro.txt → Emby.Server.Implementations/Localization/Ratings/ro.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/uk.txt → Emby.Server.Implementations/Localization/Ratings/uk.csv


+ 0 - 0
Emby.Server.Implementations/Localization/Ratings/us.txt → Emby.Server.Implementations/Localization/Ratings/us.csv


+ 0 - 63
Emby.Server.Implementations/Localization/TextLocalizer.cs

@@ -1,63 +0,0 @@
-using System;
-using System.Globalization;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-
-namespace Emby.Server.Implementations.Localization
-{
-    public class TextLocalizer : ITextLocalizer
-    {
-        public string RemoveDiacritics(string text)
-        {
-            if (text == null)
-            {
-                throw new ArgumentNullException(nameof(text));
-            }
-
-            var chars = Normalize(text, NormalizationForm.FormD)
-                .Where(ch => CharUnicodeInfo.GetUnicodeCategory(ch) != UnicodeCategory.NonSpacingMark);
-
-            return Normalize(string.Concat(chars), NormalizationForm.FormC);
-        }
-
-        private static string Normalize(string text, NormalizationForm form, bool stripStringOnFailure = true)
-        {
-            if (stripStringOnFailure)
-            {
-                try
-                {
-                    return text.Normalize(form);
-                }
-                catch (ArgumentException)
-                {
-                    // will throw if input contains invalid unicode chars
-                    // https://mnaoumov.wordpress.com/2014/06/14/stripping-invalid-characters-from-utf-16-strings/
-                    text = StripInvalidUnicodeCharacters(text);
-                    return Normalize(text, form, false);
-                }
-            }
-
-            try
-            {
-                return text.Normalize(form);
-            }
-            catch (ArgumentException)
-            {
-                // if it still fails, return the original text
-                return text;
-            }
-        }
-
-        private static string StripInvalidUnicodeCharacters(string str)
-        {
-            var invalidCharactersRegex = new Regex("([\ud800-\udbff](?![\udc00-\udfff]))|((?<![\ud800-\udbff])[\udc00-\udfff])");
-            return invalidCharactersRegex.Replace(str, "");
-        }
-
-        public string NormalizeFormKD(string text)
-        {
-            return text.Normalize(NormalizationForm.FormKD);
-        }
-    }
-}

+ 1 - 1
Jellyfin.Server/Program.cs

@@ -98,7 +98,7 @@ namespace Jellyfin.Server
                 new NullImageEncoder(),
                 new NetworkManager(_loggerFactory, environmentInfo)))
             {
-                appHost.Init();
+                await appHost.Init();
 
                 appHost.ImageProcessor.ImageEncoder = GetImageEncoder(fileSystem, appPaths, appHost.LocalizationManager);
 

+ 4 - 3
MediaBrowser.Api/ItemUpdateService.cs

@@ -2,6 +2,7 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading;
+using System.Threading.Tasks;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.Audio;
@@ -60,15 +61,15 @@ namespace MediaBrowser.Api
             _fileSystem = fileSystem;
         }
 
-        public object Get(GetMetadataEditorInfo request)
+        public async Task<object> Get(GetMetadataEditorInfo request)
         {
             var item = _libraryManager.GetItemById(request.ItemId);
 
             var info = new MetadataEditorInfo
             {
-                ParentalRatingOptions = _localizationManager.GetParentalRatings(),
+                ParentalRatingOptions = _localizationManager.GetParentalRatings().ToArray(),
                 ExternalIdInfos = _providerManager.GetExternalIdInfos(item).ToArray(),
-                Countries = _localizationManager.GetCountries(),
+                Countries = await _localizationManager.GetCountries(),
                 Cultures = _localizationManager.GetCultures()
             };
 

+ 2 - 2
MediaBrowser.Common/IApplicationHost.cs

@@ -89,7 +89,7 @@ namespace MediaBrowser.Common
         /// <typeparam name="T"></typeparam>
         /// <param name="manageLiftime">if set to <c>true</c> [manage liftime].</param>
         /// <returns>IEnumerable{``0}.</returns>
-        IEnumerable<T> GetExports<T>(bool manageLiftime = true);
+        IEnumerable<T> GetExports<T>(bool manageLifetime = true);
 
         /// <summary>
         /// Updates the application.
@@ -131,7 +131,7 @@ namespace MediaBrowser.Common
         /// <summary>
         /// Inits this instance.
         /// </summary>
-        void Init();
+        Task Init();
 
         /// <summary>
         /// Creates the instance.

+ 42 - 4
MediaBrowser.Controller/Extensions/StringExtensions.cs

@@ -1,4 +1,8 @@
-using MediaBrowser.Model.Globalization;
+using System;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
 
 namespace MediaBrowser.Controller.Extensions
 {
@@ -7,11 +11,45 @@ namespace MediaBrowser.Controller.Extensions
     /// </summary>
     public static class StringExtensions
     {
-        public static ILocalizationManager LocalizationManager { get; set; }
-
         public static string RemoveDiacritics(this string text)
         {
-            return LocalizationManager.RemoveDiacritics(text);
+            if (text == null)
+            {
+                throw new ArgumentNullException(nameof(text));
+            }
+
+            var chars = Normalize(text, NormalizationForm.FormD)
+                .Where(ch => CharUnicodeInfo.GetUnicodeCategory(ch) != UnicodeCategory.NonSpacingMark);
+
+            return Normalize(string.Concat(chars), NormalizationForm.FormC);
+        }
+
+        private static string Normalize(string text, NormalizationForm form, bool stripStringOnFailure = true)
+        {
+            if (stripStringOnFailure)
+            {
+                try
+                {
+                    return text.Normalize(form);
+                }
+                catch (ArgumentException)
+                {
+                    // will throw if input contains invalid unicode chars
+                    // https://mnaoumov.wordpress.com/2014/06/14/stripping-invalid-characters-from-utf-16-strings/
+                    text = Regex.Replace(text, "([\ud800-\udbff](?![\udc00-\udfff]))|((?<![\ud800-\udbff])[\udc00-\udfff])", "");
+                    return Normalize(text, form, false);
+                }
+            }
+
+            try
+            {
+                return text.Normalize(form);
+            }
+            catch (ArgumentException)
+            {
+                // if it still fails, return the original text
+                return text;
+            }
         }
     }
 }

+ 4 - 4
MediaBrowser.Model/Globalization/ILocalizationManager.cs

@@ -1,4 +1,6 @@
+using System.Collections.Generic;
 using System.Globalization;
+using System.Threading.Tasks;
 using MediaBrowser.Model.Entities;
 
 namespace MediaBrowser.Model.Globalization
@@ -17,12 +19,12 @@ namespace MediaBrowser.Model.Globalization
         /// Gets the countries.
         /// </summary>
         /// <returns>IEnumerable{CountryInfo}.</returns>
-        CountryInfo[] GetCountries();
+        Task<CountryInfo[]> GetCountries();
         /// <summary>
         /// Gets the parental ratings.
         /// </summary>
         /// <returns>IEnumerable{ParentalRating}.</returns>
-        ParentalRating[] GetParentalRatings();
+        IEnumerable<ParentalRating> GetParentalRatings();
         /// <summary>
         /// Gets the rating level.
         /// </summary>
@@ -51,8 +53,6 @@ namespace MediaBrowser.Model.Globalization
         /// <returns>IEnumerable{LocalizatonOption}.</returns>
         LocalizationOption[] GetLocalizationOptions();
 
-        string RemoveDiacritics(string text);
-
         string NormalizeFormKD(string text);
 
         bool HasUnicodeCategory(string value, UnicodeCategory category);

+ 1 - 2
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -566,8 +566,7 @@ namespace MediaBrowser.Providers.Manager
                 var providersWithChanges = providers
                     .Where(i =>
                     {
-                        var hasFileChangeMonitor = i as IHasItemChangeMonitor;
-                        if (hasFileChangeMonitor != null)
+                        if (i is IHasItemChangeMonitor hasFileChangeMonitor)
                         {
                             return HasChanged(item, hasFileChangeMonitor, options.DirectoryService);
                         }

+ 5 - 10
MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs

@@ -73,17 +73,12 @@ namespace MediaBrowser.Providers.MediaInfo
                 }
             }
 
-            if (item.SupportsLocalMetadata)
+            if (item.SupportsLocalMetadata && video != null && !video.IsPlaceHolder
+                && !video.SubtitleFiles.SequenceEqual(
+                        _subtitleResolver.GetExternalSubtitleFiles(video, directoryService, false), StringComparer.Ordinal))
             {
-                if (video != null && !video.IsPlaceHolder)
-                {
-                    if (!video.SubtitleFiles
-                        .SequenceEqual(_subtitleResolver.GetExternalSubtitleFiles(video, directoryService, false), StringComparer.Ordinal))
-                    {
-                        _logger.LogDebug("Refreshing {0} due to external subtitles change.", item.Path);
-                        return true;
-                    }
-                }
+                _logger.LogDebug("Refreshing {0} due to external subtitles change.", item.Path);
+                return true;
             }
 
             return false;

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác