| 
					
				 | 
			
			
				@@ -1,4 +1,5 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using System.Collections.Generic; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using System.Text.RegularExpressions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using System.Xml.Linq; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using MediaBrowser.Common.Extensions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using MediaBrowser.Common.Net; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -313,9 +314,17 @@ namespace MediaBrowser.Providers.TV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (actors != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // Sometimes tvdb actors have leading spaces 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    foreach (var person in actors.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                 .Where(i => !string.IsNullOrWhiteSpace(i)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                 .Select(str => new PersonInfo {Type = PersonType.GuestStar, Name = str.Trim()})) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var persons = Regex.Matches(actors, @"([^|()]|\([^)]*\)*)+") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .Cast<Match>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .Select(m => m.Value).Where(i => !string.IsNullOrWhiteSpace(i) && !string.IsNullOrEmpty(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    foreach (var person in persons.Select(str => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                              var nameGroup = str.Split(new[] {'('}, 2, StringSplitOptions.RemoveEmptyEntries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                              var name = nameGroup[0].Trim(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                              var roles = nameGroup.Count() > 1 ? nameGroup[1].Trim() : null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                              if (roles != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                  roles = roles.EndsWith(")") ? roles.Substring(0, roles.Length - 1) : roles; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                              return new PersonInfo {Type = PersonType.GuestStar, Name = name, Role = roles}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                          })) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         episode.AddPerson(person); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -325,9 +334,18 @@ namespace MediaBrowser.Providers.TV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var extraActors = xmlDocument.SafeGetString("//GuestStars"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (extraActors == null) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // Sometimes tvdb actors have leading spaces 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    foreach (var person in extraActors.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                      .Where(i => !string.IsNullOrWhiteSpace(i)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                      .Select(str => new PersonInfo { Type = PersonType.GuestStar, Name = str.Trim() }).Where(person => !episode.People.Any(x=>x.Type == person.Type && x.Name == person.Name))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var persons = Regex.Matches(extraActors, @"([^|()]|\([^)]*\)*)+") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .Cast<Match>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .Select(m => m.Value).Where(i => !string.IsNullOrWhiteSpace(i) && !string.IsNullOrEmpty(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    foreach (var person in persons.Select(str => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                              var nameGroup = str.Split(new[] {'('}, 2, StringSplitOptions.RemoveEmptyEntries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                              var name = nameGroup[0].Trim(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                              var roles = nameGroup.Count() > 1 ? nameGroup[1].Trim() : null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                              if (roles != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                  roles = roles.EndsWith(")") ? roles.Substring(0, roles.Length - 1) : roles; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                              return new PersonInfo {Type = PersonType.GuestStar, Name = name, Role = roles}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                          }).Where(person => !episode.People.Any(x => x.Type == person.Type && x.Name == person.Name)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         episode.AddPerson(person); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 |