Ver Fonte

Merge pull request #6174 from Bond-009/diacritics

Remove our own RemoveDiacritcs string extension in favor of Diacritics.Net
Claus Vium há 4 anos atrás
pai
commit
9405604913

+ 1 - 1
Emby.Dlna/Service/BaseControlHandler.cs

@@ -6,9 +6,9 @@ using System.IO;
 using System.Text;
 using System.Threading.Tasks;
 using System.Xml;
+using Diacritics.Extensions;
 using Emby.Dlna.Didl;
 using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Extensions;
 using Microsoft.Extensions.Logging;
 
 namespace Emby.Dlna.Service

+ 1 - 0
Emby.Server.Implementations/Data/SqliteItemRepository.cs

@@ -11,6 +11,7 @@ using System.Linq;
 using System.Text;
 using System.Text.Json;
 using System.Threading;
+using Diacritics.Extensions;
 using Emby.Server.Implementations.Playlists;
 using Jellyfin.Data.Enums;
 using Jellyfin.Extensions;

+ 1 - 1
Emby.Server.Implementations/Library/SearchEngine.cs

@@ -5,12 +5,12 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using Diacritics.Extensions;
 using Jellyfin.Data.Entities;
 using Jellyfin.Data.Enums;
 using MediaBrowser.Controller.Dto;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Extensions;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Model.Querying;
 using MediaBrowser.Model.Search;

+ 2 - 5
Jellyfin.Drawing.Skia/SkiaEncoder.cs

@@ -3,10 +3,10 @@ using System.Collections.Generic;
 using System.Globalization;
 using System.IO;
 using BlurHashSharp.SkiaSharp;
+using Diacritics.Extensions;
 using MediaBrowser.Common.Configuration;
 using MediaBrowser.Common.Extensions;
 using MediaBrowser.Controller.Drawing;
-using MediaBrowser.Controller.Extensions;
 using MediaBrowser.Model.Drawing;
 using Microsoft.Extensions.Logging;
 using SkiaSharp;
@@ -142,9 +142,6 @@ namespace Jellyfin.Drawing.Skia
             return BlurHashEncoder.Encode(xComp, yComp, path, 128, 128);
         }
 
-        private static bool HasDiacritics(string text)
-            => !string.Equals(text, text.RemoveDiacritics(), StringComparison.Ordinal);
-
         private bool RequiresSpecialCharacterHack(string path)
         {
             for (int i = 0; i < path.Length; i++)
@@ -155,7 +152,7 @@ namespace Jellyfin.Drawing.Skia
                 }
             }
 
-            return HasDiacritics(path);
+            return path.HasDiacritics();
         }
 
         private string NormalizePath(string path)

+ 1 - 1
MediaBrowser.Controller/Entities/Audio/MusicArtist.cs

@@ -8,9 +8,9 @@ using System.Linq;
 using System.Text.Json.Serialization;
 using System.Threading;
 using System.Threading.Tasks;
+using Diacritics.Extensions;
 using Jellyfin.Data.Entities;
 using Jellyfin.Data.Enums;
-using MediaBrowser.Controller.Extensions;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using Microsoft.Extensions.Logging;

+ 1 - 1
MediaBrowser.Controller/Entities/Audio/MusicGenre.cs

@@ -5,7 +5,7 @@
 using System;
 using System.Collections.Generic;
 using System.Text.Json.Serialization;
-using MediaBrowser.Controller.Extensions;
+using Diacritics.Extensions;
 using Microsoft.Extensions.Logging;
 
 namespace MediaBrowser.Controller.Entities.Audio

+ 1 - 1
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -11,6 +11,7 @@ using System.Text;
 using System.Text.Json.Serialization;
 using System.Threading;
 using System.Threading.Tasks;
+using Diacritics.Extensions;
 using Jellyfin.Data.Entities;
 using Jellyfin.Data.Enums;
 using Jellyfin.Extensions;
