Преглед изворни кода

update the gueststars regex to use commas as delimitators

Luis Miguel Almánzar пре 11 година
родитељ
комит
3f4dd4231d
1 измењених фајлова са 7 додато и 4 уклоњено
  1. 7 4
      MediaBrowser.Providers/TV/RemoteEpisodeProvider.cs

+ 7 - 4
MediaBrowser.Providers/TV/RemoteEpisodeProvider.cs

@@ -317,9 +317,12 @@ namespace MediaBrowser.Providers.TV
                 if (actors != null)
                 if (actors != null)
                 {
                 {
                     // Sometimes tvdb actors have leading spaces
                     // Sometimes tvdb actors have leading spaces
-                    var persons = Regex.Matches(actors, @"([^|()]|\([^)]*\)*)+")
+                    //Regex Info:
+                    //The first block are the posible delimitators (open-parentheses should be there cause if dont the next block will fail)
+                    //The second block Allow the delimitators to be part of the text if they're inside parentheses
+                    var persons = Regex.Matches(actors, @"(?<delimitators>([^|,(])|(?<ignoreinParentheses>\([^)]*\)*))+")
                         .Cast<Match>()
                         .Cast<Match>()
-                        .SelectMany(m => string.IsNullOrWhiteSpace(m.Value) ? new string[] { } : m.Value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
+                        .Select(m => m.Value)
                         .Where(i => !string.IsNullOrWhiteSpace(i) && !string.IsNullOrEmpty(i));
                         .Where(i => !string.IsNullOrWhiteSpace(i) && !string.IsNullOrEmpty(i));
 
 
                     foreach (var person in persons.Select(str =>
                     foreach (var person in persons.Select(str =>
@@ -340,9 +343,9 @@ namespace MediaBrowser.Providers.TV
                     var extraActors = xmlDocument.SafeGetString("//GuestStars");
                     var extraActors = xmlDocument.SafeGetString("//GuestStars");
                     if (extraActors == null) continue;
                     if (extraActors == null) continue;
                     // Sometimes tvdb actors have leading spaces
                     // Sometimes tvdb actors have leading spaces
-                    var persons = Regex.Matches(extraActors, @"([^|()]|\([^)]*\)*)+")
+                    var persons = Regex.Matches(extraActors, @"(?<delimitators>([^|,(])|(?<ignoreinParentheses>\([^)]*\)*))+")
                         .Cast<Match>()
                         .Cast<Match>()
-                        .SelectMany(m => string.IsNullOrWhiteSpace(m.Value) ? new string[] { } : m.Value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
+                        .Select(m => m.Value)
                         .Where(i => !string.IsNullOrWhiteSpace(i) && !string.IsNullOrEmpty(i));
                         .Where(i => !string.IsNullOrWhiteSpace(i) && !string.IsNullOrEmpty(i));
 
 
                     foreach (var person in persons.Select(str =>
                     foreach (var person in persons.Select(str =>