diff --git a/MediaBrowser.Providers/TV/RemoteEpisodeProvider.cs b/MediaBrowser.Providers/TV/RemoteEpisodeProvider.cs index 9ccbd3eb7e..9099d10d65 100644 --- a/MediaBrowser.Providers/TV/RemoteEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/RemoteEpisodeProvider.cs @@ -69,7 +69,7 @@ namespace MediaBrowser.Providers.TV return ItemUpdateType.ImageUpdate | ItemUpdateType.MetadataDownload; } } - + /// /// Gets the priority. /// @@ -147,7 +147,7 @@ namespace MediaBrowser.Providers.TV return seriesXmlFileInfo.LastWriteTimeUtc; } } - + return base.CompareDate(item); } @@ -240,7 +240,7 @@ namespace MediaBrowser.Providers.TV { return status; } - IEnumerable extraEpisodesNode = new XmlDocument[]{}; + IEnumerable extraEpisodesNode = new XmlDocument[] { }; if (episode.IndexNumberEnd.HasValue) { @@ -262,7 +262,7 @@ namespace MediaBrowser.Providers.TV var xElements = all.Where(x => int.Parse(x.Element("EpisodeNumber").Value) > episode.IndexNumber && int.Parse(x.Element("EpisodeNumber").Value) <= episode.IndexNumberEnd.Value); extraEpisodesNode = xElements.OrderBy(x => x.Element("EpisodeNumber").Value).Select(x => x.ToXmlDocument()); } - + } var doc = new XmlDocument(); doc.LoadXml(episodeNode.OuterXml); @@ -320,14 +320,15 @@ namespace MediaBrowser.Providers.TV var persons = Regex.Matches(actors, @"([^|()]|\([^)]*\)*)+") .Cast() .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}; - })) + 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); } @@ -340,14 +341,15 @@ namespace MediaBrowser.Providers.TV var persons = Regex.Matches(extraActors, @"([^|()]|\([^)]*\)*)+") .Cast() .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)) + 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); @@ -358,9 +360,9 @@ namespace MediaBrowser.Providers.TV if (directors != null) { // Sometimes tvdb actors have leading spaces - foreach (var person in directors.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries) + foreach (var person in directors.Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries) .Where(i => !string.IsNullOrWhiteSpace(i)) - .Select(str => new PersonInfo {Type = PersonType.Director, Name = str.Trim()})) + .Select(str => new PersonInfo { Type = PersonType.Director, Name = str.Trim() })) { episode.AddPerson(person); } @@ -371,9 +373,9 @@ namespace MediaBrowser.Providers.TV if (writers != null) { // Sometimes tvdb actors have leading spaces - foreach (var person in writers.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries) + foreach (var person in writers.Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries) .Where(i => !string.IsNullOrWhiteSpace(i)) - .Select(str => new PersonInfo {Type = PersonType.Writer, Name = str.Trim()})) + .Select(str => new PersonInfo { Type = PersonType.Writer, Name = str.Trim() })) { episode.AddPerson(person); }