@@ -18,7 +19,6 @@ using MediaBrowser.Common.Extensions;
 using MediaBrowser.Controller.Channels;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Dto;
-using MediaBrowser.Controller.Extensions;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;

+ 1 - 1
MediaBrowser.Controller/Entities/Genre.cs

@@ -5,8 +5,8 @@
 using System;
 using System.Collections.Generic;
 using System.Text.Json.Serialization;
+using Diacritics.Extensions;
 using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Extensions;
 using Microsoft.Extensions.Logging;
 
 namespace MediaBrowser.Controller.Entities

+ 1 - 1
MediaBrowser.Controller/Entities/Person.cs

@@ -5,7 +5,7 @@
 using System;
 using System.Collections.Generic;
 using System.Text.Json.Serialization;
-using MediaBrowser.Controller.Extensions;
+using Diacritics.Extensions;
 using MediaBrowser.Controller.Providers;
 using Microsoft.Extensions.Logging;
 

+ 1 - 1
MediaBrowser.Controller/Entities/Studio.cs

@@ -5,7 +5,7 @@
 using System;
 using System.Collections.Generic;
 using System.Text.Json.Serialization;
-using MediaBrowser.Controller.Extensions;
+using Diacritics.Extensions;
 using Microsoft.Extensions.Logging;
 
 namespace MediaBrowser.Controller.Entities

+ 0 - 52
MediaBrowser.Controller/Extensions/StringExtensions.cs

@@ -1,52 +0,0 @@
-#pragma warning disable CS1591
-
-using System;
-using System.Globalization;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-
-namespace MediaBrowser.Controller.Extensions
-{
-    /// <summary>
-    /// Class BaseExtensions.
-    /// </summary>
-    public static class StringExtensions
-    {
-        public static string RemoveDiacritics(this string 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])", string.Empty);
-                    return Normalize(text, form, false);
-                }
-            }
-
-            try
-            {
-                return text.Normalize(form);
-            }
-            catch (ArgumentException)
-            {
-                // if it still fails, return the original text
-                return text;
-            }
-        }
-    }
-}

+ 1 - 0
MediaBrowser.Controller/Library/NameExtensions.cs

@@ -3,6 +3,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using Diacritics.Extensions;
 using MediaBrowser.Controller.Extensions;
 
 namespace MediaBrowser.Controller.Library

+ 1 - 0
MediaBrowser.Controller/MediaBrowser.Controller.csproj

@@ -14,6 +14,7 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <PackageReference Include="Diacritics" Version="2.1.20036.1" />
     <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0" />
     <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="5.0.0" />
     <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />

+ 1 - 1
MediaBrowser.Providers/Manager/ProviderUtils.cs

@@ -3,9 +3,9 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using Diacritics.Extensions;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Extensions;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 

+ 2 - 12
MediaBrowser.Providers/Plugins/MusicBrainz/ArtistProvider.cs

@@ -11,8 +11,8 @@ using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Xml;
+using Diacritics.Extensions;
 using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Extensions;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Providers;
@@ -53,7 +53,7 @@ namespace MediaBrowser.Providers.Music
                     }
                 }
 
-                if (HasDiacritics(searchInfo.Name))
+                if (searchInfo.Name.HasDiacritics())
                 {
                     // Try again using the search with accent characters url
                     url = string.Format(CultureInfo.InvariantCulture, "/ws/2/artist/?query=artistaccent:\"{0}\"", UrlEncode(nameToSearch));
@@ -251,16 +251,6 @@ namespace MediaBrowser.Providers.Music
             return result;
         }
 
-        /// <summary>
-        /// Determines whether the specified text has diacritics.
-        /// </summary>
-        /// <param name="text">The text.</param>
-        /// <returns><c>true</c> if the specified text has diacritics; otherwise, <c>false</c>.</returns>
-        private bool HasDiacritics(string text)
-        {
-            return !string.Equals(text, text.RemoveDiacritics(), StringComparison.Ordinal);
-        }
-
         /// <summary>
         /// Encodes an URL.
         /// </summary>