浏览代码

Fix tvdb guest stars loop

Claus Vium 6 年之前
父节点
当前提交
f4a99beb16
共有 1 个文件被更改,包括 28 次插入8 次删除
  1. 28 8
      MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeProvider.cs

+ 28 - 8
MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeProvider.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
 using MediaBrowser.Common.Net;
@@ -193,24 +194,43 @@ namespace MediaBrowser.Providers.TV.TheTVDB
                 });
             }
 
-            foreach (var person in episode.GuestStars)
+            // GuestStars is a weird list of names and roles
+            // Example:
+            // 1: Some Actor (Role1
+            // 2: Role2
+            // 3: Role3)
+            // 4: Another Actor (Role1
+            // ...
+            for (var i = 0; i < episode.GuestStars.Length; ++i)
             {
-                var index = person.IndexOf('(');
-                string role = null;
-                var name = person;
+                var currentActor = episode.GuestStars[i];
+                var roleStartIndex = currentActor.IndexOf('(');
 
-                if (index != -1)
+                var roles = new List<string> {currentActor.Substring(roleStartIndex + 1)};
+                var name = currentActor.Substring(0, roleStartIndex).Trim();
+
+                // Fetch all roles
+                for (var j = i + 1; j < episode.GuestStars.Length; ++j)
                 {
-                    role = person.Substring(index + 1).Trim().TrimEnd(')');
+                    var currentRole = episode.GuestStars[j];
+                    var roleEndIndex = currentRole.IndexOf(')');
+
+                    if (roleEndIndex != -1)
+                    {
+                        roles.Add(currentRole.TrimEnd(')'));
+                        // Update the outer index (keep in mind it adds 1 after the iteration)
+                        i = j;
+                        break;
+                    }
 
-                    name = person.Substring(0, index).Trim();
+                    roles.Add(currentRole);
                 }
 
                 result.AddPerson(new PersonInfo
                 {
                     Type = PersonType.GuestStar,
                     Name = name,
-                    Role = role
+                    Role = string.Join(", ", roles)
                 });
             }